签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
大家好,小弟刚上手SCL,项目有个SCL生成的STL程序,其中有一段是把一个结构体中的32位信号读取到一个双字中:
结构体中Err的定义如下:
如果是SCL的话应该怎么写啊?请各位高手不吝指教
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1646668&b_id=4&s_id=0&num=6
block_mov指令。
只是提供一下思路吧,,for循环总共循环32次,,数组中的高位置位 接收双字的0位,然后向左移位接收的双字。。。。
block_mov可以,但是需要构建ANY指针,比较麻烦;我是写了个函数,但是感觉没有原来程序那么简洁
FUNCTION_BLOCK FB21
TITLE = 'BOOL_TO_DWORD'
//
// Block Comment...
VERSION: '1.0'
AUTHOR: baikai
NAME: B_DW
FAMILY: baikai
know_how_protect
(* 将BOOL量转换为双字*)
VAR_INPUT
X0 : BOOL;
X1 : BOOL;
X2 : BOOL;
X3 : BOOL;
X4 : BOOL;
X5 : BOOL;
X6 : BOOL;
X7 : BOOL;
X8 : BOOL;
X9 : BOOL;
X10 : BOOL;
X11 : BOOL;
X12 : BOOL;
X13 : BOOL;
X14 : BOOL;
X15 : BOOL;
X16 : BOOL;
X17 : BOOL;
X18 : BOOL;
X19 : BOOL;
X20 : BOOL;
X21 : BOOL;
X22 : BOOL;
X23 : BOOL;
X24 : BOOL;
X25 : BOOL;
X26 : BOOL;
X27 : BOOL;
X28 : BOOL;
X29 : BOOL;
X30 : BOOL;
X31 : BOOL;
END_VAR
VAR_OUTPUT
// Output Parameters
OUT:DWORD;
VAR
NO:INT;
S1: ARRAY[0..31] OF BOOL;
S2 AT S1: DWORD;
FOR NO:= 0 TO 31 BY 1 DO
S1[0] := X0;
S1[1] := X1;
S1[2] := X2;
S1[3] := X3;
S1[4] := X4;
S1[5] := X5;
S1[6] := X6;
S1[7] := X7;
S1[8] := X8;
S1[9] := X9;
S1[10] := X10;
S1[11] := X11;
S1[12] := X12;
S1[13] := X13;
S1[14] := X14;
S1[15] := X15;
S1[16] := X16;
S1[17] := X17;
S1[18] := X18;
S1[19] := X19;
S1[20] := X20;
S1[21] := X21;
S1[22] := X22;
S1[23] := X23;
S1[24] := X24;
S1[25] := X25;
S1[26] := X26;
S1[27] := X27;
S1[28] := X28;
S1[29] := X29;
S1[30] := X30;
S1[31] := X31;
END_FOR;
OUT:= S2;
END_FUNCTION_BLOCK
AT 指令了解下
对于非优化的块,用PEEK_WORD可以
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录