网上的信息比较散,官方说明也不充分,尤其是涉及主站按需写入的部分没有见到现成案例。
以下记录完成位轮询读取,同时按需写入的程序。
初始化主站,初始化块的完成位M9.3通过上升沿触发一个M9.4,用于后面启动轮询。
第一个轮询,第一次启动由M9.4触发,后面都变为由M9.5触发。完成位是M2.1,要用M2.1来复位M9.4和M9.5
第二个轮询,用上一轮询的完成位M2.1触发,本轮完成位是M2.2。随后用M2.2复位M2.1。
后面两轮读取以此类推。现在所有读取已完成(共读取4个寄存器)。
读取完成后要判断是否需要写入。判断的标准是从站的设定值与主站的设定值是否一致,如果不一致,则通过触发M2.5来进入写入。如果一致,则触发M9.5返回第一个读取。
第一个写入,用M2.5触发。和读取一样,用完成位M2.6复位M2.5。
第二、三个写入,同上。第三个(也是最后一个)写入用M9.5作为完成位,因此它将触发第一个读取。同时用M9.5复位M2.7。
END