间接寻址---300系列

已锁定

工控侠隐

  • 帖子

    306
  • 精华

    2
  • 被关注

    38

论坛等级:侠士

注册时间:2011-03-03

钻石 钻石 如何晋级?

间接寻址---300系列

2718

23

2021-10-31 20:04:42

     最近,写了几个程序,都用到了SCL的间接寻址指令。之前,没有SCL的时候,一直用STL做,感觉很好用,利用地址寄存器做地址的计算寻址。现在,对于不是逻辑运算,主流应该用SCL比较多,于是找了找SCL的间接寻址方法。指令简单易懂,十分好用,唯一遗憾的是不能访问当前FB的背景数据块。

     现在我就来简单介绍下300CPU的间接寻址方法吧。具体请看我上载的附件截图即可。

间接寻址1.jpg

DB块数据的间接寻址.jpg

     以下是对DB块的位和浮点数的间接寻址访问:     

        IF WORD_TO_BLOCK_DB(#I_wDBNO).DX(IDX := #"I_iResetConsumptionAddr.byte" + (#IO_i - 1) * #I_iInterval, BIT := #"I_iResetConsumptionAddr.bit")

            AND NOT #I_bDosingUnitOn

        THEN

            WORD_TO_BLOCK_DB(#I_wDBNO).DD(#I_iOldConsumptionAfterResetAddr + (#IO_i - 1) * #I_iInterval) := WORD_TO_BLOCK_DB(#I_wDBNO).DD(#I_iNewConsumptionBeforeResetAddr + (#IO_i - 1) * #I_iInterval);

        END_IF;

      另外,使用WORD_TO_BLOCK_DB做间接寻址时,需要注意以下几点:

  1. 访问的DB必须是没有被优化的,因为优化后的块只能进行符号寻址;

  2. WORD_TO_BLOCK_DB(#I_wDBNO)中的DB块号必须是WORD类型。

     3.如果要对浮点型的DB块数据访问,需要用DWORD_TO_REAL()指令进行转换,这里不支持隐式转换。

     如果,有不对的地方请各位大神指正,谢谢!后续继续更新。



间接寻址---300系列 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54624条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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