评估“接收完成”标志
此函数返回“接收完成”标志的值。已在分配给Port的通信端口中接收到结束代码时为TRUE。
输入
根据PLC的类型指定通信端口:
COM端口,例如SYS_COM0_PORT
以太网端口,例如SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU,例如COM01中的16#xx01(xx = 插槽编号)
输出
如果已接收到结束代码,将设置为TRUE。结束代码将于COM端口设置中相应的系统寄存器中被指定。
“接收完成”标志的评估
指定时间内如果没有接收到更多字节或已执行命令ClearReceiveBuffer,IsDone输出将变为TRUE。将禁止接收更多字节。F159_MTRN或ClearReceiveBuffer会将"IsDone" 标志变为FALSE。此函数可用于 FP7 或 MCU,也可用于超时模式。可使用下列任意一个指令或系统变量评估"接收完成"标志:
IsReceptionDone
IsReceptionDoneByTimeOut
sys_bIsComPort1ReceptionDone, sys_bIsComPort2ReceptionDone, sys_bIsToolPortReceptionDone(根据端口而定)
还可以通过查看接收缓冲区的内容确定接收的结束。当正在执行扫描时,接收字节数可能会改变。例如,如果多次读取接收到的字节数,则在单次扫描中可能存在不同的状态。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
iPort: INT:=0;
bIsDone: BOOL:=FALSE;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,IsReceptionDone!,,5,0,14,3,,?DPort?CIsDone);
B(B_VARIN,,iPort,3,1,5,3,);
B(B_VAROUT,,bIsDone,14,1,16,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsDone:=IsReceptionDone(Port := iPort);