当前位置: 代码迷 >> 综合 >> Modbus RTU Master源代码解读
  详细解决方案

Modbus RTU Master源代码解读

热度:93   发布时间:2023-12-18 09:11:11.0
  1. 文件功能
    1. user_mb_m.c:回调函数,用于拆包(根据协议)
    2. portevent_m.c:管理事件,主要用于切换状态机
    3. portserial_m.c:串口移植
    4. porttimer_m.c:定时器移植,定时器有2个用途
      1. 接收超时时间(一般是1秒)
      2. T3.5计时,用于判断接收完一帧
    5. mb_m.c:主站系统的外部调用函数
    6.  mbfuncxxxx_m.c:协议功能函数,用于打包(请求)
    7.  mbrtu_m.c:RTU协议函数(modbus还包括tcp)
    8.  mbutils.c:多功能工具包,包括位操作等一些工具函数
  2. 以下是主站的流程图
  3. 主站初始化以后,占用以下资源
    1. ModbusMasterRequeset 线程:打包数据,请求处理、根据回应进行处理(error)
    2. eMBMasterPoll线程:发送数据、接收数据、拆包、响应请求
    3. 串口中断:发送数据、接收数据、切换状态机
    4. 定时器TIM中断:接收超时、T3.5计时、广播自动结束,主要用于切换状态机和判断接收超时错误
  4. 以下是2个线程、2个中断的时序
  5. Requeset 线程和 Poll 线程公用公开的资源
    1. 接收缓存区:ucMasterRTUSndBuf,数据往里面放,供另外一个线程使用
    2. 发送缓存区:ucMasterRTURcvBuf,数据往里面放,供另外一个线程使用
    3. myEvent01Handle(OS event:事件标志组,用于线程挂起以及恢复)
      1. Requeset 线程等待的事件
      2. EV_MASTER_PROCESS_SUCESS         /*!< Request process success. */EV_MASTER_ERROR_RESPOND_TIMEOUT  /*!< Request respond timeout. */EV_MASTER_ERROR_RECEIVE_DATA    /*!< Request receive data error. */EV_MASTER_ERROR_EXECUTE_FUNCTION    /*!< Request execute function error. */

         

      3. Poll 线程等待的事件
      4. EV_MASTER_READY                     /*!< Startup finished. */EV_MASTER_FRAME_RECEIVED         /*!< Frame received. */EV_MASTER_EXECUTE                 /*!< Execute function. */EV_MASTER_FRAME_SENT            /*!< Frame sent. */
        EV_MASTER_ERROR_PROCESS        /*!< Frame error process. 找不到对应的回调函数(拆包函数) */

         

  6. 串口使能函数  vMBMasterPortSerialEnable(),在定时器中断中会使用(FALSE,FALSE)
    1. 如果  DE  RE是2个GPIO引脚,则把2个引脚都关闭
    2. 如果DE/RE是1个引脚,不是接受就是发送,则打到发送状态
  7. 重点注意
    1. 主站start函数(eMBMasterRTUStart)会调用一次  接收使能,此处不合理,可以杠掉
    2. 相比从站代码,主站在接收的时候会切换SndState,供定时器中断判定是否为超时
    3. 超时判断=“已发送”  并且  “没有接收”  并且 “进入时间中断”
    4. 主站需要不断修改定时器的ARR(接收超时  T3.5  切换),因此定时器的  AutoReloadPreload 千万不能使能。否则ARR不会实时更新(要等到下一次中断发生才会更新)
    5. 定时器ARR是16位,超过会溢出。按照一般的配置,超时时间不能超过3726ms,否则会溢出,实际ARR并不是想要的数据
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  相关解决方案