关于SFC20中any类型的问题

在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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年8月3日
下一篇 2017年8月3日

相关推荐