签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
请教大神,我现在有个这样的情况
现在我左的电机的反馈地址等于某一个数时IB的对应地址传到电流反馈值中,我想能不能做个变量电流的地址等于我的IB中括号里面 的数时,就直接等于这个赋值的数,用一个变量语句就完成,,有大神知道怎么做么
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1692770&b_id=66&s_id=0&num=11
CASE指令....去看看那个吧
FOR ii := 5 TO 61 BY 7 DO
if #当前电机电机电流反馈地址=ii then
#"motorn-电流反馈值":="IB".DIB[ii];
end_if;
END_FOR;
这不是之上谈兵,究竟哪个正确,测试一下就到了。
数组的索引寻址 不就解决问题了,SCL/LAD都支持
好的软件是从数据结构规划作起,新建DB块,在DBk中定义一个Index的int变量,在定义一个结构体数组motorn,它有两个int变量一个是地址,另一个是反馈值,软件就可以这样写了:
FOR DBk.index := 5 TO 61 BY 7 DO
if DBk.motorn.地址 = DBk.index then
DBk.motorn.反馈值 :="IB".DIB[DBk.index];
为了方便管理,这个反馈值也可写到motorn下面,也就是说所有有关电机属性均写到montorn下面。
感觉还是CASE 语句好
if #当前电机电流反馈地址>=5 and #当前电机电流反馈地址<=61 and #当前电机电流反馈地址 mod 7=5 then
#motorn-电流反馈值:=ib.dib[#当前电机电流反馈地址];
EXIT;
正解。 楼主贴的程序里就没有循环的意思
用case语句适合 等于多少的时候执行一次
elsif 适合用条件变化的 你这个都是同一个变量判定 用case要简洁一些。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录