恭喜,你发布的帖子
发布于 2015-12-17 10:36:01
30楼
悄悄说一下。其实这个调度通讯的程序去分担这样的一个工作也是挺好的。
瞧
两个块,一个负责读,一个负责写。读的只要适时断开【执】触点就不会执行读工作。写的只要数据没有发生变化,内部已经可以分辨,就不会执行写的操作。但是两个块都要无条件调用。块上面的参数关键就是你自己进行分配。一旦安排好所有通讯使用的地址,就安上去就可以了。
我来说说部分参数的作用。
读里面的【下步】。正常结束的话转入下一个通讯任务。【下驱】。非正常结束的话,跳过所有本地址驱动器的余下通讯任务(你可能会读这个驱动器的很多个参数和写很多个参数的吧)。由于读是对驱动器实施的首个操作(先读后写),先看驱动器在不在状态,再作后面的打算。所以这里有个口,一旦离线可以一下跳过所有本驱动器的操作。下一个(每一个)通讯轮训周期,再对此驱动器访问一次,若通讯正常自动进入到正常的轮训。若不正常,程序没有放弃对每一个站号的重试。恰好我的机器要求不可以有任何驱动器异常。所以要是有离线,设备已经停机了,慢慢轮训就慢慢轮训吧。
写里面的【镜】。就是保存着上次通讯成功后的参数值。判断需要写的参数有没有变化,没变化过就没必要重写了。确实需要重写的话,可以手动修改一下这个镜像值,可以引发一次写操作。这里注意,只是plc单方面判断数据的变化,plc并没有读取驱动器的实际参数进行比对。
所以这个调度的通讯效率是非常的高的。所有通讯空间全部安排有有用的事情。
这两个块,不是一个成熟的程序,尚在试验阶段。块里面仍用到一些全局变量,不适合其他程序使用,除非修改这些全局变量。还有就是我的程序面向的驱动器正好所有通讯操作都是一次对32位数据的操作,就把modbus MSG块的数据数固定在2。别的程序通讯可能也要修改这个数值。
现在,我正着手做中段的事情了。
中段现在是追剪和后面三段传送,不包括吸盘。一共5个伺服一个变频需要大概20多个通讯需求。感觉有这样的一个调度的程序块,给自己省下很多事情。编程的时候尽管用,不够的时候尽管加,控制的时候尽管下手就是了。
请填写推广理由:
分享
只看
楼主