回复:发现博途与STEP7的一点不同地方

江诚

  • 帖子

    2620
  • 精华

    0
  • 被关注

    34

论坛等级:至圣

注册时间:2004-09-15

钻石 钻石 如何晋级?

发布于 2015-06-14 22:23:13

7楼

7. 今天说一下关于 SCL 中关于间接寻址的不同之处。
在STEP7中 间接寻址比较方便,如 S:=DB_NO.DW[X]; // DB_NO (BLOCK_DB) 为 DB块号, X 为指针地址,是个变量。麻烦的就是有些需要格式转换。
在TIA的 S7-1500的间接寻址,我就搞得有点懵了。
先把DB块的间接寻址弄出来了 #S := #DBNO.%DBW20; // DBNO(DB_ANY) 为 DB块号, DBW20 为地址。
接下来要把 DBW20替换为变量就不知道怎么弄了。 #S := #DBNO.#X; 这个 X定义了好几种数据类型都会报错,没辙了,那就再想想别的办法吧。
那上万页的手册告诉我可以用 PEEK,好吧,这个也可以弄一弄,#S := PEEK_WORD(area:=16#84,dbNumber:=#DBNO,byteOffset:=#X) ; 这个弄出来后问题又来了, PEEK后面的数据类型 除了 WORD,BOOL和默认的 BYTE外,定义为 INT,REAL等常用的数据类型都会报错,这是几个意思? byteOffset 这个 “byte” 也是改不了的啊。
我现在的目的就是想知道:#S := #DBNO.#X; // (S:REAL DBNO为DB块号, X是地址变量) 在1500的 SCL程序中,该如何表达。
请大家指点指点我的疑问,谢谢!
以上仅供参考,如有差错,敬请原谅!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11192条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。