西门子STL手册中“参数传送”章节有如下的描述:块参数以值的形式传送。对于功能块,在被调用块中使用背景数据块中的实际参数值的副本。对于功能,实际值的副本存在于本地数据堆栈中。将不复制指针。在调用之前,将INPUT 值复制到背景数据块或L 堆栈中。调用以后,将OUTPUT 值往回复制给变量。在被调用的块中,仅可使用副本。所需的STL指令位于调用块中,并且对于用户来说是不可见。注意:如果将存储位、输入、输出或外设I/O 存储区用作功能的实际地址,则对它们的处理方法将不同于对其它地址的处理方法。此处,直接执行更新,不通过L 堆栈。
而西门子STEP 7 Professional V13.0 系统手册中P2404页描述基本数据类型(I、Q、M、L)和结构化数据类型的参数在FC中是作为指针传送的。
这两处的描述是否有点“矛盾”?
以前也看到过一篇文章,解释为什么在FC中 LAR1 P##Pointer 语句是错误的,而必须使用 L P##Pointer 和 LAR1 两条语句,看了下似懂非懂,还是有点迷糊,有一点搞不明白这个指针到底是怎么用的,期待哪位高人能指点一下。