S7-1200与S7-1200/S7-1500不同项目下UDP通信

2023-04-07 20:30   223   0  

S7-1200 与 S7-1200/S7-1500 不同项目下 UDP 通信


S7-1200 与 S7-1200 之间的以太网通信可以通过 UDP 协议来实现。本列中使用TSEND_C,TRCV_C指令建立双方的UDP通讯。TSEND_C,TRCV_C指令在两台PLC间必须成对存在。




此外S7-1200 与 S7-1500 在不同项目下UDP通信也可以参考本文档。




一、硬件及软件环境


硬件:

① 两台 S7-1200 CPU V4.4
② PC(带以太网卡)
③ TP电缆(以太网电缆)


软件:
STEP7 V16


二、PLC_1 CPU配置


1. 通讯关系


d6e22032-9033-11ed-bfe3-dac502259ad0.png


图1. 连接关系


2. 组态CPU的硬件配置


1. 打开 STEP7 v16 软件并新建项目

在 STEP7 v16的 “Portal 视图” 中创建一个新项目。


2. 添加硬件并命名PLC

在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的S7-1200 CPU添加到机架上,命名为PLC_1。


d6ff3640-9033-11ed-bfe3-dac502259ad0.png


图2. 添加CPU


3. 组态系统时钟

在CPU 属性中定义的时钟位, 在 “项目树” > “PLC_1” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “常规”>“系统和时钟存储器” 下,勾选“启用系统存储器字节”及“启用时钟存储器字节”。


d71d43c4-9033-11ed-bfe3-dac502259ad0.png


图3. 系统位与时钟位


4. 组态PROFINET通讯接口

在CPU的属性窗口中,“属性” > “常规”>“PROFINET接口[X1]”>“以太网地址”下,点击添加新子网,分配PLC_1 CPU IP地址:192.168.0.2,子网掩码:255.255.255.0。


d73e4600-9033-11ed-bfe3-dac502259ad0.png


图4. 组态PROFINET接口


5. 编译CPU的硬件组态并下载 。

在设备视图下,“编辑”菜单 > “编译”。


在设备视图下,“在线”菜单 > “下载到设备”。


3. 建立通讯用DB


在项目树下添加新块,分别命名为PLC1_Rcv,PLC1_Send。


在 DB 块中建立用于接收及发的数据数组(本例中建立100个byte)。


建立完成 DB 后,右键点击 DB 块,在打开的快捷菜单中打开 DB 的属性,去除 DB 的“优化的块访问属性”,见图6。


d75adb6c-9033-11ed-bfe3-dac502259ad0.png


图5. 建立通讯用DB块


d772ff30-9033-11ed-bfe3-dac502259ad0.png


图6. 去除DB块的优化属性


4. 配置 TSEND_C 指令


从指令表(图7)加入指令块 TSEND_C 到主程序中。


d78424b8-9033-11ed-bfe3-dac502259ad0.png


图7. 加入 TSEND_C功能块


点击指令块上的开始组态按钮,打开“连接参数”组态窗口。


d7a07a8c-9033-11ed-bfe3-dac502259ad0.png


图8. 组态连接参数


图8中的参数:


端点:连接伙伴未在同一项目中,此处选择未指定。


连接类型:UDP,此处使用UDP通讯。


连接ID:不能和CPU中的其它通讯ID冲突 。


连接数据:此处新建连接。


端口:本例中双边通讯端口定为2000。


配置TSEND_C指令管脚


d7bf13ac-9033-11ed-bfe3-dac502259ad0.png


图9. TSEND_C功能块


参数说明:


输入接口参数:


REQ:此处使用时钟脉冲信号,上升沿执行发送作业。


LEN:发送数据长度,此值必须小于或者等于DATA中指定的发送区长度,单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。示例中发送10个Byte到接收区。


DATA:指向发送数据区的指针。p#db3.dbx0.0 byte 20:起始地址为db3.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB3块中的建立的数据长度。


输出接口参数:


DONE:发送作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图30。


ERROR:当功能块出现错误时为1。


STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图31。


5. 配置 TRCV_C 指令


从指令表(图10)加入指令块 TRCV_C 到主程序中


d7dd1712-9033-11ed-bfe3-dac502259ad0.png


图10. 加入 TRCV_C 功能块


点击指令块上的开始组态按钮,打开“连接参数”组态窗口,并选择图8中组态好的参数块。


d7fd1364-9033-11ed-bfe3-dac502259ad0.png


图11. 组态连接参数


配置TRCV_C指令管脚


d8227a28-9033-11ed-bfe3-dac502259ad0.png


图12. TRCV_C 功能块


参数说明:


输入接口参数:


EN_R:启用接收功能 ,此处设置为1,一直打开接收。


LEN:接收数据长度,必须和通讯伙伴的发送长度设置一致。单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。


DATA:指向接收数据区的指针。p#db4.dbx0.0 byte 20:起始地址为db4.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB4块中的建立的数据长度。


输出接口参数:


DONE:接收作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图32。


RCVD_LEN:接收到的字节数。


ERROR:当功能块出现错误时为1。


STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图33。


6. 检查通讯DB块


在“程序块”-“系统块”-“程序资源”下,双击打开DB块“PLC_1_Send_DB”。


d83b1e48-9033-11ed-bfe3-dac502259ad0.png


图13. 检查通讯连接DB


红色框内填写通讯伙伴的IP(此处为PLC_2的IP地址)和端口


三、PLC_2 CPU配置


1. 连接关系


d8632e6a-9033-11ed-bfe3-dac502259ad0.png


图14. 连接关系


2. 组态CPU的硬件配置


1. 打开 STEP7 v16 软件并新建项目

在 STEP7 v16的 “Portal 视图” 中创建一个新项目。


2. 添加硬件并命名PLC

在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的S7-1200 CPU添加到机架上,命名为PLC_2。


d86e9d86-9033-11ed-bfe3-dac502259ad0.png


图15. 添加CPU


3. 组态系统时钟

在CPU 属性中定义的时钟位, 在 “项目树” > “PLC_2” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “常规”>“系统和时钟存储器” 下,勾选“启用系统存储器字节”及“启用时钟存储器字节”。


d71d43c4-9033-11ed-bfe3-dac502259ad0.png


图16. 系统位与时钟位


4. 组态PROFINET通讯接口

在CPU的属性窗口中,“属性” > “常规”>“PROFINET接口[X1]”>“以太网地址”下,点击添加新子网,分配PLC_2 CPU IP地址:192.168.0.3,子网掩码:255.255.255.0。


d8983fba-9033-11ed-bfe3-dac502259ad0.png


图17. 组态PROFINET接口


5. 编译CPU的硬件组态并下载 。

在设备视图下,“编辑”菜单 > “编译”。


在设备视图下,“在线”菜单 > “下载到设备”。


3. 建立通讯用DB


在项目树下添加新块,分别命名为SeverRcv,SeverSend。


在 DB 块中建立用于接收及发的数据数组(本例中建立100个byte)。


建立完成 DB 后,右键点击 DB 块,在打开的快捷菜单中打开 DB 的属性,去除 DB 的“优化的块访问属性”,见图19。


d8a74a32-9033-11ed-bfe3-dac502259ad0.png


图18. 建立通讯用DB块


d8bfb5cc-9033-11ed-bfe3-dac502259ad0.png


图19. 去除DB块的优化属性


4. 配置 TSEND_C 指令


从指令表(图20)加入指令块 TSEND_C 到主程序中。


d78424b8-9033-11ed-bfe3-dac502259ad0.png


图20. 加入 TSEND_C功能块


点击指令块上的开始组态按钮,打开“连接参数”组态窗口。


d8e4c4de-9033-11ed-bfe3-dac502259ad0.png


图21. 组态连接参数


图21中的参数:


端点:连接伙伴未在同一项目中,此处选择未指定。


地址:在伙伴侧写入服务器的通讯地址。


连接类型:UDP,此处使用UDP通讯。


连接ID:不能和CPU中的其它通讯ID冲突 。


连接数据:此处新建连接。


主动建立连接:选择主动建立连接的为客户端,另外一侧为服务器,本例中伙伴CPU为服务器,本地CPU主动建立连接。


端口:本例中双边通讯端口定为2000。


配置TSEND_C指令管脚


d90cbce6-9033-11ed-bfe3-dac502259ad0.png


图22. TSEND_C功能块


参数说明:


输入接口参数:


REQ:此处使用时钟脉冲信号,上升沿执行发送作业。


LEN:发送数据长度,此值必须小于或者等于DATA中指定的发送区长度,单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。示例中发送10个Byte到接收区。


DATA:指向发送数据区的指针。p#db3.dbx0.0 byte 20:起始地址为db3.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB3块中的建立的数据长度。


输出接口参数:


DONE:发送作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图30。


ERROR:当功能块出现错误时为1。


STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图31。


5. 配置 TRCV_C 指令


从指令表(图23)加入指令块 TRCV_C 到主程序中。


d7dd1712-9033-11ed-bfe3-dac502259ad0.png


图23. 加入 TRCV_C 功能块


点击指令块上的开始组态按钮,打开“连接参数”组态窗口,并选择图21中组态好的参数块。


d9329cf4-9033-11ed-bfe3-dac502259ad0.png


图24. 组态连接参数


配置TRCV_C指令管脚


d95a19dc-9033-11ed-bfe3-dac502259ad0.png


图25. TRCV_C 功能块


参数说明:


输入接口参数:


EN_R:启用接收功能 ,此处设置为1,一直打开接收。


LEN:接收数据长度,必须和通讯伙伴的发送长度设置一致。单位:字节(此参数默认为隐藏参数,可以点击功能块底部箭头显示)。


DATA:指向接收数据区的指针。p#db4.dbx0.0 byte 20:起始地址为db4.dbx0.0,长度为20个byte。此处指向的地址及长度必须小于或者等于DB4块中的建立的数据长度。


输出接口参数:


DONE:接收作业成功完成时,会显示一个循环周期的1。抓取DONE位状态程序见诊断程序中的图32。


RCVD_LEN:接收到的字节数。


ERROR:当功能块出现错误时为1。


STATUS:功能块的运行状态。错误状态的抓取程序见诊断程序中的图33。


6. 检查通讯DB块


在“程序块”-“系统块”-“程序资源”下,双击打开DB块“PLC_2_Send_DB”。


d96d8e7c-9033-11ed-bfe3-dac502259ad0.png


图26. 检查通讯连接DB


红色框内填写通讯伙伴的IP(此处为PLC_1的IP地址)和端口。


四、通讯诊断


1. 通讯数据查看


d99e1114-9033-11ed-bfe3-dac502259ad0.png


图27. 通讯数据


2. 连接诊断


将 1200CPU 转至在线状态,打开“网络视图”,可以在“连接”选项卡中看到连接状态。


d9b94bbe-9033-11ed-bfe3-dac502259ad0.png


图28. 连接状态


将鼠标选中连接,在巡视窗口中,可以检查连接的具体状态。


d9ceb166-9033-11ed-bfe3-dac502259ad0.png


图29. 连接详细状态


3. 利用功能块诊断通讯状态


d9e5f9de-9033-11ed-bfe3-dac502259ad0.png


图30. 检查已发送次数


d9f577e2-9033-11ed-bfe3-dac502259ad0.png


图31. 抓取发送错误代码


da06d7bc-9033-11ed-bfe3-dac502259ad0.png


图32. 抓取接收次数及最后一次的接收长度


da17bde8-9033-11ed-bfe3-dac502259ad0.png


图33. 抓取接收错误代码




登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。