签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
如何使用获取一个双字的某一位的BOOL值,不使用西门子自身的DBXX.X
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1604284&b_id=4&s_id=0&num=5
博图可以用slice操作
通用的做法就是和对应位为1的一个字/双字进行与操作,结果不为零则表示该位为1
if GetTagDword("test")&0x1///第一个位if GetTagDword("test")&0x2///第二个位if GetTagDword("test")&0x4///第三个位if GetTagDword("test")&0x8///第四个位if GetTagDword("test")&0x10///第五个位后面的常数按照8421一直排下去。
获取双字的第N个位:
vb,scl:
双字&2#1000(N-1个0)
有DB 为何不用
(* 将字转换为BOOL量*)
VAR_INPUT
input_data:WORD;//输入的字
END_VAR
VAR
data:WORD;
bool_data AT data: ARRAY[0..15] OF BOOL; //使用AT将字转换成BOOL量
I:INT;
VAR_OUTPUT
BOOL_Number:ARRAY[0..15] OF BOOL; //转换后输出的BOOL量
//DB1.DBX1.0--DBX1.7
data:= input_data;
FOR I:= 0 TO 15 BY 1 DO
BOOL_Number[I]:= bool_data[I];
END_FOR;
程序的目的是使用的便捷性,可移植性,以及通用性,难道你用定时器,还自己做定时器吗?
SCL使用AT指令
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录