|
S7-1200 CPU 与S7-300 CP UDP通信 S7-1200 与 S7-300 CP 之间的以太网通信可以通过 UDP 协议来实现,使用的通信指令是在S7-1200 CPU 侧调用 T-block ( TCON, TDISCON, TUSEND, TURCV) 指令,在 S7-300 CPU 侧调用 AG-SEND, AG-RECV 指令来实现。 硬件和软件需求及所完成的通信任务所需条件:
① S7-1200/S7-300 CP343-1设备
② STEP7 V11
软件:
STEP7 V11 or Higher
所完成的通信任务:
① S7-1200 CPU 将通讯数据区 DB4 块中的 10 个字节的数据发送到 S7-300 CPU 的接收数据区 DB4 块中。
② S7-300 CPU 将通讯数据区 DB10 块中的 10 个字节的数据发送到 S7-1200 CPU 的接收数据区 DB10 块中。 S7-1200 侧通信的编程,连接参数及通信参数的配置1. 使用 STEP7 V11 软件新建一个项目并完成硬件配置
在 STEP7 V11 的 “Portal 视图” 中选择 “创建新项目” 创建一个新项目。 2. 添加硬件并命名PLC
然后进入 “项目视图”,在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的 S7-1200 CPU 添加到机架上,命名为 1200-AC,如图1所示。 图1. 添加新设备 为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:
在 “项目树” > “1200-AC” > “设备组态” 中,选中 CPU ,然后在下面的属性窗口中,“属性” > “系统和时钟存储器” 下,将系统位定义在 MB1,时钟位定义在 MB0,如图2所示。
时钟位我们主要使用 M0.3,它是以 2Hz 的频率在 0 和 1 之间切换的一个位,可以使用它去自动激活发送任务。 图2. 系统位与时钟位 3. 为 PROFINET 通信口分配以太网地址在 “设备视图”中点击 CPU 上代表 PROFINET 通信口的绿色小方块,在下方会出现 PROFINET 接口的属性,在 “以太网地址” 下分配 IP 地址为 192.168.0.123 ,子网掩码为255.255.255.0,如图3所示。 图3. 分配IP 地址 4.在 S7-1200 中调用并配置“TCON”、“TUSEND”、“TURCV” 通信指令① 在 S7-1200 CPU 中调用发送通信指令,进入 “项目树” > “ 1200-AC” > “程序块” > “OB1” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TCON” 指令,创建连接,如图4所示。 图4. 调用 TCON 通信指令 ② 定义 S7-1200 的 “TCON”连接参数 S7-1200 的 “TCON”指令的连接参数需要在指令下方的属性窗口“属性”> “组态”>“连接参数中”中设置,如图5所示。 图5. 定义 TCON 连接参数 连接参数说明: 端点 | | | | | :连接的地址 ID 号,这个 ID 号在后面的编程里会用到; | | | | | | |
③创建并定义 S7-1200 的发送数据区 DB4 块
通过“项目树”>“1200-AC”>“程序块”>“添加新块”,选择“数据块” 创建 DB4 块,选择“标准-与S7-300/400 兼容”,点击“确定”键,定义发送数据区为 9001 个字节的数组,如图6所示,结果如图7所示。 图6. 创建发送数据区 DB 块 图7. 定义发送数据区为字节类型的数组 9001 字节 ④ 定义 UDP 连接参数数据块 通过“项目树”>“1200-AC”>“程序块”>“添加新块”,选择“数据块” 创建 DB 块,然后在右侧“类型”中选择“TADDR_Param”,如图8所示。 图8. 创建 UDP 连接参数数据块 创建完 DB 块后,可以在 DB 块内,设置通讯伙伴的IP地址与端口号(如对方 300 CPU 的 IP:192.168.0.22,端口号:2001),如图9所示。 图9. UDP 连接详细参数 ⑤调用 “TUSEND” 在 OB1 内调用 发送 10 个字节数据到 300 CPU 中 进入 “项目树” > “1200-AC” > “程序块” > “OB1 ” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TUSEND” 指令,配置接口参数,如图10所示。 图10. 定义 TUSEND 接口参数 参数说明: 输入接口参数: | | // 使用 2Hz 的时钟脉冲,上升沿激活发送任务; | | | | | | | | | // 发送数据区的数据,使用指针寻址时,DB 块要选用绝对寻址; | | | // UDP 通讯伙伴的连接参数,包括对方 IP 地址及端口; |
输出接口参数: DONE | | | | | // 该位为 1,代表任务未完成,不能激活新任务; | | | | | | |
⑥创建并定义 S7-1200 的接收数据区 DB10 块。
通过“项目树”>“1200-AC”>“程序块”>“添加新块”,选择“数据块” 创建 DB10 块,选择“标准-与S7-300/400 兼容”,点击“确定”键,定义接收数据区为 10 个字节的数组,如图11所示,结果如图12所示。 图11. 创建接收数据区 DB10 块 图12. 定义接收数据区为字节类型的数组 ⑦将 “TURCV” 在 OB1 内调用 进入 “项目树” > “1200-AC” > “程序块” > “OB1 ” 主程序中,从右侧窗口 “指令” > “通讯” > “开放式用户通信”下调用 “TURCV” 指令,配置接口参数,如图13所示。 图13. 调用 TURCV 指令并配置接口参数 参数说明: 输入接口参数: EN_R | | | | | // 连接号,使用的是 TCON 的连接参数中 ID号; | | | | | | | | | // UDP通讯伙伴的连接参数,包括对方IP地址及端口; |
输出接口参数: NDR | | | | | // 该位为 1,代表任务未完成,不能激活新任务; | | | | | | | | | |
配置完连接并编译存盘。 S7-300侧通信的编程,连接参数及通信参数的配置,测试结果1. 使用 STEP7 V11 软件添加新设备并命名 300+CP
然后进入 “项目视图”,在“项目树” 下双击 “添加新设备”,在对话框中选择所使用的 S7-300 CPU 添加到机架上,命名为 300+CP,如图14所示。 图14. 添加新设备 2. 使用 STEP7 V11 软件配制硬件组态进入 “300+CP”,在“Project tree” 下双击 “Device configuration”,在对话框中选择所使用的 S7-300 CP 通讯卡添加到机架上,如图15所示。 图15. 组态CP卡 为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:
在 “Project tree” > “300+CP” > “Device configuration” 中,选中 CPU ,然后在下面的属性窗口中,“Properties” > “clock memory” 下将时钟位定义为 MB0,如图16所示。 时钟位我们主要使用 M0.3,它是以2Hz 的频率在 0 和 1 之间切换的一个位,可以使用它去自动激活发送任务。 图16. 系统位与时钟位 3. 为 PROFINET 通信口分配以太网地址在 “Device View”中点击 CP 设备 上代表PROFINET 通信口的绿色小方块,在下方会出现 PROFINET 接口的属性,在 “Ethernet addresses” 下分配IP 地址为 192.168.0.22 ,子网掩码为255.255.255.0,如图17所示。 图17. 分配IP 地址 4. 创建 CPU的逻辑网络连接在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。用鼠标点中300+CP 上 CP343-1 的 PROFINET 通信口的绿色小方框,然后拖拽出一条线,到与之通信的另外一个 PLC(这里为CPU 1214C)的 PROFINET 通信口上,松开鼠标,连接就建立起来了,如图18所示。 图18. 建立两个 CPU 的逻辑连接 5. 网络组态打开 “Network View” 配置网络,选中 CPU,然后选中 “Connection” 在连接列表里建立新的连接并选择连接对象和通信协议,如图19所示。 图19. 创建新的连接并选择 UDP 协议 点击确定,配置连接伙伴的 IP 地址, 如图20所示。 图20. 详细通讯参数
配置完连接并编译存盘。 S7-300 CPU 的 UDP 通信的编程1. 软件编程
在OB1中,从“Instruction”>“Communication processor”>“Simatic NET CP”下,调用 AG_RECV、AG_SEND 通信指令。创建接收和发送数据块 DB4 和 DB10,定义成20个字节的数组。 如图21~22所示。 图21. 调用AG_RCV 图22. 调用 AG_SEND
注意:AG_SEND/AG_RECV 管用 LADDER 定义为 CP 卡硬件地址,需要转换成16进制数据使用如图23。 图23. CP 卡地址 下载硬件组态及程序并监控通信结果下载两个 CPU 中的所有硬件组态及程序,实现 两个 CPU 之间数据交换,监控结果如图24所示 图24. 在线监控通信数据交换
|