基于VB的上位机和西门子S7—400,PLC通信系统实现
打开文本图片集
摘 要:文中介绍了在Windows环境下,VB与西门子S7-400系列 PLC的通信方法,并应用到北方重工特殊钢厂30MN快锻液压机组控制系统中,实践证明该方法通信实时性好,数据准确性高,满足30MN快锻液压机组的工艺要求。
【关键词】PLC VB 通信 以太网
1 引言
在智能控制的重型设备中,上位机的监控软件显得尤其重要。那么研究既能实现上位机和PLC的通信,又能满足设备工艺要求的开发软件有着实际而重要的意义。
2 软件总体设计
30MN快锻液压机组的锻打频次达103次/min之多,要求同步显示数据和曲线,并且这些数据和曲线要求具有记录和查询的功能。而Visual Basic(简称VB)作为一种可视化编程软件,在开发图形曲线显示、数据库等方面有着其它组态软件不可比的优势。因此,我们采用第三方软件VB来开发30MN快锻液压机组上位机监控软件,其主界面如图1所示。
3 数据通信
3.1 通信软件接口
解决西门子S7-400系列PLC与第三方应用软件VB的通信是该项目上位机软件开发成功的关键。经过调研,西门子公司发布的PRODAVE(Process Data Traffic 过程数据交换)MPI/IE软件包是专门用于S7系列PLC与上位机第三方应用软件之间数据通信的工具软件包,该软件包中集成了基于Windows操作系统的动态链接库DLL函数,且可以通过MPI适配器(PC-Adaptor)、MPI通信处理器(CP5611卡)、工业以太网卡等硬件设备实现PLC和上位机之间数据通信。如图2所示,本文通过一根网线把上位机的以太网卡,与PLC中的以太网模块CP443硬件连接组成工业以太网络,然后VB调用PRODAVE MPI/IE中函数实现S7-400 PLC与上位机的数据通信,并通过VB中的Adodc控件链接Access数据库,查询历史记录曲线并生成数据报表。
3.2 软件接口配置
在上位机中设置控制面板“PG/PC”接口,添加应用程序访问点,并指向上位机相应的以太网卡,如图3所示。需要注意的是上位机的IP地址,要与以太网模块CP443中的IP地址保持在同一个网段内,否则通信链接失败,上位机与PLC就无法进行数据交换。
3.3 动态链接库函数声明
程序中用到的PRODAVE函数主要有:
(1)LoadConnection_ex6函数用于建立PLC与上位机的初始化链接。
(2)SetActiveConnection_ex6函数用于激活PLC与上位机的链接。
(3)UnloadConnection_ex6函数用于断开PLC与上位机的链接。
(4)field_read_ex6函数用于从PLC DB块中读取连续的数据。
(5)field_write_ex6函数用于向PLC DB块中写入连续的数据。
通信开始之前首先要调用LoadConnection_ex6函数,来建立PLC与上位机的初始化链接,通信结束时要调用UnloadConnection_ex6函数来断开PLC与上位机的链接,否则会引起上位机系统的异常。
VB在调用PRODAVE中函数之前,必须用Declare语句在模块中声明所要使用的DLL函数,以指明函数所在的DLL库名和路径,以及函数的参数说明,这样Windows才能正确执行函数。程序中主要函数的声明如下:
Declare Function LoadConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer, ByVal AccessPoint As String, ByVal ConTableLen As Integer, pConTable As CON_TABLE_TYPE) As Long
//ConNr 链接号,有效值是0-63
//AccessPoint= "CP-TCPIP" 链接接入点
//ConTableLen=9 链接信号的长度
//pConTable.AdrType 连接类型,IP地址,PLC背板号,CPU槽号
Declare Function SetActiveConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer) As Long
//激活链接号为ConNr的链接
Declare Function UnloadConnection_ex6 Lib "Prodave6.dll" (ByVal ConNr As Integer) As Long
//断开链接号为ConNr的链接
Declare Function field_read_ex6 Lib "Prodave6.dll" (ByVal FieldType As Byte, ByVal blk As Integer, ByVal StartNr As Integer, ByVal Amount As Long,BufLen As Long, pBuffer As Byte, pDatLen As Long) As Long
//从PLC DB块中按数据字节读取StartNr为起始字节地址Amount字节数的数据存入pBuffer缓冲区
//FieldType = Asc("d") 数值类型为Data Byte,按数据字节读取数据
//Blk=2 数据块为DB2
//BufLen 缓冲区长度
//pDatLen缓冲区的数据字节长度的指针
Declare Function field_write_ex6 Lib "Prodave6.dll" (ByVal FieldType As Byte, ByVal blk As Integer, ByVal StartNr As Integer, ByVal Amount As Long, BufLen As Long, pBuffer As Byte) As Long
//向PLC DB块中写入数据
3.3 Adodc控件连接Access数据库
采集数据的最终目的不仅要把需要显示的数据实时显示在人机界面上,还要把数据记录到数据库中,以备日后查询。VB中的Adodc控件是一个数据库绑定控件,可以用该控件连接Access数据库,对数据库中的数据表进行编辑,如对数据表中的记录进行查询、增加、修改和删除等。查询数据表中数据的部分程序如下:
如图4所示,查询到数据以曲线的形式直观的表示出来,以方便30MN快锻液压机组操作人员查询各个比例阀的开关过程,以及阀之间的配合关系等。如果操作人员要对数据进行分析,也可以以数据报表的形式保存 。
4 结束语
实践证明用VB调用PRODAVE动态链接库集成的函数进行上位机监控软件的开发,并通过工业以太网实现S7-400 PLC与上位机的通信,通信实时性好,数据准确性高,且满足30MN快锻液压机组的工艺要求。
参考文献
[1]Siemens PRODAVE MPI/IE V6.0 Manual (A5E00388168-01).Edition 05/2005.
[2]崔坚.西门子S7可编程序控制器—STEP7编程指南[M].北京:机械工业出版社,2007:257-270.
[3]明日科技,高春艳,刘彬彬,王斌.Visual Basic开发技术大全[M].北京:人民邮电出版社,2007:413-474.
[4]刘振东 梁秀满.西门子S7-300/400 PLC与VB的通信方法[J].微计算机信息,2006(04S):55-56.
[5]郭春春,贺贵明,陈明榜,刘发慧.基于VB6.0的西门子PLC与PC的通信实现微机监控功能[J].可编程控制器与工厂自动化:plc Fa,2004:71-73.
作者单位
1.西安兰石重工机械有限公司 陕西省西安市 710065
2.长安大学 陕西省西安市 710064