回复:一个问题引发的反思

已锁定

姑苏城外

  • 帖子

    1466
  • 精华

    19
  • 被关注

    8

论坛等级:侠圣

注册时间:2006-05-29

黄金 黄金 如何晋级?

发布于 2024-01-15 14:37:55

9楼


基本功到头了也就ANY指针,看看有没有点基本功



      A     #sxParameterized     // 参数化

      JC    labelParameterized   // 执行单次

      SET

      S     #sxParameterized


      L     P##sxParameterized   // 背景数据块结束地址

      L     P##sInsMRs           // 背景数据块开始地址

      -D

      L     #cUIntQuantity

      INC   1

      /D

      SRD   3

      T     #sUIntDataSize       // 单台设备的数据长度

      L DINO                     // 背景数据块号

      T     #sUIntDataBlockNumber

labelParameterized : NOP 0

      A     #sxMonitorEnable     // 不监视则退出

      JCN   labelEnd


// 拷贝需要监视的设备数据到影子区

      L     P##tAnyDestination

      LAR1

      L     16#1002              // fixed

      T LW [ AR1 , P#0.0 ]

      L     #sUIntDataSize       // Length

      T LW [ AR1 , P#2.0 ]

      L     #sUIntDataBlockNumber// Data Block Number

      T LW [ AR1 , P#4.0 ]

      L     P##sInsMRs           // Destination

      L     16#FFFFFF

      AD

      L     16#84000000          // DB

      OD

      T LD [ AR1 , P#6.0 ]

      L     P##tAnySource

      LAR1

      L     16#1002              // fixed

      T LW [ AR1 , P#0.0 ]

      L     #sUIntDataSize       // Length

      T LW [ AR1 , P#2.0 ]

      L     #sUIntDataBlockNumber// Data Block Number

      T LW [ AR1 , P#4.0 ]

// ****** 根据监视设备号计算数据地址,超范围则跳出 ******

      L     #sUIntMonitorDeviceID// Source

      L     1

      <I

      JC    labelEnd

      L     #sUIntMonitorDeviceID

      L     #cUIntQuantity

      >I

      JC    labelEnd

// ***************************************************

      L     #sUIntMonitorDeviceID

      L     #sUIntDataSize

      *D

      SLD   3

      T     #tDWrodOffset

      L     P##sInsMRs

      L     16#FFFFFF

      AD

      L     16#84000000          // DB

      OD

      L     #tDWrodOffset

      +D

      T LD [ AR1 , P#6.0 ]

      CALL  BLKMOV

         blk_type:=Variant

         SRCBLK  :=#tAnySource

         RET_VAL :=#tIntRetVal

         DSTBLK  :=#tAnyDestination

labelEnd : NOP 0


// *********** 连续调用功能 *******************

      L     #cUIntQuantity

labelLoopStart : T #tUIntDeviceID

      CALL  #sInsMRs[#tUIntDeviceID]


      L     #tUIntDeviceID

      LOOP  labelLoopStart

// *******************************************


与人规矩,不与人巧!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15234条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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