登录
首页 PLC论坛 施耐德电气PLC
回帖 发帖
正文

主题:有关数据截取和整理的做法疑问

点击:573 回复:6

输入声明了4个BYTE类型的变量
A:BYTE;
B:BYTE;
C:BYTE;
D:BYTE;
怎样写程序将这四个BYTE按照A、B、C、D的顺序高低字节组合成一个DWORD 并输出该DWORD
使用ST语言,怎么处理最简洁。
21-03-04 22:28
我目前所想到的只有一下两种,应该还有其它方法实现的。
方法一:
#tDword := BYTE_TO_DWORD(#A) OR SHL(IN:= BYTE_TO_DWORD(#B),N:= 8) OR SHL(IN:=BYTE_TO_DWORD(#C), N:= 16) OR SHL(IN:= BYTE_TO_DWORD(#D), N:= 24);
方法二:
#tDword.%X0 := #A.%X0;
#tDword.%X1 := #A.%X1;
#tDword.%X2 := #A.%X2;
#tDword.%X3 := #A.%X3;
#tDword.%X4 := #A.%X4;
#tDword.%X5 := #A.%X5;
#tDword.%X6 := #A.%X6;
#tDword.%X7 := #A.%X7;
//Bit8-Bit31自行添加
21-03-05 08:11
没有看懂,能否解释一下,我写到施耐德里面,会报错。这个是不是西门子SCL的写法?
21-03-05 08:33
刚刚换了方式实现了,声明A,B,C,D分别为BYTE,D为Int.
D:=a*1000+b*100+c*10+d,就能得到相关实时高低位数据了。
21-03-05 13:36
附件 1.jpg
附件 2.jpg
你直接这么声明不就可以了吗?程序都不用写
21-03-05 15:57
A<<24 + B<<16 + C<<8 + D
最高位A左移24位 + B左移16 + C左移8 + D
再转换成int32
21-03-05 17:24
联合体了解下
21-03-11 21:25

工控新闻

更多新闻资讯