IsReceptionDone

评估“接收完成”标志

此函数返回“接收完成”标志的值。已在分配给Port的通信端口中接收到结束代码时为TRUE

参数

输入

Port (WORD, INT, UINT)

根据PLC的类型指定通信端口:

  • COM端口,例如SYS_COM0_PORT

  • 以太网端口,例如SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU,例如COM01中的16#xx01(xx = 插槽编号)

输出

IsDone (BOOL)

如果已接收到结束代码,将设置为TRUE。结束代码将于COM端口设置中相应的系统寄存器中被指定。

标注

“接收完成”标志的评估

指定时间内如果没有接收到更多字节或已执行命令ClearReceiveBufferIsDone输出将变为TRUE。将禁止接收更多字节。F159_MTRNClearReceiveBuffer会将"IsDone" 标志变为FALSE此函数可用于 FP7 或 MCU,也可用于超时模式。可使用下列任意一个指令或系统变量评估"接收完成"标志:

  • IsReceptionDone

  • IsReceptionDoneByTimeOut

  • sys_bIsComPort1ReceptionDone, sys_bIsComPort2ReceptionDone, sys_bIsToolPortReceptionDone(根据端口而定)

还可以通过查看接收缓冲区的内容确定接收的结束。当正在执行扫描时,接收字节数可能会改变。例如,如果多次读取接收到的字节数,则在单次扫描中可能存在不同的状态。

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。

	VAR
		iPort: INT:=0;
		bIsDone: BOOL:=FALSE;
	END_VAR

LD本体

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

ST本体

bIsDone:=IsReceptionDone(Port := iPort);

最后更新日期: 此页面上的反馈松下热线