找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
ANY 数据类型 除了交叉区域指针和 DB 编号之外,ANY 数据类型指针还包含一个数据类型标识符和一个复制因子,这样,不仅能够标识单个地址,而且还可以标识完整的数据区。
ANY 类型的指针有两种用途:
?用于数据类型变量:这种类型的 ANY 指针包含有一个语法 ID 16#10 (对于 STL)、一个数据类型标识符、一个复制因子、一个 DB 号以及一个交叉区域 指针。
?用于参数类型变量:在这种情况下,ANY 指针仅包含一个语法 ID 16#10 (对 于 STL)、一个参数类型标识符以及一个 16 位的无符号数 (位于字节 n+8 和字节 n+9 中,用以表示块号),字节 n+4、 …、n+7 的内容为“0”。
声明 ANY 类型指针 ANY 数据类型的变量一般可在 FC 和 FB 中声明为 IN、OUT 及 INOUT 参数。
该声明也可以在 FB和FC 中用作临时变量。借助该临时变量,可以创建一个运行期间可改变的 ANY 类型的指针,并将其传递到被调块中 (请参见 ANY 类型的间接参数赋值)。
区域标识符 000 I/O
001 输 入 (PII)
(RRR): 010 输出 (PIQ) 011 位 (Bit) 存储器
100 DB 寄存器数据块中的数据
101 DI 寄存器数据块中的数据
110 自有的局部数据 111 主调方的 LD
L P##iAny
LAR1
L B [AR1,P#1.0] //any指针的字节1 表达数据类型
T #DataType
L W [AR1,P#2.0] //any指针的字节2-3 表达在该数据类型下的数据长度
T #DataLength
L W [AR1,P#4.0] //any指针的字节4-5 表达该数据所在的DB块号 非DB为0
T #DB_NUM
L D [AR1,P#6.0] //any指针的字节6-9 表达该数据指向的数据的首地址
LAR2
应用举例:比如要做一个把any指针指向的数据全部清零的功能块
比如iAny的输入参数为 p#db1.dbx0.0 byte 10
L P##iAny
LAR1
L B [AR1,P#1.0] //any指针的字节1 表达数据类型
T #DataType
L W [AR1,P#2.0] //any指针的字节2-3 表达在该数据类型下的数据长度
L 8
*I
T #DataLength
L W [AR1,P#4.0] //any指针的字节4-5 表达该数据所在的DB块号 非DB为0
T #DB_NUM
L D [AR1,P#6.0] //any指针的字节6-9 表达该数据指向的数据的首地址
LAR2
OPN DB[#DB_NUM]
L D [AR1,P#6.0]
LAR2
L #DataLength
NEXT: T #mLoop
R [AR2,P#0.0]
+AR2 P#0.1
LOOP NEXT
执行完后DB1.DBX0.0 到DB1.DBX9.7 全部清零了
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!