恭喜,你发布的帖子
发布于 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
// *******************************************
请填写推广理由:
分享
只看
楼主