16
西门子代理商6AV6381-2CB07-5AV0
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块:DB2REQ :=%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块:DB3REQ :=%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监控数据