在 S7-300/400 中,可使用指令 UC 和 CC 编程块调用。 参数是通过寄存器而非接口传递到调用块,例如 AR1、AR2、DB、DI、累加器或状态字。
这些调用会降低程序的执行速度,因而在 S7-1500 中不再设置为默认调用,而是使用 CALL 指令。但 CALL 指令不能进行间接块调用。 如果要使用 UC 或 CC 进行间接块调用,则需要在被调用块的属性中选择“通过寄存器传送参数”(Parameter passing via registers) 选项。 这样就可在不同块之间传递寄存器数据。 RLO 位属于例外情况: 在进行块转换时,该位将设置为“未定义”(undefined),而且在块调用后不再可用。
请注意,该选项仅适用于 STL 块中进行标准访问,而且该块可能没有形参。 启用该选项后,可以在块之间传送寄存器中的数据。 在此,RLO 位也属于例外情况: 在进行块转换时,该位将设置为“未定义”(undefined),而且在块调用后不再可用。
在创建受专有技术保护的库元素时,*再使用间接块调用。 TIA Portal 中可自动实现这一功能: 从库中插入块时,用户程序将自动解决块的编码冲突问题。
在移植过程中,将使用以下方式处理通过 "UC" 或 "CC" 进行的块调用:
将*有块编号的 "UC FC" 指令替换为 "CALL" 指令。
将*有块编号的 "CC FC" 指令替换为 "CALL" 指令。 并添加执行条件调用的跳转指令。
间接*了块编号的 "UC FC" 和 "CC FC" 指令保持不变。
间接*了块编号的 "UC FB" 和 "CC FB" 指令保持不变。
以下举例说明如何移植通过 "UC" 进行的块调用。
在**个表中,为移植前的程序:
STL | |
---|---|
UC FC 10 | |
UC FC[#temp0] | |
UC FB 10 | |
UC FB [#temp0] |
下表为移植后的程序:
STL | 说明 |
---|---|
CALL FC 10 | |
UC FC[#temp0] | 必须在被调用块中设置选项“通过寄存器传送参数”(Parameter passing via registers)。 |
UC FB 10 | 必须在被调用块中设置选项“通过寄存器传送参数”(Parameter passing via registers)。 |
UC FB [#temp0] | 必须在被调用块中设置选项“通过寄存器传送参数”(Parameter passing via registers)。 |
产品推荐