西门子PLC通过CM1243-5实现S7-1200与S7-300之间的S7通信
通过CM1243-5实现S7-1200与S7-300之间的S7通信
通过CM1243-5实现S7-1200与S7-300之间的S7通信
使用 STEP7 V12,CM1243-5 的 DP 通信接口可以做 S7 通信的客户端或服务器;S7-1200 仅支持 S7 单边通信;CM1243-5 与 S7-300 之间的 S7 通信仅需在作为客户端的一边进行组态连接和编程,而服务器端只需要准备好通信数据块即可。
以下例子描述了 CM1243-5 与 S7-300 之间的 S7 通信的两种方式:
一、CM1243-5 与 S7-300 CPU 集成 DP 接口的 S7 通信;
二、CM1243-5 与 CP342-5 之间的 S7 通信。
一、CM1243-5 与 S7-300 CPU 集成 DP 口的 S7 通信
硬件和软件需求
硬件:
① 1台 1215C + 1台 CM1243-5
② 1台 CPU315-2DP
③ DP 接头及 DP电缆
④ PC(带以太网卡)
⑤ 以太网电缆,PC adapter 编程电缆
软件:
① TIA PORTAL V12 SP1 Update2
所完成的通信任务:
CM1243-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 CPU315-2DP 的数据块 DB1 中;同时,读取 CPU315-2DP 数据块 DB2 中的10个字节存储到 1215C 的数据块 DB4 中。
① 1台 1215C + 1台 CM1243-5
② 1台 CPU315-2DP
③ DP 接头及 DP电缆
④ PC(带以太网卡)
⑤ 以太网电缆,PC adapter 编程电缆
软件:
① TIA PORTAL V12 SP1 Update2
所完成的通信任务:
CM1243-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 CPU315-2DP 的数据块 DB1 中;同时,读取 CPU315-2DP 数据块 DB2 中的10个字节存储到 1215C 的数据块 DB4 中。
CM1243-5 作为客户端
1. 使用 STEP7 V12 软件新建一个项目并完成硬件配置
在项目树“设备和网络”>“网络视图”视图下,创建两个设备的 PROFIBUS 连接。用鼠标点中 PLC1 上的 CM1243-5 DP 通信口的粉色小方框,然后拖拽出一条线到 PLC2 上的 CPU315-2DP 通信口上,松开鼠标,连接建立。
2. 组态 S7 连接
打开“网络视图”配置网络,首先点中左上角的“连接”图标,选择“S7 连接”,然后选中 PLC1 上的 CPU,鼠标右键选择“添加新连接”。如图1所示。
图1. 添加 S7 连接
然后在“创建新连接”窗口中,选择“PLC2”,并在右侧窗口中选择本地接口“CM1243-5,DP 接口”,***后再点击“添加”建立 S7 连接。如图2所示。
图2. 建立 S7 连接
“S7_连接_1”为建立的连接,选中连接,在属性的“常规”条目中可查看该 S7 连接的相关信息。如图3所示。
图3. S7 连接信息
点击“特殊连接属性”,确认 S7 连接由 PLC1 主动建立连接(即 PLC1 为客户端)。如图4所示。
图4. PLC1 作为客户端
配置完网络连接,编译保存并下载。在线后可查看通信连接状态。如图5所示。
图5. 通信连接状态
3. 软件编程
分别在 PLC1 中创建发送数据块 DB3 和接收数据块 DB4 ,在 PLC2 中创建接收数据块 DB1 和发送数据块 DB2 ,均定义为10字节的长度,并在 DB 块的“属性”中取消“优化的块访问”,编译并保存。如图6所示。
图6. DB 块属性设置
在 PLC1 的 OB1 主程序中,从“指令”>“通信”>“S7 通信”下,调用 GET、PUT 通信指令,编译保存并下载。程序调用如图7所示。
图7. 程序调用
CALL “PUT” | , %DB1 | //调用 PUT,使用背景DB块:DB1 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#100 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
DONE | :=%M2.0 | // 为1时,发送完成 |
ERROR | :=%M2.1 | // 为1时,有故障发生 |
STATUS | :=%MW4 | // 状态代码 |
ADDR_1 | :=P#DB1.DBX0.0 BYTE 10 | // 发送到通信伙伴数据区的地址 |
SD_1 | :=P#DB3.DBX0.0 BYTE 10 | // 本地发送数据区 |
CALL “GET” | , %DB2 | //调用 GET,使用背景DB块:DB2 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#100 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
NDR | :=%M2.2 | //为1时,接收到新数据 |
ERROR | :=%M2.3 | //为1时,有故障发生 |
STATUS | :=%MW6 | //状态代码 |
ADDR_1 | :=P#DB2.DBX0.0 BYTE 10 | //从通信伙伴数据区读取数据的地址 |
RD_1 | :=P#DB4.DBX0.0 BYTE 10 | //本地接收数据地址 |
4. 监控结果
通过在 S7-1200 侧编程进行 S7 通信,实现两个 CPU 之间的数据交换,监控结果如图8所示。
图8. 监控结果
二、CM1243-5 与 CP342-5 的 S7 通信
硬件和软件需求
硬件:
① 1台 1215C + 1台 CM1243-5
② 1台 CPU314C + 1台 CP342-5
③ DP 接头及 DP电缆
④ PC(带以太网卡)
⑤ 以太网电缆,PC adapter 编程电缆
软件:
① TIA PORTAL V12 SP1 Update2
所完成的通信任务:
① CM1243-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 CPU314C 的数据块 DB1 中;同时,读取 CPU314C 数据块 DB2 中的10个字节存储到 1215C 的数据块 DB4 中。
② CP342-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 1215C 的数据块 DB1 中;同时,读取 1215C 数据块 DB2 中的10个字节存储到 CPU314C 的数据块 DB4 中。
① 1台 1215C + 1台 CM1243-5
② 1台 CPU314C + 1台 CP342-5
③ DP 接头及 DP电缆
④ PC(带以太网卡)
⑤ 以太网电缆,PC adapter 编程电缆
软件:
① TIA PORTAL V12 SP1 Update2
所完成的通信任务:
① CM1243-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 CPU314C 的数据块 DB1 中;同时,读取 CPU314C 数据块 DB2 中的10个字节存储到 1215C 的数据块 DB4 中。
② CP342-5 作为客户端创建 S7 连接,将数据块 DB3 中的10个字节发送到 1215C 的数据块 DB1 中;同时,读取 1215C 数据块 DB2 中的10个字节存储到 CPU314C 的数据块 DB4 中。
① CM1243-5 作为客户端
1. 使用 STEP7 V12 软件新建一个项目并完成硬件配置
在项目树“设备和网络”>“网络视图”视图下,创建两个设备的 PROFIBUS 连接。用鼠标点中 PLC1 上的 CM1243-5 DP 通信口的粉色小方框,然后拖拽出一条线到 PLC2 上的 CP342-5 通信口上,松开鼠标,连接建立。
2. 组态 S7 连接
打开“网络视图”配置网络,首先点中左上角的“连接”图标,选择“S7 连接”,然后选中 PLC1 上的 CPU,鼠标右键选择“添加新连接”。如图9所示。
图9. 添加 S7 连接
然后在“创建新连接”窗口中,选择“PLC2”,并在右侧窗口中选择本地接口“CM1243-5,DP 接口”,***后再点击“添加”建立 S7 连接。如图10所示。
图10. 建立 S7 连接
“S7_连接_1”为建立的连接,选中连接,在属性的“常规”条目中可查看该 S7 连接的相关信息。如图11所示。
图11. S7 连接信息
点击“特殊连接属性”,确认 S7 连接由 PLC1 主动建立连接(即 PLC1 为客户端)。如图12所示。
图12. PLC1 作为客户端
配置完网络连接,编译保存并下载。在线后可查看通信连接状态。如图13所示。
图13. 通信连接状态
3. 软件编程
分别在 PLC1 中创建发送数据块 DB3 和接收数据块 DB4 ,在 PLC2 中创建接收数据块 DB1 和发送数据块 DB2 ,均定义为10字节的长度,并在 DB 块的“属性”中取消“优化的块访问”,编译并保存。如图14所示。
图14. DB 块属性设置
在 PLC1 的 OB1 主程序中,从“指令”>“通信”>“S7 通信”下,调用 GET、PUT 通信指令,编译保存并下载。程序调用如图15所示。
图15. 程序调用
CALL “PUT” | , %DB1 | //调用 PUT,使用背景DB块:DB1 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#100 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
DONE | :=%M2.0 | // 为1时,发送完成 |
ERROR | :=%M2.1 | // 为1时,有故障发生 |
STATUS | :=%MW4 | // 状态代码 |
ADDR_1 | :=P#DB1.DBX0.0 BYTE 10 | // 发送到通信伙伴数据区的地址 |
SD_1 | :=P#DB3.DBX0.0 BYTE 10 | // 本地发送数据区 |
CALL “GET” | , %DB2 | //调用 GET,使用背景DB块:DB2 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#100 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
NDR | :=%M2.2 | //为1时,接收到新数据 |
ERROR | :=%M2.3 | //为1时,有故障发生 |
STATUS | :=%MW6 | //状态代码 |
ADDR_1 | :=P#DB2.DBX0.0 BYTE 10 | //从通信伙伴数据区读取数据的地址 |
RD_1 | :=P#DB4.DBX0.0 BYTE 10 | //本地接收数据地址 |
4. 监控结果
通过在 S7-1200 侧编程进行 S7 通信,实现两个 CPU 之间的数据交换,监控结果如图16所示。
图16. 监控结果
② CP342-5 作为客户端
1. 使用 STEP7 V12 软件新建一个项目并完成硬件配置
在项目树“设备和网络”>“网络视图”视图下,创建两个设备的 PROFIBUS 连接。用鼠标点中 PLC1 上的 CM1243-5 DP 通信口的粉色小方框,然后拖拽出一条线到 PLC2 上的 CP342-5 通信口上,松开鼠标,连接建立。
2. 组态 S7 连接
打开“网络视图”配置网络,首先点中左上角的“连接”图标,选择“S7 连接”,然后选中 PLC2 上的 CPU,鼠标右键选择“添加新连接”。如图17所示。
图17. 添加 S7 连接
然后在“创建新连接”窗口中,选择“PLC1”,并在右侧窗口中选择本地接口“CP342-5_1”,***后再点击“添加”建立 S7 连接。如图18所示。
图18. 建立 S7 连接
“S7_连接_1”为建立的连接,选中连接,在属性的“常规”条目中可查看该 S7 连接的相关信息。如图19所示。
图19. S7 连接信息
点击“特殊连接属性”,确认 S7 连接由 PLC2 主动建立连接(即 PLC2 为客户端)。如图20所示。
图20. PLC2 作为客户端
配置完网络连接,编译保存并下载。在线后可查看通信连接状态。如图21所示。
图21. 通信连接状态
3. 软件编程
分别在 PLC1 中创建发送数据块 DB1 和接收数据块 DB2 ,在 PLC2 中创建接收数据块 DB3 和发送数据块 DB4 ,均定义为10字节的长度,并在 DB 块的“属性”中取消“优化的块访问”,编译并保存。如图22所示。
图22. DB 块属性设置
在 PLC2 的 OB1 主程序中,从“指令”>“通信”>“S7 通信”>“其它”下,调用 GET_S、PUT_S 通信指令,编译保存并下载。程序调用如图23所示。
图23. 程序调用
CALL “PUT” | , %DB1 | //调用 PUT,使用背景DB块:DB1 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#1 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
DONE | :=%M2.0 | // 为1时,发送完成 |
ERROR | :=%M2.1 | // 为1时,有故障发生 |
STATUS | :=%MW4 | // 状态代码 |
ADDR_1 | :=P#DB1.DBX0.0 BYTE 10 | // 发送到通信伙伴数据区的地址 |
SD_1 | :=P#DB3.DBX0.0 BYTE 10 | // 本地发送数据区 |
CALL “GET” | , %DB2 | //调用 GET,使用背景DB块:DB2 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#1 | //连接号,要与连接配置中一致,创建连接时的本地连接号 |
NDR | :=%M2.2 | //为1时,接收到新数据 |
ERROR | :=%M2.3 | //为1时,有故障发生 |
STATUS | :=%MW6 | //状态代码 |
ADDR_1 | :=P#DB2.DBX0.0 BYTE 10 | //从通信伙伴数据区读取数据的地址 |
RD_1 | :=P#DB4.DBX0.0 BYTE 10 | //本地接收数据地址 |
4. 监控结果
通过在 314C 侧编程进行 S7 通信,实现两个 CPU 之间的数据交换,监控结果如图24所示。