我之前做工程的时候,遇到一个这样的问题,有两台不同的设备,他们之间通过某种通讯协议去通讯,然后第一台设备D0到D3这4个寄存器的数据传送给第二台设备的D10到D13。 后面以为客户需求的原因,需要传输12个数据,需要我们去改动。
怎么办呢?一开始想的是去更改硬件,更换通讯的方式,但是这样的话花的时间成本还有硬件成本就比较高了。后面和客户沟通了一下,了解到他们对数据通讯的速度不做要求,就算间隔个几十秒的时间也没问题。 得知这个信息后,稍微一想,这个问题也太好解决了,通过修改一下程序就可以。 已知一个条件(通讯发送完成标志位位M0,就是每次发送完信息,M0就会导通一个扫描周期)方法如下: 在主plc里面,条件是M0的上升沿,定义D0进行不断加1 我们可以写一段一下的程序
当D0等于0时,就把D101到D103这3个寄存器发送到D1到D3里面去 当D0等于1时,就把D111到D113这3个寄存器发送到D1到D3里面去 当D0等于2时,就把D121到D123这3个寄存器发送到D1到D3里面去 当D0等于3时,就把D131到D133这3个寄存器发送到D1到D3里面去 当D0等于4时,把D0清空,重新执行加1. 这样的话就通过不同通讯周期,发送了不同的数据,通讯的时间一般都是很短的,你就是发送几十次的时间还不到1秒,所以不用担心延迟太久。发送的数据就加多了。 然后,我们需要在从站plc这边对这些数据进行解读。程序如下
通过如上程序 当D0等于0时,就把D1到D3这3个寄存器发送到D101到D103里面去 当D0等于1时,就把D1到D3这3个寄存器发送到D111到D113里面去 当D0等于2时,就把D1到D3这3个寄存器发送到D121到D123里面去 当D0等于3时,就把D1到D3这3个寄存器发送到D131到D133里面去 这样的话,就相对于把主plc的数据做了如下传输: 假如你想传输更多的数据,可以用同样的方法 |
|