PLCSIM可以仿真两个CPU之间的S7通信、TCP通信、ISO ON TCP通信,下面逐一进行示例,因为TCP和ISO ON TCP相同,所以只示例ISO ON TCP。
第一篇:S7通信
一、同一项目里的两个CPU仿真器的S7通信
添加两个设备,CPU1-1212作为客户端,CPU2-1215作为服务器端,IP地址分别设为192.168.1.6和192.168.1.7,激活“启用时钟存储器字节”。通信目的是将CPU1212发送数据区数据传输到CPU1215接收数据区,同时1212接收数据区接收来自CPU1215发送数据区的数据。
1.1客户端CPU1212组态S7连接,如图1所示。
图1:客户端组态S7连接
1.2 客户端CPU1212添加数据通信数据块,比如s7com(DB1)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1212发送数据区,Rev数组代表CPU1212接收数据区,如图2所示。
图2:建立收发数据块
1.3 服务器CPU1215添加数据通信数据块,同样s7com(DB1)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1215发送数据区,Rev数组代表CPU1215接收数据区,与客户端一样。
1.4 客户端CPU1212编程
调用“PUT”指令将数据写入到伙伴CPU1215中,调用“GET”指令从伙伴CPU1215读取数据,如图3和4所示。
图3:PUT指令
图4:GET指令
1.5 服务器端CPU1215设置“允许来自远程对象的PUT/GET通信访问”,如图5所示。(无需编程)
图5:服务器端勾选允许远程访问
1.6 启动各自仿真器并进行下载测试,如图6所示。
图6::仿真通信测试
二、不同项目里两个CPU的S7通信仿真
还以CPU1212(客户端)和CPU1215(服务器端)为例,只是两个CPU在不同的项目里。
2.1 客户端项目CPU组态编程
与同一项目里组态编程基本一致,区别就是连接参数里通信伙伴方选择未指定,同时在“常规”属性里填写未指定伙伴方的IP地址,如图7和8所示。
图7:创建未指定连接
图8:填写伙伴IP地址
程序里还是建立数据块S7com收发数据,同时调用“TSEND”和“TRCV”指令用于发送和接收数据,与前面一样不再赘述。
2.2 服务器端项目CPU1215组态
与同一项目里一样,CPU1215建立数据S7com用于收发数据即可,无需编程,同时勾选“允许来自远程对象的PUT/GET通信访问”。
3.3 通信测试
客户端项目和服务器端项目均点击仿真按钮进行仿真,仿真CPU运行后自动下载程序。打开两个项目各自的监控表,客户端填入发送数据和服务器端填入发送数据后,各自均收到对方发送的数据,如图9所示。
图9:不同项目通信测试
提示:成功建立S7连接是PUT/GET指令数据访问成功的先决条件,可在S7连接属性里“诊断>连接信息>连接详细信息”里查看连接状态,如图10所示。
图10:查看S7连接状态
至此PLCSIM仿真CPU间S7通信就结束了。
第二篇:ISO ON TCP通信仿真
一、同一项目里两个CPU的ISO-on-TCP通信仿真
添加两个设备,CPU1-1212作为客户端,CPU2-1215作为服务器端,IP地址分别设为192.168.1.6和192.168.1.7,激活“启用时钟存储器字节”。通信目的是将CPU1212发送数据区数据传输到CPU1215接收数据区,同时1212接收数据区接收来自CPU1215发送数据区的数据。
1.1客户端CPU1212编程:
1)添加数据通信数据块,比如TCP (DB11)建立Send和Rev两个数组(Array[0..9] of int),Send数组代表CPU1212发送数据区,Rev数组代表CPU1212接收数据区。
2)在主程序OB1中调用“TCON”指令,建立ISO-on-TCP连接。单击“TCON”指令右上角“开始组态”按钮,在巡视窗口中选择“TCON”指令的“属性>组态>连接参数”,直接配置连接属性。连接类型选择“ISO-on-TCP”, “连接数据”里选择“新建”时,系统将自动创建一个连接数据块,如图11所示。
图11:客户端1212连接
“TCON”指令的说明
REQ:该参数的上升沿用于启动连接操作,成功建立连接后参数DONE将置位一个扫描周期。
ID:指向已分配连接的引用,如图1里面的“连接ID(十进制)”,此处为2。
CONNECT:指向描述通信连接指针,也就是指向我们刚才组态时自动创建的连接数据块,它包含了建立连接所需的全部设置。这个参数既可以像上面一样通过点击指令右上角“开始组态”按钮生成,也可以在数据块中组态一个结构类型为TCON_IP_v4变量来实现。
3)在主程序中调用“TSEND”指令,用于发送数据,如图12所示。
4)在主程序中调用“TRCV”指令,用于接收数据,如图13所示。
图12:客户端发送指令
图13:客户端接收指令
1.2服务器端CPU1215编程
1)和客户端一样添加数据通信数据块,比如TCP (DB11)建立Send和Rev两个数组(Array[0..9] of INT),Send数组代表CPU1215的发送数据区,Rev数组代表CPU1215的接收数据区。
2)在主程序OB1中调用“TCON”指令,建立TCP连接。同样是单击“TCON”指令右上角“开始组态”按钮进行组态,连接数据选择前面客户端CPU已组态好的即可,如图14所示.
图14:服务器端1215配置
3)同样在主程序中调用”TSEND”和“TRCV”指令,用于发送和接收数据,与前面客户端程序相同,不再赘述。
1.3 通信测试
对本项目中2个CPU均启动仿真,启动各自仿真CPU运行并下载程序。每个CPU都添加监控表,分别触发各自TCON连接("TCP".Ctl[0]),同时在1212CPU的Send区和1215CPU的Send区填入相关数据,在1212CPU的Rev区和1215CPU的Rev区会接收到对方发来的数据,如图15所示。
图15:ISO ON TCP通信仿真测试(同一项目)
二、不同项目里两个CPU的TCP通信仿真
还以CPU1212(客户端)和CPU1215(服务器端)为例,只是两个CPU在不同的项目里。
2.1 客户端项目CPU组态编程
与前面同一项目里组态编程基本一致,区别就是连接参数里通信伙伴方选择未指定,如图16所示。
图16:客户端 ISO ON TCP连接设置
调用“TSEND”和“TRCV”指令用于发送和接收数据,与前面一样不再赘述。
2.2 服务器端项目CPU1215组态和编程
OB里调用”TCON”指令,连接参数里“伙伴”同样选择“未指定”,因为不在同一项目。输入伙伴CPU的IP地址(192.168.1.6),另外是客户端主动连接,所以伙伴侧选上“主动建立连接”,同时新建连接数据,如图17所示。
图17:服务器1215端ISO ON TCP配置
调用“TSEND”和“TRCV”指令也与前面一样,不再赘述。
2.3 通信测试
客户端项目和服务器端项目均点击仿真按钮进行仿真,仿真CPU运行后自动下载程序。打开两个项目各自的监控表,客户端填入发送数据和服务器端填入发送数据后,各自均收到对方发送的数据,如图18所示。
图18:不同项目仿真ISO ON TCP通信测试
第三篇:TCP通信仿真
与ISO ON TCP几乎一模一样,只要把连接改为TCP即可,不再赘述了。