我好像是
大波就是我
级别: 家园常客
精华主题: 0
发帖数量: 303 个
工控威望: 603 点
下载积分: 1392 分
在线时间: 491(小时)
注册时间: 2012-12-09
最后登录: 2024-11-18
查看我好像是的 主题 / 回贴
楼主  发表于: 2021-11-02 19:08
图片:
图片:
24个指示灯,三菱PLC  三菱触摸屏   上位机发送一个数据过来给PLC 控制。数据范围0-24.

发送24过来,1-24个指示灯全部亮。  发送23,1-23个指示灯全部亮。发送6过来,1-6指示灯全部亮。发送0过来,全部不亮。如此类推。


有没有简单一点的办法啊???一个一个判断太麻烦了
zouyunhuang
级别: 探索解密
精华主题: 0
发帖数量: 106 个
工控威望: 174 点
下载积分: 550 分
在线时间: 31(小时)
注册时间: 2021-09-18
最后登录: 2024-10-18
查看zouyunhuang的 主题 / 回贴
1楼  发表于: 2022-04-02 11:17
我浏览到这个帖子,也很感兴趣,参照几位楼上的方法。用SFTBL指令4行也可以,用循环FOR指令用了6行也可以,有个疑问8楼的2的N次方减1的方法,实在想不到怎么实现。在实现之余我努力寻找指令,有没有可以直接类似“FMOV”指令一样可以直接对bool元件直接进行处理的指令,如“FMOV K1 M0 K24,,这是我的假设指令",,后发现WORK3-R系列中有丰富的位处理指令,找到类似的指令为如下"BLKMOVB"名称为N位数据传送。后面我程序如下
1.LD SM400                DMOV HFFFFFF K6M1
   LD<> D0 D2             BKRST M25 K24
                                    SFTBL  M1   K48  D0
                                    MOV D0 D2
注释:D0为上位机输入。M25后24个为灯。D2为比较用。M1后24个为值1后面调用

2.LD<> D0 D2             MOV K0 V1
                                    MOV D2 D0
   左母线-------------------FOR D0
   LD>= D0 K1V1         SET M1V1
                                     INC V1
    左母线-------------------next
注释:D0为上位机输入。M1后24个为灯。V1为计算变量        

3. LD SM400                    DMOV HFFFFFF K6M1
    LD SM400                    BKRST M101 K24
    LD SM400                    BLKMOVB M1 M101 D0
注释:D0为上位机输入。M101往后为24个灯。M1往后24个,为存储值1后调用
zouyunhuang
级别: 探索解密
精华主题: 0
发帖数量: 106 个
工控威望: 174 点
下载积分: 550 分
在线时间: 31(小时)
注册时间: 2021-09-18
最后登录: 2024-10-18
查看zouyunhuang的 主题 / 回贴
2楼  发表于: 2022-04-02 12:01
引用
引用第31楼zouyunhuang于2022-04-02 11:17发表的  :
我浏览到这个帖子,也很感兴趣,参照几位楼上的方法。用SFTBL指令4行也可以,用循环FOR指令用了6行也可以,有个疑问8楼的2的N次方减1的方法,实在想不到怎么实现。在实现之余我努力寻找指令,有没有可以直接类似“FMOV”指令一样可以直接对bool元件直接进行处理的指令,如“FMOV K1 M0 K24,,这是我的假设指令",,后发现WORK3-R系列中有丰富的位处理指令,找到类似的指令为如下"BLKMOVB"名称为N位数据传送。后面我程序如下
1.LD SM400                DMOV HFFFFFF K6M1
   LD<> D0 D2             BKRST M25 K24
                                    SFTBL  M1   K48  D0
                                    MOV D0 D2
.......

写完后,看看后面的大神。佩服佩服。n次方那个,和反逆向那个受益匪浅。宏指令还不会