- {{item.name}}
S7-1200 CPU 与 S7-200 CPU S7 通信(S7-1200 作为客户端)
- 0
- 93
S7-1200 CPU 与 S7-200 CPU S7 通信(S7-1200 作为客户端)
S7-1200 CPU 与 S7-200 CPU 之间的以太网通信只能通过 S7 通信来实现,因为 S7-200 的以太网模块只支持S7 通信。当S7-1200作为客户端,S7-200作为服务器,需在客户端单边组态连接和编程,而作为服务器端的S7-200只需设置为服务器准备好通信的数据就行。
硬件和软件需求及所完成的通信任务
硬件:
① S7-1200 CPU 硬件版本V2.0或更高
② S7-200 CPU + CP243-1
③ PC (带以太网卡)
④ PC/PPI 电缆
⑤ TP以太网电缆
软件:
① STEP 7 Professional V16
② STEP 7 Micro/WIN V4.0 SP9
所完成的通信任务:
硬件/角色 | CPU1215(客户端) | 方向 | CP243-1(服务器) |
IP地址 | 192.168.0.125 | 192.168.0.101 | |
数据 | "PUT_DATA".A(DB1,2字节数组) | --> | VB100-VB101 |
"GET_DATA".A(DB4,2字节数组) | <-- | MB10-MB11 |
S7-200 Server 端的组态
1. 打开 STEP 7 Micro/WIN 软件,创建一个新项目,在“PLC”>“TYPE”选择所使用 CPU 的型号,如图1. 所示。
图1. 选择S7-200 CPU 类型
2. 选择“工具”>“以太网向导” 进入 CP243-1 的向导配置,如图2. 所示。
图2. 使用以太网向导
3. 选择CP243-1 模板的位置。
CP243-1 紧邻 CPU 安装,所以模板位置为0 ,也可以通过“读取模块”读出模板位置,如图3. 所示。
图3. 选择模板位置
4. 设置 CP243-1 模板的 IP 地址
IP 地址:192. 168. 0. 101 ,子网掩码:255. 255. 255. 0,如图4.所示。
图4. 设置网络地址
5. 设置模块所占用输出地址字节和连接数,如图5. 所示。
图5. 设置占用输出地址及网络连接数
6. 将CP243-1 定义为 Server 端,如图6. 所示。
图 6. 定义为 Server 端
注意:本例S7-200中安装的CP243-1紧邻CPU,位置为0,故TSAP地址为10.00;若CP243-1在位置为1,则TSAP地址为10.01。
7. 选择CRC校验,如图7. 所示。
图7. 选择CRC 较验
8. 为配置分配存储区
根据以态网的配置,需要一个V存储区,用户可以指定一个未用过的V存储区的起始地址,也可以点击“建议地址”按钮使用建议地址。如图8. 所示。
图8. 为配置分配存储区
9. 生成以太网用户子程序。如图9. 所示。
图9. 生成子程序
10. 调用向导中生成的子程序,并将程序下载到CPU中。如图10. 所示。
图10. 调用子程序
S7-1200 Client 端的配置编程
1. 使用 STEP7 V16软件新建一个项目并完成硬件配置,网络组态
1.1 在“项目树”>“设备组态”>“网络视图”下,按如下图片中1~4的步骤添加新连接,如图11. 所示。
图11. 添加S7连接
1.2 在弹出的“添加新连接”对话框中,按照步骤1~3,添加伙伴为未指定的S7连接,如图12.所示。
图12. 添加伙伴为未指定的S7连接
1.3 按如下图片中1~6的步骤填写S7连接参数,填写CP243-1的IP地址,如图13. 所示。
图13. 填写通信伙伴IP地址
1.4 在“地址详细信息”中设置通信伙伴的TSAP号,如图14. 所示。
图14. 定义通信双方TSAP号
注意:图14.中填写的伙伴TSAP号,应该与S7-200程序中对CP243-1以太网向导组态的本地TSAP号保持一致,如图6所示。
2. 软件编程
2.1 创建DB块用来接收/发送数据,用来和S7-200 CP243-1交换数据,如图15. 所示。
DB1数据块名为“PUT_DATA”,定义2个字节的数组,变量名称为“A”,向CP243-1发送2字节数据;
DB4数据块名为“GET_DATA”,,定义2个字节的数组,变量名称为“A”,从CP243-1读取2字节数据;
DB4中创建的S7_Comm_Status的结构体变量,用于程序中捕捉错误代码和接收指令的完成位。
注意:此处创建的DB块,可以是优化/非优化的数据块。创建的数据块为S7-1200用于发送/接收的数据区,填写在GET指令的RD_x及PUT指令的SD_x中。
图15. 创建DB块
2.2 在OB1中,从“指令”-->"通信指令"-->“S7 通信”下,调用PUT、GET通信指令,程序见图16。
图16. 程序调用功能
CALL “PUT” | %DB2 | //调用 PUT,使用背景DB块:DB2 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#0100 | //连接号,要与连接配置中一致,创建连接时的连接号 |
DONE | 可连接变量 | //bool,为1时,写完成 |
ERROR | 可连接变量 | //bool,为1时,有故障发生 |
STATUS | 可连接变量 | //word类型,状态代码 |
ADDR_1 | :=P#DB1.DBX100.0 BYTE 2 | // 此处填写发送到通信伙伴数据区的地址 表示将数据写入CP243-1的VB100-VB101 由于S7-200没有DB区,所以使用DB1对应S7-200的V区 |
SD_1 | :=“PUT_DATA”.A | // 此处填写本地发送数据地址区 表示S7-1200要将数据块名为“PUT_DATA"的数据块的变量名为”A“的变量发送给CP243-1 如果“PUT_DATA”为非优化的数据块,还可以使用P#指针填写P#DB1.DBX0.0 BYTE 2 |
CALL “GET” | %DB3 | //调用 GET,使用背景DB块:DB3 |
REQ | :=%M0.5 | //系统时钟 1秒脉冲 |
ID | :=W#16#0100 | //连接号,要与连接配置中一致,创建连接时的连接号 |
NDR | 可连接变量 | //bool,为1时,接收到新数据 |
ERROR | 可连接变量 | //bool,为1时,有故障发生 |
STATUS | 可连接变量 | //word,状态代码 |
ADDR_1 | :=P#M10.0 BYTE 2 | //此处填写从通信伙伴数据区读取数据的地址 表示从CP243-1的MB10-MB11读取数据 |
RD_1 | :=“GET_DATA”.A | //此处填写本地接收数据地址区 表示S7-1200要将从CP243-1中读取的数据存放在数据块名为“PUT_DATA"中变量名为”A“的数组中 如果“GET_DATA”为非优化的数据块,还可以使用P#指针填写P#DB4.DBX0.0 BYTE 2 |
2.3 如果通信时发现数据没有正常交换,可以增加程序段,用来捕捉判断指令块的Done是否置位过,或者捕捉判断指令块是否有错误,错误代码是什么,如图17.所示。
图17中所示为捕捉PUT指令的完成位及错误代码。
图17.捕捉错误代码及完成位
3. 监控结果
S7-1200和S7-200分别下载程序,将通信数据区域分别在监控表(S7-1200)和状态表(S7-200)中赋值及监控,监控结果如图18。
图18. S71200和S7200监控数据
剩余80%未阅读,请登录查看大全章节内容
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
{{item.nickName}}