在sfc20中,输入的数据可以是比如p#db1.dbx0.0 byte 10 ,也可以是p#I0.0 byte 10,或者是p#Q0.0 byte 10,这里面的DB/I/Q是不同的数据类型,怎么实现可以是不同的数据类型?我想自己写一个any类型的fc块,请问如何实现不同的类型都可以作为输入?跟SFC20一样的?
最佳答案
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
提问者对于答案的评价:
thank you
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc191662.html