>上一次做了PLC1500与网络调试助手的模拟TCP/IP通讯,需要用到S7-PLSSIM Advanced3.0模拟程序与网络调试助手,今天换一个思路,在一个项目下,两个PLC的仿真通讯,原则上博图软件下的任意两个PLC都可以进行,无论是1200还是1500之间,对于没有实验条件或想验证程序的同学,通过模拟仿真既方便又快捷,是学习PLC的很好的方法。可以先在自己的电脑是通过模拟软件的运行效果,等有条件了到实验室再通过真实的PLC进行验证。
1、打开博图软件,添加两个任意型号的PLC,我添加的是PLC1214DC/DC/DC与PLC1511C-1PN,这两个PLC和我们实验室的型号相同,这样后期到实验室运行时就可以拿真实的PLC实验了。 默认的PLC名称是PLC_1与PLC_2,可以修改为你认为合适的名称,也可以保持原样。
2、修改项目的属性,让编译时支持仿真。 右键项目名称,点属性,打开属性对话框,选保护选项卡,选中块编译时支持仿真。
3、打开PLC_1的程序块,双击添加新块,选择函数块,名称为TCP_IP,函数块与函数的区别是一个带背景数据块,另一个不带背景数据块。
程序编写时不要把所有的程序都写在main数据块内,尽量采用结构化程序编写方式,一个功能写在一个函数块或函数内,再通过main函数块调用。这样编写的程序层次清晰,调试与修改也方便。
4、从开放式用户通讯中拖拽两个程序块,一个是TSEND_C,这个程序块的功能是创建链接与发送数据;另一个是TRCV是接受数据,不能用TRCV_C,我开始也是用的TRCV_C,结果通信失败,因为发送与接受只需要建立一次链接就行了。可以是TSNED_C与TRCV结合,或者TSEND与TRCV_C结合,只能链接一次。CONT打开为TRUE是保持连接。
5、修改PLC的IP地址,一般情况新建的PLC默认的IP地址是192.168.0.1,两个通讯的PLC的IP地址必须在一个网段上,但不能冲突。另一方面需要建立一个子网来链接两个PLC。
修改PLC_2 的IP地址为192.168.0.2、添加新子网在PN/IE_1,打开系统和时钟存储,与防护与安全中的连接机制,允许来自远程对象的……。 在PLC_1上也作类似的操作,只是不用修改IP地址。
6、再回到PLC_1的TCP_IP程序中,组态链接参数。 在连接数据处点击小箭头,选新建,自动建立一个背景数据块,完成组态,在TSEND_C数据块上CONNECT段自动填写好了建立的背景数据块。
PLC_2上也作类似操作,TSEND数据块EN_R=1,始终接受数据,ID与组态时一致。
7、每一个PLC都各自建立一个通讯的数据块TCPIP_DB,添加发送数组SEND与接受数组RCV,数据类型选array[0..7] of byte,这里是八个字节,右键数据块的属性,去掉优化,再编译时就显示偏移地址了。相应的数据块上的DATA端填写入发送与接受的数组。
发送端的REQ需要一个上升沿来发送数据,接收端的EN_R需要允许接受数据。 主程序main上,把TCP_IP程序块拖拽到主程序上
8、启动仿真,把各自的程序选择到仿真的PLC上。
9、在第一个PLC上,修改SEND数组的值,给发送端REQ一个上升沿,发送数据,观察两个数据通信块上的数据变化。修改PLC_1上的数据,点击PLC_1上的TSEND_C程序块的REQ端,修改为1,上升沿发送数据成功,再修改为0。同样的方法,修改PLC_2上的SEND发送数据,修改PLC_2上TENSD_C程序块的REQ端为1,提供一个上升沿,发送数据成功,然后再修改为0。收发数据如下图所示。
以上内容经过本人实测,如有疑问,欢迎联系本人微信:13569669430,共同探讨、共同提高。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |