您现在所在的是:

施耐德电气论坛

回帖:6个,阅读:562 [上一页] [1] [下一页]
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
品牌积分(施耐德):38
注册时间:2008/12/28
发站内信
发表于:2021/3/4 22:28:20
#0楼
输入声明了4个BYTE类型的变量
A:BYTE;
B:BYTE;
C:BYTE;
D:BYTE;
怎样写程序将这四个BYTE按照A、B、C、D的顺序高低字节组合成一个DWORD 并输出该DWORD

使用ST语言,怎么处理最简洁。
2021
381250356
文章数:233
年度积分:50
历史总积分:2021
品牌积分(施耐德):4
注册时间:2011/6/21
发站内信
发表于:2021/3/5 8:11:10
#1楼
我目前所想到的只有一下两种,应该还有其它方法实现的。

方法一:
#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自行添加
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
品牌积分(施耐德):38
注册时间:2008/12/28
发站内信
发表于:2021/3/5 8:33:53
#2楼
回复 #1楼 381250356
没有看懂,能否解释一下,我写到施耐德里面,会报错。这个是不是西门子SCL的写法?
2272
刘国辉
文章数:258
年度积分:59
历史总积分:2272
品牌积分(施耐德):38
注册时间:2008/12/28
发站内信
发表于:2021/3/5 13:36:27
#3楼
刚刚换了方式实现了,声明A,B,C,D分别为BYTE,D为Int.
D:=a*1000+b*100+c*10+d,就能得到相关实时高低位数据了。
8132
0aguang0
文章数:1636
年度积分:255
历史总积分:8132
品牌积分(施耐德):2046
注册时间:2010/10/21
发站内信
发表于:2021/3/5 15:57:40
#4楼
附件 1.jpg

附件 2.jpg

你直接这么声明不就可以了吗?程序都不用写
水平一般,能力有限.如有错误之处.欢迎并感谢指出.我一定认真学习积极改正.请勿DISS.
50
outliers
文章数:135
年度积分:50
历史总积分:50
品牌积分(施耐德):8
注册时间:2019/10/14
发站内信
发表于:2021/3/5 17:24:42
#5楼
A<<24 + B<<16 + C<<8 + D
最高位A左移24位 + B左移16 + C左移8 + D
再转换成int32
2919
1143158441
文章数:276
年度积分:87
历史总积分:2919
品牌积分(施耐德):9
注册时间:2017/8/17
发站内信
发表于:2021/3/11 21:25:51
#6楼
联合体了解下
此帖发自论坛手机版
成功的秘诀,在永不改变既定的目的。 —— 卢梭

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004