SEND_RECV_MSG 功能块用于发送和接收用户定义的消息。它在选定介质(如串行线路)上发送消息,然后等待响应。另外,它也可以发送消息但不等待响应,或者仅接收消息而不发送消息。
此功能应与 ASCII 管理器配合使用。如果您要发送一个未在通讯库中实现的请求,则也可以将它与 Modbus 管理器配合使用。在这种情况下,您必须自己构建请求。
输入 |
类型 |
注释 |
---|---|---|
QuantityToSend |
UINT |
QuantityToSend 为要发送的字节数。 控制器限制: oM258/LMC058:1050 字节 oM241/M251:252 字节 |
BufferToSend |
POINTER TO BYTE |
BufferToSend 为存储要发送的消息的缓冲区(字节数组)的地址。ADR 标准功能必须用于定义关联指针。(请参见下面的示例。)如果为 0,则该功能进行“仅接收”操作。 |
SizeRecvBuffer |
UINT |
SizeRecvBuffer 为接收缓冲区的可用大小(以字节为单位)。 接收数据的大小(以字节为单位)显示在功能块实例内部属性(内部变量)中:<实例名称>.NbRecvBytes。 控制器限制: oM258/LMC058:1050 字节 oM241/M251:252 字节 |
BufferToRecv |
POINTER TO BYTE |
BufferToRecv 为存储收到的消息的缓冲区(SizeRecvBuffer 字节数组)的地址。ADR 标准功能必须用于定义关联指针。(请参见下面的示例。)如果为 0,则该功能进行“仅发送”操作。 |
对于“仅发送”操作,当向线路发送完所有数据(包括最后的起始和停止字符)时,交换完成(Busy 复位为 0)。
对于发送/接收或“仅接收”操作,系统直到出现结束条件时才接收字符。当达到结束条件时,交换完成(Busy 复位为 0)。接收到的字符随后将被复制到接收缓冲区(最多 sizeRecvBuffer 个字符),接收数据的大小(以字节为单位)显示在功能块实例属性(内部变量)中:<实例名称>。NbRecvBytes。sizeRecvBuffer 输入不表示结束条件。
所有 PLCCommunication 库功能块共有的输入和输出参数在其他部分中介绍。
用户定义的消息的起始和结束条件在 ASCII 管理器的配置对话框中配置:
注意: 此示例中无起始和结束字符。收到的帧的结束条件为超时 250 毫秒。
此 POU 允许在串行线路 1 上对用户定义的消息“hello”执行“仅发送”操作:
注意: Start 变量上的上升沿启动地址转换和消息发送。