博途SCL编程-批处理模拟量
博途的间接寻址和S7-300/400大不一样。博途中的间接寻址主要用peek/poke指令,peek/poke指令不能用于优化的数据块。优化数据块可以用数组类寻址。这次的控制任务是模拟类的批量处理,s7-300/400模拟量批量处理很繁琐。控制任务把数量不定的模拟量转换成工程量,然后保存到指定的数据块中。这里我们为了测试,不读取PIW中的模拟值,而用MW代替。象这样的控制任务,我们一般用SCL来写会比较方便。请看下面的程序。控制程序https://p3-tt.byteimg.com/origin/pgc-image/25433088e5264625b3727dc143067b6c?from=pchttps://p6-tt.byteimg.com/origin/pgc-image/dd77ba4d10384ea18d0514f7bdde636d?from=pc
https://p6-tt.byteimg.com/origin/pgc-image/5a74255a750e4775bc0c390093762b1f?from=pc
https://p1-tt.byteimg.com/origin/pgc-image/dc99b6bc131141d9a874c9a8fa1ad53b?from=pc
程序简单说明一下:
[*]LOWER_BOUND 读取 resultArray的下限
[*]UPPER_BOUND读取resultArray的上限
[*]lenOfEmtpyArray是数组除去offsetArray偏移量后还剩的空余长度,如果这个长度小于模拟量的数量,则退出。另外如果arrayLowerBound小于下限,也退出。
[*]第19行,SCL 中的循环要注意,开始和结尾都是闭区间,和c语言等高级语言不一致。
[*]第20行,PEEK_WORD 就是读取M区的模拟量。具体用法可以参看手册。
[*]第25行,对数组的读写,也是间接寻址,在scl中没有这种说法了。间接寻址等概念都是汇编下的,高级语言没有这种叫法。
https://p3-tt.byteimg.com/origin/pgc-image/b2350faf8d024d1ba73e5437bbb3cb3a?from=pc
最后,模拟量转化为工程量后为100.0 和 54.0,存入数据块。
楼主您的技术水准,我最服你,其他都是浮云 绝对干货,楼主给力,支持了!!! 楼主辛苦啦,期待下一篇分享 蹲一波同款,有没有姐妹 / 兄弟推荐? 笑不活了,评论区比正文还精彩! 谁懂啊!这内容我能循环看十遍 不请自来,只为说一句:太精彩了! 水个经验,支持楼主,加油呀 理性围观,感觉大家说得都有道理
页:
[1]
2