基于Ethernet网络的双向S7通信仿真
2012-03-27刘柏松李丙林
刘柏松, 刘 烨, 李丙林, 尤 文
(1.长春天然气有限责任公司,吉林长春 130033;2.长春工业大学电气与电子工程学院,吉林长春 130012)
0 引 言
数据通信协议可以分为面向连接的协议和无连接的协议,前者在进行数据交换之前,必须与通信伙伴建立连接。面向连接的协议具有较高的安全性[1-3]。
连接是指两个通信伙伴之间为了执行通信服务建立的逻辑链路,而不是指两个站之间用物理媒体(例如电缆)实现的连接。连接相当于通信伙伴之间一条虚拟的“专线”,它们随时可以用这条“专线”进行通信。一条物理线路可以建立多个连接[4]。
S7连接属于需要组态的静态连接。
基于连接的通信分为单向通信和双向通信。在双向通信中,通信双方都需要调用通信块,一方调用发送块来发送数据,另一方调用接收块来接收数据。
在双向S7通信中,使用SFB12“BSEND”可以将数据块安全地传输到通信伙伴,直到通信伙伴的接收功能SFB13“BRCV”接收完数据,数据传输才结束。只有S7-400之间才可以进行双向通信。可传输字节达64K。从S7-PLCSIM V5.4+SP3开始,用户可以使用S7-PLCSIM在一个STEP 7项目中同时仿真多CPU,并建立CPU间的通讯。S7通信可以用于工业以太网、PROFIBUS或MPI网络[5-6]。这些网络的S7通信的组态和编程方法基本相同。下面基于Ethernet网络介绍S7双向通信的组态和编程方法。
1 硬件组态
在STEP7中创建一个名为“S7_PLCSIM_SFB12SFB13”的项目,用鼠标右键点击项目的图标,用出现的快捷菜单中的命令插入一个SIMATIC 400站点,选中SIMATIC管理器左边窗口出现的站,双击右边窗口中的“硬件”图标,打开硬件组态工具HW Config,将电源模块和CPU 416-3PN/DP插入机架。在自动出现的“属性-Etherne接口”对话框的“参数”选项卡中,设置IP地址为192.168.0.1。点击“新建”按钮,生成一条名为“(1)”的以太网,编译并保存组态信息。
在“S7_PLCSIM_SFB12SFB13”项目中生成另一个SIMATIC 400站点。在HW Config中,将电源模块和CPU 416-3PN/DP插入机架。在自动出现的“属性-Etherne接口”对话框的“参数”选项卡中,设置IP地址为192.168.0.2。选中“子网”列表中的“Ethernet(1)”。编译并保存组态信息。
Ethernet网接口属性对话框如图1所示。
2 组态S7连接
组态好两个S7-400站后,打开NetPro窗口,看到连接到以太网上的两个站,选中416-3PN/DP所在的小方框,在NetPro下面的窗口出现连接表,如图2所示。
图1 Ethernet网接口属性对话框
图2 网络与连接的组态
插入新连接与连接属性对话框如图3所示。
图3 插入新连接与连接属性对话框
双击连接表的第1行,在出现的“插入新连接”对话框中(见图3左侧),系统默认的通信伙伴为同一项目的站SIMATIC 400(2)中的416-3 PN/DP,默认的连接类型为S7连接。单击“确定”按钮,确认默认的设置,出现S7连接属性对话框,在“本地连接端点”区,复选框“单向”禁止选中,因此连接是双向的,在图3的连接表中,生成了相同的“本地ID”和“伙伴ID”。复选框“建立主动的连接”是默认的设置,选中该复选框时,连接表的“激活的连接伙伴”列将显示“是”。在运行时,由本地节点建立连接。反之,显示“否”,由通信伙伴建立连接。
组态好连接后,编译并保存。组态信息被保存在系统数据中。将硬件和连接的组态信息下载到各自的CPU。
3 通信程序设计
双方的通信程序基本上相同。首先生成DB201和DB200,在数据块中生成20个字节元素的数组ARAY。然后生成OB100,分别将M0.1和M1.0预置为1。然后创建功能块FB100,在两个FB100中分别调用系统功能SFB12和SFB13。最后在主程序OB1中分别调用FB100。组态和编程完成后的SIMATIC管理器如图4所示。
图4 SIMATIC管理器
SIMATIC 400(1)的OB1程序如图5所示。
图5 SIMATIC 400(1)的OB1的程序
在硬件组态时,CPU属性对话框的“周期/时钟存储器”选项卡设置MB2为时钟存储器字节。第1秒计数器C1的值加上1,并存到地址DB201.DBW0中。
在FB100中调用SFB12,程序片段如图6所示。
图6 FB100中调用SFB12的程序片段
输入参数ID为连接的标识符,R_ID用于区分同一连接中不同的SFB调用,发送方与接收方的R_ID应相同。
SIMATIC400(2)的OB1调用FB100的程序。FB100中调用SFB13。程序片段如图7所示。
图7 FB100中调用SFB13的程序片段
SFB13将接收的数据存到DB200.DB_VAR,并MOVE到QW1中。
4 通信的仿真实验
仿真实验过程如下:
1)在SIMATIC Manager中打开S7-PLCSIM,带有实例标签“S7-PLCSIM1”的第一个被仿真CPU的对话框被打开。
2)用户从下拉框中选择被组态的接口类型作为“TCP/IP”接口。
3)在SIMATIC Manager中,选中第一个S7站的块文件夹,并装载到S7-PLCSIM1中。
4)增加输入、输出等子窗口来监视并控制程序。
5)为了仿真其它CPU,用户执行菜单命令“Simulation>New PLC”。“S7-PLCSIM2”对话框打开。
6)为了仿真第二个CPU,用户从下拉框中选择被组态的接口类型作为“TCP/IP”接口。
7)在SIMATIC Manager中,选择第二个CPU的块文件夹并装载所有块到实例“S7-PLCSIM2”中。在装载之前必须选择实例“S7-PLCSIM2”。同样,添加输入、输出等子窗口。
仿真两个S7-400CPU通讯的画面如图8所示。
图8 仿真两个S7-400CPU通讯的画面
在S7-PLCSIM1(仿真站1)中,IB1控制计数器C1每秒加上1,然后发送计数值到S7-PLCSIM2(仿真站2)的QW1中[7-8]。如要仿真其它CPU,则重复4)~7)步。
5 结 语
S7通信主要用于西门子工控产品之间的通信,例如,S7-300/400CPU之间的主-主通信、CPU与人机界面和组态软件WinCC之间的通信。文中通过PLCSIM仿真两个S7-400PLC之间基于TCP/IP的S7通信,描述了实现S7通信的组态和编程方法。对于两个以上的PLC之间的通信仿真,PLCSIM同样支持。S7通信可以用于工业以太网、PROFIBUS或MPI网络。这些网络的S7通信的组态和编程方法基本相同。PLCSIM同样支持S7-400基于MPI的S7通讯以及S7-400基于DP的S7通讯的仿真。
[1] 康军,戴冠中.工业以太网远程监控系统设计[J].计算机工程与设计,2005,26(6):1633-1638.
[2] 曹怀虎,余镇危,王磊,等.以太网DCS中基于MODBUS/TCP协议通信的设计与实现[J].计算机工程与设计,2004,25(2):314-317.
[3] 马光兵,张维勇,胡敏.基于TCP/IP网络中多PLC通信的设计和实现[J].合肥工业大学学报:自然科学版,2003,26(2):218-222.
[4] 胡立坤,王庆超.基于以太网通信过程的实时改进方法研究[J].计算机工程与设计,2006,27(9):1516-1520.
[5] 廖常初.S7-300/400PLC应用教程[M].北京:中国机械工业出版社,2008.
[6] 刘楷,周海.深入浅出西门子S7-300PLC[M].北京:北京航空航天大学出版社,2004.
[7] 李丙林,宋殿斌,刘克平.PLC和触摸屏在耐压试验监控系统中的应用[J].长春工业大学学报:自然科学版,2011,32(4):394-398.
[8] 唐重和,刘克平,金晶,等.DCS控制系统在分子蒸馏生产工艺中的应用[J].长春工业大学学报:自然科学版,2012,33(2):130-134.