通信方法-电动折弯机数控滚圆机滚弧机张家港钢管滚圆机滚弧机折
作者:lujianjun | 来源:欧科机械 | 发布时间:2019-06-13 14:29 | 浏览次数:

基于STM32芯片,提出一种Modbus-RS485通信方法,本方法采用面向对象的思想管理Modbus通话和串口具备通用性,可方便移植到具有相同特点的其它系统。提出使用状态机结合日志来管理Modbus通信,使得通信网络具备自诊断和自适应功能;结合STM32芯片特点和Modbus协议规定,提出一种和Modbus命令长度无关的DMA接收数据方法。本方法可作为解决Modbus-RS485通信效率低、数据传输慢的参考方案。收发器。系统结构如图1所示,图中每个I/O端口连接一条RS485总线。图1系统结构图Fi系统中,主站和从站的串口设置,包括:波特率、停止位、奇偶校验等重要匹配。RS485总线上的Modbus协议使用半双工主从方式通信,主站发起Modbus通话向从站发出请求,从站则处于接收状态,一直等待主站发送的数据。2系统中的对象在RS485总线下主站通过Modbus请求数据帧访问从站,通信程序中如果直接为每个功能设计写定一段请求帧,虽然程序看起来比较直观,但是这种方式丧失了通用性,且可维护性差。在系统移植时,需要变更程序内请求帧。因此要将运算时的变量和实际操作变量的函数分离。在系统中的Modbus通话是有限的,可将通话封装成任务。将通信系统中的所有任务的描述,以XML配置文件的方式得到保存。XML文件可用一个专门的上位机生成,当需要增加、删除、修改功能时,就可通过上位机来重新生成配置文件,并将配置文件导入到单片机中,单片机通过文件解析程序构建任务对象。本文由公司网站滚圆机网站采集转载中国知网资源整理!www.gunyuanji.name任务对象定义可见表1。表1任务定义Tab.1Taskdefinition属性名称描述属性名称描述Index任务的编号cmd数组,存放请求数据帧PortIndex任务对应的端口号Cmdlen数据帧长度DeviceAddr设备地址rcvCmd指针,通信方法-电动折弯机数控滚圆机滚弧机张家港钢管滚圆机滚弧机折弯机倒角机指向接收数组Function功能码RcvLen接收数据长度RegAddr寄存器地址TErrorCount超时错误计数Interval任务的扫描周期送错误计数Timeout任务超时时间接收错误计数Timer任务的执行时间Traffic任务执行次数计数status枚举,任务状态Enable任务?判断当前数据是否接收完毕。数据接收完毕后对数据进行解析。解析包括CRC校验、设备地址的检查。如果解析失败,则跳转到P如果解析成功,则将数据的接收地址和接收的长度通过任务指针告知给任务对象。(6)当端口处于Port_SendError、Port_Timeout、Port_ReceiveError异常状态时,会将状态反馈给任务。4.2任务状态机任务对象定义中,status是一个枚举类型,任务包含了10个状态,任务状态转换如图4所示。图4任务状态机Fig.4Taskstatemachine设计任务状态机时有一个前提条件:正确的命令可能会收到正确的回复数据,不正确的命令一定收不到正确的回复数据。因此在任务状态机中增加Task_Retry状态,尽可能保证发出的请求命令是正确的。图4中,rescheduleTime表示任务再次发起的时间,该值为任务开始进入Task_Retry的系统时间systemTime加扫描周期Interval。任务状态机的处理流程可分述如下。(1)开始任务对象处于Task_Idle状态。当有任务执行时,跳转到Task_Check状态,检查要绑定的是否被占用。(2)如果端口被占用,放弃当前任务,跳转到Task_Idle状态。如果没有被占用,则跳转到Task_Bind状态。(3)任务会把命令数组的地址和长度告知给端口,跳转到Task_Schedule状态。(4)当任务对象接收到端通信方法-电动折弯机数控滚圆机滚弧机张家港钢管滚圆机滚弧机折弯机倒角机本文由公司网站滚圆机网站采集转载中国知网资源整理!www.gunyuanji.name