如果PLC与计算机为被动通信或协议通信,PLC方基本上可不用编写程序。但为了提高程序效率与性能,多数还是要编写一些准备数据及使用数据程序。有时还要执行初始化程序来进行通信口设定。如果为主动通信,PLC方必须编程。
1.被动通信
(1)数据准备程序。最好把上位机要读的数据作些归拢,集中在若干连续的字寄存器中。这样一来,当上位机读取时,一个命令即可读走。如果数据较分散,则要用多个命令多次读。这既增加通信时间,又增加上位机编程的工作量。
(2)数据使用程序。首先,为了让计算机能向PLC写数据,应使PLC处于监控工作方式(对Host Link协议)。可用PLC起动方式设定,或用计算机写PLC处于监控状态实现。此外,最好也把上位机要写的数据作些归拢,集中在若干连续的字中写。这样,上位机向下传数据一个命令就可以了。不然如果数据较分散,则要用多个命令多次写。只是要注意,数据使用后要用程序及时还原。
图7-71所示为一个“位数据”使用程序。这里触点A置位,受计算机写控制。
图7-71 数据使用程序
从图知,这个“A”与“按钮按”的作用相同。即“工作”既可由“按钮按”控制,也可由“A”控制。而紧接着程序为用“P_Off”写A,使“A”复位(复原程序)。其含义也与实际的“按钮按”总是按后及时松开一样。为了便于理解与修改,也可把所有的复原程序,集中放在主程序的最后面。如图用值0赋值给所有被写位。
写字数据比较好处理。可直接写,也可写在一个连续的数据区,然后用传送指令传送给数据的使用区。(www.xing528.com)
2.主动通信
主动通信是PLC发起的。PLC根据控制状态或采集到的数据情况,主动给上位机发送数据,等待计算机回应。当计算机接收到这数据,再按约定向PLC回复数据回应命令。PLC再对回应进行判断,以进行下一步处理。图7-72所示为PLC主动通信的一个例子程序。
从图知,当9.01ON(要进行某个控制)时,PLC向串行接口发送一组数据。注意,这里的TXD指令为微分执行,即仅发一次数据。控制字0,说明用RS-232端口发数据。第3个操作数为#4,说明发DM10、11中4个字节数据。从程序知,这4个字节的内容为“1112AAAA”。
计算机则不断的读串行接口,或设定串行接口中断工作。一旦收到此数据,经判断、确认,如按约定发向PLC的DM1写“ABCD”的通信命令。如PLC接受了这个写操作(注意,C系列机可设为Host Link模式,则不须编程,系统自行实现),从图的梯级2知,其比较结果使P_EQ(相等标志)ON,则使8.01置位,并自保持,程序进入下一步操作。且使9.01、DM1复位,为以后通信应答作准备。
如果程序再细一些,还可考虑加定时控制,一旦长时间得不到计算机的回应,便再发通信数据,或报警。还可再作别的比较,如DM1为其它某个数,则相应其它分支操作,等等。
提示:对CP、CJ系列PLC,主动通信最好用FINS协议。否则不是处于HostLink模式,还不能接受上位机通信命令。那样,要使用主动通信,则双方只好都得如同PLC之间自由协议通信一样处理。
图7-72 主动通信程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。