产品简介
IC697CPX935
IC697CPX935
产品价格:¥1
上架日期:2016-04-13 10:28:29
产地:本地
发货地:厦门
供应数量:不限
最少起订:1个
浏览量:13
资料下载:暂无资料下载
其他下载:暂无相关下载
详细说明

                                               SIEMENS西门子S7-300/400PLC与VB通信方法
      摘要:本文主要介绍了用VB与西门子S7-300/400 PLC的通信方法,并把此方法应用于复杂
    控制系统的调试以及PC机管理系统与PLC控制系统的信息交换中。
    关键词:PLC VB 通信
    中圈分类号:TP273 文献标识码:B
    Research on the Communication between SIEMENS S7-300/400 and VB
    LIU Zhendong ,LIANG Xiuman
    (College of Computer and Automation Control, Hebei Polytechnic University, Tangshan
    Hebei 063009, China)
    Key words: PLC  VB  communication
    Abstract: This paper introduces a Communication b between SIEMENS S7-300/400
    and VB, this b has been applied to the debugging complex control system and
    communication exchange between PC manager system and PLC control system.
    0引言
    西门子S7-300/400 PLC是目前我国应用最为广泛的大中型PLC,研究西门子PLC及
    其网络的通信技术有着重要意义。本文通过对贵州钢绳集团2000KN拉力机测控系统的研究,
    探讨了在Windows2000环境下,用VB开发的钢丝绳破断力试验机测控软件与CPU-314通信
    的实现问题。结果表明,通过适当的方法,可以使VB与S7-300/400 PLC进行良好的通信,
    用VB构成功能强大数据采集及控制软件。
    1软件总体设计
    通常情况下,我们一般选用WinCC作为西门子S7-300/400 PLC控制系统的监控和数
    据采集软件(HMI/SCADA)。由于WinCC内置了基于S5/S7协议的通讯系统,并提供了大量面
    向这些系统和技术的组件,从而为WinCC和这些系统的最优化通讯和良好的互操作性提供了
    保证。但是,作为一种作为一种通用组态软件,WinCC的应用领域主要是工业过程控制领域。
    而2000KN钢丝绳拉力试验机对于上位机软件的要求比较特殊:采样速率较高(20次/秒);
    依采样速率同步显示曲线和数据;试验数据和曲线要能够按照试验编号查询并且调出显示。
    很明显,WinCC的趋势曲线、过程值归档等功能不能满足2000KN拉力机的工艺要求。VB作
    为一种通用的高级编程语言,编程灵活,在开发图形曲线显示、数据库等方面有着WinCC
    不可比拟的技术和成本优势。因此,我们选用VB来开发2000KN钢丝绳破断力试验机的数据
    采集和控制软件。图1为2000KN拉力机测控软件系统及与PLC硬件连接示意图。
    2数据通信


    2.1通信软件接口

     

                                  图1 2000KN拉力机测控软件系统及与PLC硬件连接示意图
    该系统能否研究成功的关键问题在于VB和CPU-314 PLC之间的通信。S7-300/400的

    MPI(多点通信接口)用于西门子公司的控制产品之间的通信,例如安装在PC上的STEP7
    编程软件与PLC之间的通信,但是这些通信协议均未公开。如果用S7-300/400的点对点通
    信协议实现PC与PLC之间的通信,需要配置专用的通信处理器模块或带点对点通信接口的
    CPU31x-2PtP。其点对点通信协议并不通用,要化较多的时间熟悉和摸索,才能编写出PLC
    和计算机的通信程序。
    PRODAVE是用于PC与S7系列PLC之间的数据链接通信的工具软件包。PRODAVE是
    “Process Data Traffic”(过程数据交换)的缩写,通过PC/MPI适配器(PC-Adaptor)、
    MPI通信处理器(CP5611卡)等硬件设备,可以实现PC与PLC之间的数据链接。PRODAVE
    的动态链接库(DLL)提供了大量基于Windows操作系统的DLL函数,供用户解决PLC与PC
    之间的数据交换和数据处理问题。Windows环境中的西门子公司的PRODAVE工具箱有PRODAVE
    S7(完全版)和PRODAVE S7 mini(简化版)两种,PRODAVE S7(完全版)功能比较全面,可按
    位或者字节读写PLC中的输入过程映像区、输出过程映像区、位存储区、定时器、计数器、
    数据块等区域,PRODAVE S7 mini(简化版)则只能读写DB中的字和字节。
    2.2动态链接库声明
    程序中用到的PRODAVE函数主要有:
    ⑴load_tool函数用于PC机与PLC系统的初始化链接。
    ⑵unload_tool函数用于断开PC机与PLC系统的链接。
    ⑶db_read函数用于从PLC的DB块中读数据字。
    ⑷db_write函数用于向PLC的DB块中写数据字。
    首先,在模块中应该声明程序使用的用户自定义的数据类型PlcAdrType:
    Type PlcAdrType
    ADDRESS As Byte
    SEGMENTID As Byte
    SLOTNO As Byte
    PACKNO As Byte
    End Type
    在通信开始之前,首先用load_tool函数建立与上位机与PLC的链接,通信结束时
    必须用unload_tool函数断开PC与PLC的链接,否则会引起上位机死机或上位机系统的异
    常状况。VB在调用DLL函数之前,需要用Declare语句在模块中声明所要使用的DLL函数。
    声明DLL函数的主要作用是指明该函数所在的DLL库名及路径,以及该函数的参数说明,以

    便Windows能找到该函数,并能正确的执行该函数。

    Declare Function load_tool Lib "w95_s7.dll" (ByVal nr As Byte, ByVal dev As
    String, adr As PlcAdrType) As Long
    //nr是PC要激活的连接的个数(1-32个);
    //dev是用户驱动设备的名称MPI接口时为“S7ONLINE”;
    //adr是连接的地址列表;
    Declare Function unload_tool Lib "w95_s7.dll" () As Long
    //断开连接
    Declare Function db_read Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no
    As Long, Amount As Long, value As Byte) As Long
    //读取DB块号为blockno中的从地址no开始的Amount个数据字。
    //读取的数据存放于PC的变量区value中。
    Declare Function db_write Lib "w95_s7.dll" (ByVal blockno As Long, ByVal no
    As Long, Amount As Long, value As Byte) As Long
    //将PC的变量存储区value中的amount个数据字写入到PLC的数据块DB
    中从no开始的数据区。
    2.3读写函数使用的注意事项
    我们在调试过程中曾发现读入的模拟量(双字)存在突然变小的情况,在排除硬件故
    障后,发现是由于VB对于字符串的处理比较特殊而造成的错误结果。因此,在使用PRODAVE
    工具箱进行通信的程序中,要特别注意的是VB在处理字符串时对“0”是自动舍弃的,现举
    例说明如下:
    PIW292是4~20mA模拟量输入信号在PLC中的地址PIW292的数据类型是整数,经过
    数据转换存于DB1.DBD36中,DB1.DBD36的数据类型是双整数。转换的梯形图如图2所示。


    图2 模拟量转换为双整数的梯形图
    在VB中执行下列语句:
    Res = db_read(1, 36, 4, Buffer_R(0))     // Buffer_R()是字符串型数组
    Res = db_read(1, 36, 4, Buffer_R(0))执行后,DB1.DBD36中的数据被VB读入到
    Buffer_R(0)~Buffer_R(3)中,将Buffer_R(0)~Buffer_R(3)中的String 型数据变为
    Single型数据后,得到的即为PLC上的传感器的数值。将将Buffer_R(0)~Buffer_R(3)中
    的String型数据变为Single型数据的方法如下:
    Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))
    Val即为Single型的模拟量采样结果。
    假设DB1.DBD36中数值为16进制的“00003F12”,经过上述转换后,Val的值为
    “00003F12”(16进制),变为10进制为“16146”。此时实际读入的结果是正确的。但是,
    当Buffer_R()中的字符串有“0”字符时:例如DB1.DBD36中数值为16进制的“00003F02”,
    Val中的结果应该是16进制的“00003F02  ”,即10进制的“16130”。而实际读入的数值为
    10进制的“1010”,比真实的模拟量信号变小了近16倍!
    为什么会出现如此错误的结果呢?原因如下:当传感器的真实值为“00003F02”时,

    Buffer_R(0)=“00”;
    Buffer_R(1)=“00”;
    Buffer_R(2)=“3F”;
    Buffer_R(3)=“02”;
    执行Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))的语句的
    过程中,Buffer_R(3)的“02 ”中的“0”被VB自动舍弃,Val变为“003F2”(16进制),
    也就是“1010”(10进制)!这就是模拟量读入值突然变小的原因。要解决这一故障,需要
    在执行Val=CSng(Buffer_R(0)+ Buffer_R(1)+ Buffer_R(2)+ Buffer_R(3))语句前进行一
    下判断,当Buffer_R()的中的低位是“0”时,用程序补上一个“0”字符以避免错误的发
    生。
    3结束语
    运用VB开发环境编写的PLC测控程序,具有界面友好,人机交互功能方便、数据库功
    能强大灵活等优点,具有很强的通用性和实用性,而起通过调用PRODAVE S7软件包的动态
    链接库实现PC机对PLC CPU-314数据的读写操作,不但数据传输速度快,而且数据传输正
    确率高。相对与用WinCC开发人机界面有着突出的优势,但是,与WinCC相比,用VB开发
    此类软件的工作量和难度相对比较大。尽管如此,此类通信技术对于拓宽实现西门子工控产
    品的应用领域仍然具有重要意义。

     


    GE Fanuc Bit 3 412-101HIO VME Board Module PN: 82902250

    Micro Memory Inc. MM-6326 64 MB Dual-Port VME Board

    NEW MOTOROLA MVME 332XT VME SINGLE BOARD COMPUTER SBC

    Motorola MVME167-02B MVME 167-02B  IC697CPX935  Single Board VME

    Motorola MVME 147-023 MVME147-023 Single VME Board

    Motorola MVME 1603-053 MVME1603-053 6U VME Board

    MOTOROLA MVME / VME 712/M 712M TRANSITION MODULE CARD

    Motorola MVME 167-032B MVME167-032B VME Mainframe Board

    Motorola MVME712A/AM MVME-712/AM MVME Module VME

    Motorola MVME167-02B MVME 167-02B Single Board VME

    Motorola MVME332XTP MVME 332XTP VME Board

    Motorola MVME187 MVME 187 VME Module

    Motorola MVME 333S-2 MVME333-2 VME Mainframe Board

    Motorola MVME 332XT MVME332XT VME Mainframe Board

    Apollo Computer Excelan EXOS 302 Controller Board VME

    National Inst. GPIB-1014D VME Controller Card Mainframe

    Ironics IV-1620 VMEbus VME Single Board  IC697CPX935 Computer

    Ironics IV-1602 VMEbus VME Single Board Computer

    APW MaxChassis II System Enclosure VME Mainframe

    ASML 4022.471.4730 VME/CPCI DC/DC Power Supply 12V

    COGNEX VME 8200 SERIES VPM-8203x/v-6000 rev.A

    ADAPTEC EUROLOGIC CONTROLLER ELRC-3101U VME HOT SWAP

    Mizar MZ VME8115 CPU Board VME MVME

    ASML 4022.471.5027 VME Timing Control TCB Syncbus Trigg

    Grass Valley E Series D/I Codec Model 4500 VME Module

    Mizar MZ VME8210 512K Ram Board VME MVME

    XYCOM 70240-001 REV 1.1 I/O MODULE IC697CPX935  VME BOARD NEW

    Motorola MVME339 MVME-339 VME Control Board

    DAWN VME PRODUCTS Power Supply

    Motorola MVME712M MVME712/M Transition VME Module Board

    VMIC GE Fanuc VMIVME-3115 VMIVME3115 12-Bit VME Module

    KSI Odetics AITG-VME Synchronizable Timecode Generator

    Thales / Matrix MD-CPU330 Board PN: 9007-30-93 VME

    Mizar MZ 8311 VME Output to Coax Transition Module

    Precision Filter VMF08 VMF08-F0822-LP1 Octal Filter VME

    Mizar MZ 8310 CTM 8310CTM Counter / Timer VME Module

    Dab DVME-626 16-Bit Digital  IC697CPX935  Analog VME VMEbus Board

    Communication Machinery Corp. (CMC) ENP10 6U VME Board

    Apollo Computer Domain Ring Board VMEbus VME

    Znyx Networks ZX478 ZX4008AB CompactPCI Hot Swap VME

    Antares Microsystems MIL-1397 Input/Output VXI VME

    Themis TSVME-400-1A 48 Optocoupler Isolated Input VME

    National Inst. GPIB-1014 GPIB Interface VME Mainframe

在线询盘/留言
  • 免责声明:以上所展示的信息由企业自行提供,内容的真实性、准确性和合法性由发布企业负责,本网对此不承担任何保证责任。我们原则 上建议您选择本网高级会员或VIP会员。
    0571-87774297