当前位置: 主页 > PLC控制

关于SFC20中any类型的问题

在sFC20中,输入数据可以是比如p#db1.dbx0.0byte10,也可以是p#I0.0byte10,或者是p#Q0.0byte10,这里面的DB/I/Q是不同的数据类型,怎么实现可以是不同的数据类型?我想自己写一个any类型的fc块,请问如何实现不同的类型都可以作为输入?跟sfC20一样的?

最佳答案

ANY数据类型除了交叉区域指针和DB编号之外,ANY数据类型指针还包含一个数据类型标识符和一个复制因子,这样,不仅能够标识单个地址,而且还可以标识完整的数据区。
ANY类型的指针有两种用途:
?用于数据类型变量:这种类型的ANY指针包含有一个语法ID16#10(对于STL)、一个数据类型标识符、一个复制因子、一个DB号以及一个交叉区域指针。
?用于参数类型变量:在这种情况下,ANY指针仅包含一个语法ID16#10(对 于STL)、一个参数类型标识符以及一个16位的无符号数(位于字节n+8和字节n+9中,用以表示块号),字节n+4、…、n+7的内容为“0”。

声明ANY类型指针ANY数据类型的变量一般可在FC和fb中声明为IN、OUT及INOUT参数。
该声明也可以在FB和FC中用作临时变量。借助该临时变量,可以创建一个运行期间可改变的ANY类型的指针,并将其传递到被调块中(请参见ANY类型的间接参数赋值)。
区域标识符000I/O
001输入(PII)
(RRR):010输出(PIQ)011位(Bit)存储器
100DB寄存器数据块中的数据
101DI寄存器数据块中的数据
110自有的局部数据111主调方的LD

提问者对于答案的评价:
thankyou

  • 关注微信

猜你喜欢

微信公众号