本主题以 READ_VAR 功能块为示例,介绍对控制器通讯功能的管理和操作。(PLCopen 标准定义功能块的规则。)
注意: 这些参数是所有 PLCCommunication 功能块(除 ADDM 外)所共有的。
此图中突出显示了 PLCCommunication 库中所有功能块共有的参数:
这些参数由 PLCCommunication 库中的多个功能块共享。
输入 |
类型 |
注释 |
---|---|---|
Execute |
BOOL |
此功能在此输入的上升沿上执行。 注:当 xExecute 在冷复位或热复位后的第一个运行模式任务循环中设置为 TRUE 时,不会检测到上升沿。 |
Abort |
BOOL |
中止上升沿上正在执行的操作 |
Addr |
ADDRESS |
目标外部设备的地址(可以是 ADDM 功能块的输出) |
Timeout |
WORD |
交换超时为 100 毫秒的倍数(0 表示无限) 注意: HMI SCU 的 Timeout time 固定在 @1 秒,并且无法为 Modbus 通讯功能块设置它。 |
注:一个功能块操作可能需要多个交换。超时会应用于控制器与调制解调器之间的每次交换,所以功能块的总持续时间可能会超过超时时间。 |
输出 |
类型 |
注释 |
---|---|---|
Done |
BOOL |
功能成功完成后,Done 设置为 TRUE。 |
Busy |
BOOL |
如果功能正在执行,Busy 设置为 TRUE。 |
Aborted |
BOOL |
使用 Abort 输入中止功能后,Aborted 设置为 TRUE。功能中止后,CommError 包含代码 Canceled - 16#02(由用户请求停止交换)。 |
Error |
BOOL |
当功能由于检测到错误而停止时,Error 设置为 TRUE。检测到错误时,CommError 和 OperError 包含有关检测到的错误的信息。 |
CommError |
BYTE |
CommError 包含通讯错误代码。 |
OperError |
DWORD |
OperError 包含操作错误代码。 |
注意:
Busy 输出复位为 0 后,以下 3 个输出中的一个(且仅有一个)立刻设置为 1:
oDone
oError
oAborted
功能块需要上升沿才能进行初始化。功能块需要先看到 Execute 输入为 False,然后才能检测后续的上升沿。
|
意外的设备操作 |
请务必首先通过将功能块的 Execute 输入设为 FALSE 来调用功能块,这样它便会检测后续的上升沿。 |
不遵循上述说明可能导致人员伤亡或设备损坏。 |
功能在 Execute 输入的上升沿启动。Busy 输出随后设置为 TRUE。此图显示操作自动完成时(无论是否检测到错误)功能块的行为:
注 1: 仅当 Execute 在操作结束后复位为 FALSE 后,Done 或 Error 位才会在任务循环期间设置为 TRUE。
此图显示由应用程序中止的功能。Abort 输入的上升沿取消正在执行的功能。在这种情况下,中止的输出会设置为 1,并且 CommError 包含代码 Canceled - 16#02(由用户请求停止交换):
注 1: 只有 Execute 在发生中止请求后复位为 FALSE,Abort 位才会在任务循环期间设置为 TRUE。