特殊指令:串口通讯


Asc_Setup:串口设置

串口设置指令用于设定串口通讯的参数。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行对通讯串口的配置;串口模块会比较设定值与当前值,只有在设定值发生变化时,才重新配置串口硬件。
PortUSINT输入需要配置的串口。
BaudRateUDINT输入设定的通讯速率,单位为:bit/S。
DataBits USINT 输入 串口通讯的数据位
  • [0] DataBits_ASCII_7bit:ASCII模式,7位数据位。
  • [1] DataBits_RTU_8bit:RTU模式,8位数据位。
Parity USINT 输入 串口通讯的校验位
  • [0] Parity_No:无校验。
  • [1] Parity_Even:偶校验。
  • [2] Parity_Odd:奇校验。
StopBits USINT 输入 串口通讯的停止位
  • [0] StopBits_0_5:0.5位停止位。
  • [1] StopBits_1:1位停止位。
  • [2] StopBits_1_5:1.5位停止位。
  • [3] StopBits_2:2位停止位。
InterCharCountUSINT输入帧间隔时间,超过多少个通讯字节的时间没有数据,则认为通讯结束。
ReplyWaitTimeUINT输入作为主站等待从站应答的时间。

Asc_Config:串口配置

串口配置指令用于设定串口通讯的部分时间参数。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,进行对通讯串口的配置;串口模块会比较设定值与当前值,只有在设定值发生变化时,才重新配置串口硬件。
PortUSINT输入需要配置的串口。
InterCharCountUSINT输入帧间隔时间,超过多少个通讯字节的时间没有数据,则认为通讯结束。
ReplyWaitTimeUINT输入作为主站等待从站应答的时间。

与串口设置指令不同,串口配置中修改的时间参数,只对自由口通讯有效。若串口上还有其他通讯协议,不受影响。串口设置指令对串口参数的修改是全局性的,所有协议都会受其影响。

Asc_Transmit:串口发送

串口发送指令将串口通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。

参数名称数据类型读写方向说明
EN能流输入当EN使能时,将通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。
PortUSINT输入通讯串口。
TxUSINT输入发送数据存放的首地址。
TxLengthUINT输入发送数据的数量。
Check USINT 输入 是否发送通讯校验字节:
  • [0] Check_None:无附加校验字节。
  • [1] Check_Crc16_BE:发送CRC16校验,高字节在前。
  • [2] Check_Crc16_LE:发送CRC16校验,低字节在前。
  • [3] Check_Lrc8:发送LRC校验。
DoneBIT输出0:通讯未完成;1:通讯完成或失败。
Error USINT 输出 通讯失败的原因:
  • [0] Err_None:无错误。
  • [1] Err_Port:串口不存在。
  • [2] Err_TaskQueueFull:通讯任务队列满。
  • [3] Err_Parameter:参数错误。
  • [4] Err_Transmit:发送数据时发生错误。
  • [5] Err_WaitTimeout:等待从站应答超时。
  • [6] Err_Receive:接收数据时发生错误。
  • [7] Err_TxBuf:发送缓冲错误。
  • [8] Err_RxBuf:接收缓冲错误。
  • [9] Err_RedundancyCheck:数据校验错误。

Asc_Receive:串口接收

串口接收指令将串口通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。

参数名称数据类型读读方向说明
EN能流输入当EN使能时,将通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。
PortUSINT输入通讯串口。
RxUSINT输入接收数据缓冲的首地址。
RxBufLengthUINT输入接收数据缓冲的大小。
Check USINT 输入 是否检查通讯校验字节:
  • [0] Check_None:不检查通讯校验字节。
  • [1] Check_Crc16_BE:检查CRC16校验,高字节在前。
  • [2] Check_Crc16_LE:检查CRC16校验,低字节在前。
  • [3] Check_Lrc8:检查LRC校验。
RxLengthUINT输出实际接收数据的数量。
DoneBIT输出0:通讯未完成;1:通讯完成或失败。
Error USINT 输出 通讯失败的原因:
  • [0] Err_None:无错误。
  • [1] Err_Port:串口不存在。
  • [2] Err_TaskQueueFull:通讯任务队列满。
  • [3] Err_Parameter:参数错误。
  • [4] Err_Transmit:发送数据时发生错误。
  • [5] Err_WaitTimeout:等待从站应答超时。
  • [6] Err_Receive:接收数据时发生错误。
  • [7] Err_TxBuf:发送缓冲错误。
  • [8] Err_RxBuf:接收缓冲错误。
  • [9] Err_RedundancyCheck:数据校验错误。

Asc_Master:串口主站

串口主站指令将串口通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。
串口主站通讯任务按照以下步骤完成一次主站与从站的通讯:

  • 发送请求数据
  • 等待从站应答
  • 接收从站数据
参数名称数据类型读写方向说明
EN能流输入当EN使能时,将通讯任务写入对应串口的任务队列。如果任务已经在队列中,则只更新任务状态。
PortUSINT输入通讯串口。
TxUSINT输入发送数据存放的首地址。
TxLengthUINT输入发送数据的数量。
RxUSINT输入接收数据缓冲的首地址。
RxBufLengthUINT输入接收数据缓冲的大小。
Check USINT 输入 是否发送和检查通讯校验字节:
  • [0] Check_None:无附加校验字节。
  • [1] Check_Crc16_BE:发送和检查CRC16校验,高字节在前。
  • [2] Check_Crc16_LE:发送和检查CRC16校验,低字节在前。
  • [3] Check_Lrc8:发送和检查LRC校验。
RxLengthUINT输出实际接收数据的数量。
DoneBIT输出0:通讯未完成;1:通讯完成或失败。
Error USINT 输出 通讯失败的原因:
  • [0] Err_None:无错误。
  • [1] Err_Port:串口不存在。
  • [2] Err_TaskQueueFull:通讯任务队列满。
  • [3] Err_Parameter:参数错误。
  • [4] Err_Transmit:发送数据时发生错误。
  • [5] Err_WaitTimeout:等待从站应答超时。
  • [6] Err_Receive:接收数据时发生错误。
  • [7] Err_TxBuf:发送缓冲错误。
  • [8] Err_RxBuf:接收缓冲错误。
  • [9] Err_RedundancyCheck:数据校验错误。