- {{item.name}}
S7-200 SMART CPU与S7-300 CP卡 进行UDP通信
- 0
- 47
S7-200 SMART CPU与S7-300 CP343进行UDP通信
S7-200 SMART CPU与S7-300 CP343 通过UDP通信,需要在双方都编写通讯程序。S7-300通过网络组态创建连接并调用AG_SEND和AG_RECV指令,S7-200 SMART侧调用Open User Communication库指令(UDP_CONNECT、DISCONNECT、UDP_SEND、UDP_RECV)来实现。通信方式为双边通信,因此双方的发送和接收指令必须成对出现。
注意: S7-200 SMARTPLC V2.2 版本才开始支持UDP通信,早期版本的CPU需要升级固件到V2.2。
硬件和软件需求及所完成的通信任务
本文采用1个CPU317(6ES7 317-2EK14-0AB0)、1个CP 343-1(6GK7 343-1EX30-0XE0)、1个S7-200 SMART PLC,介绍它们之间的UDP通信。
硬件:
① S7-300 CPU(固件V3.1)和CP343(固件V2.0)
② S7-200 SMART CPU (固件V2.2)
③ PC (带以太网卡)
④ TP以太网电缆
软件:
① STEP7 V13 SP1
② STEP 7 Micro/WIN SMART V2.2
所完成的通信任务:
① S7-300 将MB1100开始的10 个字节的数据发送到 S7-200 SMART的VB数据区。
② S7-300 读取 S7-200 SMART中的VB数据区到MB1200开始的10个字节 。
S7-300侧硬件及网络组态
1. 使用TIA V13 SP1软件新建一个项目,添加硬件并命名为PLC_3,并为CP343-1分配网络和IP地址,如图1所示。
图1. 添加新设备
为编程方便,使用CPU属性中定义的时钟位,在设备视图双击CPU设置系统和时钟存储器,如图2所示。
图2. 启用时钟位
2 在S7-300中添加UDP连接,打开 "设备组态" > "网络视图" ,在窗口左上角选中"连接",类型选择"UDP", 鼠标点中CP343-1的 PROFINET通信口的绿色小方框,拖拽出一条线,然后再回到CP343-1的 PROFINET通信口的绿色小方框,双击鼠标,连接建立并高亮显示,如图3所示。
图3 建立UDP连接
配置UDP连接,如图4所示。
图4 连接配置
300侧调用并配置"TCON"、“TUSEND”、“TURCV”通信指令
1 .在PLC_3的OB1中调用“AG_SEND”通信指令,如图5 所示,AG_SEND各参数意义如表1所示。
图5 调用AG_SEND
表1 AG_SEND各参数意义
CALL AG_SEND | //调用AG_SEND | |
ACT | :=M0.3 | //使用2HZ的时钟脉冲,上升沿激活发送任务 |
ID | :=1 | //连接号,要与连接配置中一致,见图4的连接ID |
LADDR | :=W#16#100 | // CP卡硬件地址,必须填写16进制数据 |
SEND | :=P#M1100.0 BYTE 10 | // 发送数据区的数据,M区或者DB块,需要注意DB块要选用绝对寻址 |
LEN | :=10 | //发送的字节数 |
DONE | :=%M20.1 | // 任务执行完成并且没有错误,该位置1 |
ERROR | :=%M20.2 | // 该位为1,有故障发生 |
STATUS | :=%MW22 | // 有错误发生时,会显示错误信息号 |
2 在PLC_3的OB1中调用接受指令AG_RECV并配置基本参数,如图6所示,AG_RECV接口参数说明如表2所示。
图6 调用AG_RECV
表2 AG_RCV各参数意义
CALL AG_RECV | //调用AG_RECV | |
ID | :=1 | //连接号,要与连接配置中一致,见图4的连接ID |
LADDR | :=W#16#100 | // CP卡硬件地址,必须填写16进制数据 |
RECV | :=P#M1200.0 BYTE 10 | // 接受数据区的数据,M区或者DB块,需要注意DB块要选用绝对寻址 |
DONE | :=%M10.0 | //任务执行完成并且没有错误,该位置1 |
ERROR | :=%M10.1 | // 该位为1,有故障发生 |
STATUS | :=%MW12 | // 有错误发生时,会显示错误信息号 |
LEN | :=%MW14 | // 接收到的实际数据长度 |
S7-200 SMART编程
1 打开库如图7所示。
图7 开放式库指令
2 调用UDP_CONNECT如图8所示,各参数意义如图表3所示。
图8 定义UDP_CONNECT接口参数
表3 UDP_CONNECT各参数意义
UDP_CONNECT | //调用UDP_CONNECT | |
EN | =M6.0 | //使能输入 |
Req | =M6.1 | //如果 Req = TRUE,CPU 启动连接操作。如果 Req = FALSE,则输出显示连接的当前状态。 |
ConnID | 15 | // CPU 使用连接 ID (ConnID) 为其它指令标识该连接。可能的 ConnID 范围为 0 到 65534。 |
LocPort | =2000 | // LocPort 是本地设备上的端口号。本地端口号范围为 1 到 49151。 |
DONE | =M0.0 | // 当连接操作完成且没有错误时,指令置位 Done 输出。 |
BUSY | =M0.1 | // 当连接操作正在进行时,指令置位 Busy 输出。 |
ERROR | =M0.2 | // 当连接操作完成但发生错误时,指令置位 Error 输出 |
STATUS | =MB1 | // 如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。 |
4 分配库存储区如图9所示。
图9 分配库存储区
注意:为保证指令库可以正常工作,分配库存储区的时候,一定不能与程序中使用的其他 V 区地址重叠!!
3 调用UDP_SEND如图10所示,各参数的意义如表4所示。
图10 定义UDP_SEND接口参数
表4 UDP_SEND各参数意义
CALL UDP_SEND | //调用UDP_SEND | |
EN | =M6.2 | //使能输入 |
Req | =SM0.5 | //如果 Req = TRUE,CPU 启动发送操作。如果 Req = FALSE,则输出显示发送操作的当前状态。 |
ConnID | 15 | //连接 ID (ConnID) 是此发送操作所用连接的编号(连接过程中通过 UDP_CONNECT 定义)。 |
DataLen | 10 | //DataLen 是要发送的字节数(1 到 1024)。 |
DataPtr | =&VB1000 | //DataPtr 是指向待发送数据的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针(例如,&VB100)。 |
IPaddr1 | 192 | //IPaddr1 是 IP 地址的最高有效字节 |
IPaddr2 | 168 | //IPaddr2 是 IP 地址的次高有效字节 |
IPaddr3 | 0 | //IPaddr3 是 IP 地址的次低有效字节。 |
IPaddr4 | 103 | //IPaddr4 是 IP 地址的最低有效字节。 |
RemPort | 2000 | //RemPort 是远程设备上的端口号。远程端口号范围为 1 到 49151。 |
Done | =M2.0 | // 当连接操作完成且没有错误时,指令置位 Done 输出。 |
Busy | =M2.1 | // 当连接操作正在进行时,指令置位 Busy 输出。 |
Error | =M2.2 | // 当连接操作完成但发生错误时,指令置位 Error 输出。 |
Status | =MB3 | // 如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。 |
4 调用UDP_RCV如图11所示,各参数的意义如表5所示。
图11 定义UDP_RCV接口参数
表5 UDP_SEND各参数意义
CALL UDP_RECV | //调用UDP_RECV | |
EN | =M6.4 | //使能输入 |
ConnID | 15 | //CPU 将连接 ID (ConnID) 用于此接收操作(连接过程中定义)。 |
MaxLen | 10 | // MaxLen 是要接收的最大字节数(例如,DataPt 中缓冲区的大小(1 到 1024))。 |
DataPtr | =&VB2000 | // DataPtr 是指向接收数据存储位置的指针。这是指向 I、Q、M 或 V 存储器的 S7-200 SMART 指针(例如,&VB100)。 |
Done | =M10.0 | //当接收操作完成且没有错误时,指令置位 Done 输出。当指令置位 Done 输出时,Length 输出有效。 |
Busy | =M10.1 | // 当接收操作正在进行时,指令置位 Busy 输出。 |
Error | =M10.2 | // 当接收操作完成但发生错误时,指令置位 Error 输出 |
Status | =MB11 | // 如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。 |
Length | =MW12 | //Length 是实际接收的字节数。 |
IPaddr1 | =MB14 | //IPaddr1 是 IP 地址的最高有效字节 |
IPaddr2 | =MB15 | //IPaddr2是 IP 地址的次高有效字节 |
IPaddr3 | =MB16 | //IPaddr3是 IP 地址的次低有效字节。 |
IPaddr4 | =MB17 | //IPaddr4 是 IP 地址的最低有效字节。 |
RemPort | =MW18 | //RemPort 是发送消息的远程设备的端口号。 |
5 调用DISCONNECT如图12所示,各参数的意义如表6所示。
图12 定义DISCONNECT接口参数
表6 DISCONNECT各参数意义
CALL DISCONNECT | //调用DISCONNECT | |
EN | =M6.5 | //使能输入 |
Req | =M6.6 | //如果 Req = TRUE,CPU 启动断开连接操作。 |
ConnID | =15 | // CPU 使用连接 ID (ConnID) 标识要终止的连接(连接过程中定义)。 |
Done | =M30.0 | // 当断开连接操作完成且没有错误时,指令置位 Done 输出 |
Busy | =M30.1 | // 当断开连接操作正在进行时,指令置位 Busy 输出。 |
Error | =M30.2 | // 当断开连接操作完成但发生错误时,指令置位 Error 输出。 |
Status | =MB31 | // 如果指令置位 Error 输出,Status 输出会显示错误代码。如果指令置位 Busy 或 Done 输出,Status 为零(无错误)。 |
下载程序并监控通信结果
下载两个CPU中的所有硬件组态及程序如图13所示。
图13 监控表
剩余80%未阅读,请登录查看大全章节内容
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}