品牌
经销商厂商性质
上海所在地
Honeywell 620-0027 *
面议Honeywell 620-0026 *
面议HONEYWELL 621-7021 3周货期
面议Honeywell 620-0022 3周货期
面议HONEYWELL 620-0023 品质低价
面议Honeywell 620-0027 *
面议Honeywell 620-0022 好价格
面议Honeywell TDC-2000 *
面议HONEYWELL 4DP7APXPM-155 *低价
面议Honeywell 82408667-001 **
面议Honeywell 621-6550 *现货
面议【Honeywell FF-SB12E04K-S2—好价格*】
面议西门子HONEYWELL 05291202 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 HONEYWELL 05291202 拉力机测控软件系统及与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块中写数据字。
首先,HONEYWELL 05291202 在模块中应该声明程序使用的用户自定义的数据类型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”是自动舍弃的,现举
例说明如下:
HONEYWELL 05291202 是4~20mA模拟量输入信号在PLC中的地址PIW292的数据类型是整数,经过
数据转换存于DB1.DBD36中,DB1.DBD36的数据类型是双整数。转换的梯形图如图2所示。
图2 HONEYWELL 05291202 模拟量转换为双整数的梯形图
在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”字符以避免错误的发
生。
Reliance Electric AutoMax 57407 4J 574074J Processo NIB
Allen Bradley 1785-L60C D 1785L60C PLC 5/60 Controlnet
Modicon AS-B882-239 ASB882239 High Speed Counter
Modicon PC-0984-385 ASM380006 Mem ASE385904 Exec Carts
Modicon AM-SA85-030 AMSA85030 Modbus MB+ Adapter NIB
Schneider Modicon 110-CPU-722-00 110CPU72200 NIB FS
Allen Bradley 1774-CI2 1774CI2 Computer Interface
Modicon AS-M84A-102 ASM84A102 CPU Processor NIB
Allen Bradley 1785-O5E 1785O5E OSI Interface NIB FS
Schneider Modicon TSXETHPC101M PC Ethway Module
Modicon AS-B239-001 ASB239001 High Speed Counter NIB