两台S7-1200 PLC之间的TCP通信实例
一、 TCP通信协议介绍
开放式用户通信是套接字(Socket)通信方式,包含TCP通信。TCP属于OSI参考模型的第4层(UDP也位于该层),IP位于第3层。TCP/IP通信是面向连接的,提供站点之间的可靠通信,具有回传机制,支持路由功能,可用于西门子SIMATIC系统内部及SIMATIC与PC或其他支持TCP/IP的系统通信。TCP/IP的通信需要设置本地和远程IP地址,以及与进程相关的端口号(Port Number)。TIA V16编程软件中关于开放式用户通信指令库的截图如图1所示。
图1 开放式用户通信指令库
提示:套接字Socket=(IP地址:端口号),例如(192.168.0.5:80)。
二、两台S7-1200 PLC之间的TCP通信
S7-1200 PLC与S7-1200 PLC之间的以太网通信可以通过TCP来实现,这里使用图12-14中的TSEND_C和TRCV_C指令来实现。通信方式为双边通信,即通信双方都要编写程序,一侧编写发送程序,另一侧则必须编写对应的接收程序。这里要完成的通信任务有:①将PLC_1的通信数据区DB1中100个字节的数据发送到PLC_2的接收数据区DB2中;②将PLC_2的通信数据区DB1中100个字节的数据发送到PLC_1的接收数据区DB2中。
1.硬件组态
使用STEP7 V16创建一个名为“1200_1200_TCP”的新项目,并通过“添加新设备”组态两个型号均为CPU 1214C DC/DC/DC V4.4的1200 PLC站点,分别命名为“PLC_1”和“PLC_2”。设置“PLC_1”的IP地址为192.168.0.1,“PLC_2”的IP地址为192.168.0.2,子网掩码均为255.25
5.255.0,设置方法参见12.3.2节相关内容。勾选“PLC_1”和“PLC_2”的“启用时钟存储器字节”复选框,启用时钟存储器字节MB0。后面程序要使用M0.3,它是2Hz时钟脉冲,可以用它去自动激活发送任务,设置方法参见12.3.2节相关内容。双击“项目树”中的“设备和网络”,打开“网络视图”,单击左上角的“网络”按钮,选中“PLC_1”上PROFINET接口的绿小方框,然后拖拽出一条线到“PLC_2”上的PROFINET接口,松开鼠标,连接建立完成,如图3所示。
图3 建立两个CPU的逻辑连接
2.软件程序编写
新建“PLC_1”和“PLC_2”的DB,如图4所示。“PLC_1”和“PLC_2”中的DB1、DB2均生成长度为100的Int型数组,取消DB1、DB2属性中“优化的块访问”复选框的勾选,编译DB,生成“偏移量”这一列的地址。
图4 “PLC_1”和“PLC_2”的DB
在“PLC_1”项目中打开程序块OB1,将右侧的“指令”→“通信”→“开放式用户通信”下的“TSEND_C”指令选中并拖到OB1中。单击自动出现的“调用选项”对话框的“确定”按钮,自动生成该指令的背景数据块DB3,名称为“TSEND_C_DB”。用同样的方法调用“TRCV_C”指令,自动生成它的背景数据块DB4,名称为“TRCV_C_DB”。在“项目树”的“PLC_1”→“程序块”→“系统块”→“程序资源”下,可以看到这两条指令和自动生成的它们的背景数据块。用同tcp ip协议下载
样的方法将“TSEND_C”指令和“TRCV_C”指令拖拽到“PLC_2”的OB1程序中,这里不再赘述。
OB1中选中新添加的“TSEND_C”指令,在下面巡视窗口中选择“属性”→“组态”→“连接参数”,在右侧的窗口中单击“伙伴”的“端点”选择框右侧的下拉按钮,在出现的下拉列表中选择通信伙伴为PLC_2,两台PLC图标之间出现绿连线。单击“本地”的“连接数据”选择框右侧的下拉按钮,单击出现的“<新建>”,自动生成连接描述数据块DB5,名称为“PLC_1_Send_DB”。单击“伙伴”的“连接数据”选择框右侧的下拉按钮,单击出现的“<新建>”,在“PLC_2”的“系统块”中自动生成连接描述数据块DB5,名称为“PLC_2_Receive_DB”。TSEND_C指令的连接参数配置结果如图5所示。
图5 PLC_1中TSEND_C指令的连接参数
在OB1中选中新添加的“TRCV_C”指令,在下面巡视窗口中选择“属性”→“组态”→“连接参数”,在右侧的窗口中单击“伙伴”的“端点”选择框右侧的下拉按钮,在出现的下拉列表中选择通信伙伴为PLC_2,两台PLC图标之间出现绿连线。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论