恭喜,你发布的帖子
发布于 2022-10-29 13:04:22
10楼
给一个思路吧,程序自己实现。
1、假设条件:
Q点的分布是无规律的,但可以通过中间变量,让中间变量的排列变得有规律。
中间变量与实际Q点就是一一对应关系,简单COPY就是了。
M0.4,M0.3,M0.2,M0.1,M0.0
分别对应5个Q点
2、实现任意操作某一Q点,5个Q点,相同工作做5次,也可以制成子程序调用5次。
3、设
VB0为Q点序号,0对应M0.0,1对应M0.1,以此类推
M2.0表示该Q点的状态,需要复制到指定M0.x上
4、定位M0.x点
用到一个指令DECO,解码指令
设VB=2,即操作第三个Q点,对应为M0.2
DECO VB0,VW2 // 执行后,VB3=0000,0100
VW分VB2和VB3两个字节,因为只有5个Q点,只用到VB3
执行DECO后,V3.2=1,其余位为0:0000,0100
5、复制M2.0状态到M0.2上
分两种情况:
如果M2.0为1,则执行OR或操作
OR VB3, MB0 // 执行后,M0.2=1,其余位不变
如果M2.0为0,则执行AND与操作
INVB VB3 // 执行后VB3=1111,1011
ANDB VB3,MB0 // 执行后MB0.2=0,其余位不变
6、实验程序,在STL模式下复制到MicroWin Smart
LD Always_On:SM0.0
LPS // 兼容LAD
DECO VB0, VW2 // 解码
A M2.0
ORB VB3, MB0 // 置位
LPP // 兼容LAD
AN M2.0
INVB VB3 // 取反
ANDB VB3, MB0 // 复位
上面是单网络兼容LAD的程序,有多余的指令
双网络程序,精简如下
网络1
LD Always_On:SM0.0
DECO VB0, VW2 // 解码
网络2
LD M2.0
ORB VB3, MB0 // 置位
NOT
INVB VB3 // 取反
ANDB VB3, MB0 // 复位
请填写推广理由:
分享
只看
楼主