zhenhai
级别: 略有小成
精华主题: 0
发帖数量: 174 个
工控威望: 303 点
下载积分: 5998 分
在线时间: 116(小时)
注册时间: 2014-04-12
最后登录: 2024-09-30
查看zhenhai的 主题 / 回贴
楼主  发表于: 2021-04-11 13:53
三菱PLC中如何把D200中的16位数据H03E8转换成2个8位数?
日海电脑
级别: 正式会员
精华主题: 0
发帖数量: 45 个
工控威望: 92 点
下载积分: 360 分
在线时间: 21(小时)
注册时间: 2021-04-07
最后登录: 2022-03-03
查看日海电脑的 主题 / 回贴
1楼  发表于: 2021-04-29 10:48
枫落云端  正规写法
日海电脑
级别: 正式会员
精华主题: 0
发帖数量: 45 个
工控威望: 92 点
下载积分: 360 分
在线时间: 21(小时)
注册时间: 2021-04-07
最后登录: 2022-03-03
查看日海电脑的 主题 / 回贴
2楼  发表于: 2021-04-29 17:40
CRC寄存器 := 16#FFFF ;
(*Z0 := 0 ;*)
序号:= 0 ;
(*temp[3]:=数量;*)
FOR  CRC数量 := 3  TO  数量  BY  1 DO
    (*MOV(M8000 , D20Z0 , CRC临时);*)
    CRC临时:=接收源[序号];
    (*temp[序号]:=接收源[序号];*)

    WXOR( M8000, CRC临时 , CRC寄存器 , CRC寄存器);
    (*Z0:=Z0+1;*)
    序号:=序号+1;
    FOR  右移 := 0  TO  7  BY  1  DO
         MOV( M8000 , CRC寄存器 , K4M10 );
         ROR( M8000 , 1 , CRC寄存器 );
         WAND( M8000 , 16#7FFF , CRC寄存器  , CRC寄存器  );
         WXOR( M10 , 16#A001, CRC寄存器 , CRC寄存器 );
    END_FOR;
END_FOR;
(*temp[2]:=CRC寄存器;*)


ST编程写法