一、理论知识
1、PROFINET 通信口
S7-1200 CPU 本体上集成了一个PROFINET 通信口,支持以太网和基于TCP/IP和UDP 的通信标准。这个PROFINET物理接口是支持10/100Mb/s的RJ45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。使用这个通信口可以实现S7-1200 CPU 与编程设备的通信,与HMI触摸屏的通信,以及与其它CPU 之间的通信。
2、 支持的通信协议
S7-1200 CPU 的PROFINET 通信口支持以下通信协议及服务
1)TCP
2)ISOon TCP ( RCF 1006 )
3)UDP(V1.0不支持)
4)S7通信
3、 硬件版本 V4.1 支持的协议和最大的连接资源:
分配给每个类别的预留连接资源数为固定值;您无法更改这些值。 但可组态6个"可用*连接"以按照应用要求增加任意类别的连接数。
示例:1 个PG 具有3 个可用连接资源。根据当前使用的 PG功能,该PG 实际可能使用其可用连接资源的1、2或3。 在S7-1200 中,始终保证至少有1 个PG,但不允许超过1 个PG。
在CPU属性>常规>连接资源显示:
二、开发工具
1、博途TIA Protal V13
2、仿真器S7-PLCSIM V13
三、实现过程
S7-1200与S7-1200之间的以太网通信可以通过TCP或ISOonTCP协议来实现,使用的通信指令是在双方CPU通用T-block(TSEND_C,TRCV_C, TCON, TDISCON, TSEN,TRCV)指令来实现,通信方式为双边通信,因此通信指令必须成对出现。
1、组态&编程
(1)打开博途软件,创建新项目,命名为:2个S7-1200之间通信
(2)添加新设备,命名为PLC1,这里选择的是CPU1214C,版本V4.1
(3)CPU属性设置,启用系统存储器字节和时钟存储器字节
(4)以太网地址设置,IP地址设为:192.168.0.1
(5)新建全局数据块DB1,命名为Data,用来发送和接收数据。
(6)在数据块DB1中,新建数组send,用来发送数据到对方通信PLC,数据类型为Array[0..9]ofByte,共计10个字节;新建数组receive,用来接收对方通信PLC发送过来的数据,数据类型为Array[0..9]of Byte,共计10个字节。
(7)在全局数据块DB1点击右键,选择属性
将“优化的块访问”复选框的钩去掉,因为使用绝对寻址,需要禁用这个选项。
“优化的块访问”复选框的钩去掉后,点确定
(8)在PLC1上点击右键,复制并粘贴,命名为PLC2,修改IP地址:192.168.0.2
(9)点击项目根目录下的“设备和网络”,并用鼠标连线PLC1与PLC2的通信网口
连线成功后,如下图,两个PLC之间的通信组态完成。
(10)在PLC1的Main(OB1)中编程,选择通信指令中的开放式用户通信指令:TSEND_C,TRCV_C.
(11)选中TSEND_C指令,右键属性,选择组态,并设置各项参数如下:
(12)选中TRCV_C指令,右键属性,选择组态,并设置各项参数如下:
(13)TSEND_C指令,各项参数设置如下:
(14)TRCV_C指令,各项参数设置如下:
(15)在PLC2的Main(OB1)中编程,选择TSEND_C,TRCV_C指令,组态&编程和PLC1类同。
2、模拟仿真
(1)在电脑“控制面板”中,点击“设置PG/PC接口”,将应用程序访问点设置为:PLCSIMS7-1200/1500.
(2)选中在PLC1,点击“开始仿真”
(3)点击开始搜索,选中目标设备,下载。
(4)PLC2的启动仿真,程序下载和PLC1的方法完全一致。
(5)在PLC1的“监控和强制表”中添加新监控表如下,并在线监控:
(6)在PLC2的“监控和强制表”中添加新监控表如下,并在线监控:
(7)通过上面第(5)、(6)步骤,可以看到PLC1与PLC2交互的数据完成正确。
(8)在PLC1的Main(OB1)中在线监视通信指令的情况如下,由于仿真器非真正的实体PLC,不能完全代替其实际功能,故指令执行状态与实际PLC指令状态存在差异,但不影响执行结果。
----公众号abseMe:坚持原创 注重实用