调试经验 April 04, 2021

新唐控水控雨主机调试过程

Words count 2.6k Reading time 2 mins. Read count 0

串口接收问题

  • 使用定义好的USART0接收时一直无法在PC端接收到数据。
    • 问题解决。接线错误,对485认识不够。485在通信时只需要接对AB两根线,D+接A,D-接B,共地即可。
  • 串口接收中断。
    • 问题解决。直接使用中断中的RX_buffer[]数组会有数据丢失问题,需要使用经过断包处理的UART_in数组来接收。
  • 注意
    • 串口连续发送会出现未知数据。
  • usart0的UART0_in由于丢包问题需要移位使用。

    CRC校验问题

  • 本次校验使用CRC16-MODBUS标准。其中校验位低位在前,高位在后。
    • 中途出错,因为调用CRC函数时,返回值存储在u8数值中,造成了数据丢失。

      EEPROM问题

  • 在底层库中已经有封装好的EEPROM写入以及读取程序,出错原因是没有拉低写保护。

    MODBUS-RTU的理解

  • 不理解初始结构/结束结构 大于4字符的时间如何代码实现。

RS485问题

  • 485挂载多台设备如何实现。
    • 主机发送消息时,所有从机设备都会收到,但是需要将数据地址与自身地址做比较。 从机不能向主机主动发送数据。
  • 由于485采用半双工模式,所以必须采用轮询的方式来获取传感器数据,而且必须一问一答。即向一个传感器发送读取寄存器的指令后,马上读取串口中断接收函数。

蠕动泵

  • 使用何种算法。

控水系统

  • 用于控水的模糊控制算法
  • 设置死区; 控水量; 间隔时间;

控雨系统

  • 控雨系数为0,不需要向系统供水。
  • 控雨系数<1,减雨控制
  • 控雨系数>1,增雨控制
  • 通过降雨体积量乘以系数得出供水量,通过蠕动泵向土体供水。

疑问记录

  • 从机所控制的传感器地址是否需要留修改的接口。
  • 多个传感器如何接线。
  • 传感器的地址如何设定。
  • 主机向从机发送的代码示例。
  • 4个传感器的湿度数据是一直读取吗。
    - 解决 
  • 需要蒸渗仪水分变化的大致区间。
  • 需要读取的蠕动泵信息。
    - 暂时取自己需要的 
  • 关于传感器的安装位置,大田水分以及蒸渗仪水分如何取。
    - 大田水分取了最小值,蒸渗仪水分取了最大值
  • 蠕动泵何时启动关闭

任务完成度

  • 把各个串口的RS485接收\发送程序封装好。
    • 完成
  • 封装4个读取土壤传感器湿度的函数。
    • 完成
  • 蠕动泵指令调试,RS485-MODBUS-RTU 03 06 10指令的测试
    • 完成
  • 三串口调试
    • 完成
  • float to 16 C实现
    • 完成
  • 一条总线搭载多台设备的测试
    • 需要RS485集线器
  • EEPROM存储死区,间隔时间以及控水量
    • 完成
  • UART0的主机指令接收分析
  • 测试连续设置蠕动泵相关参数
  • 控雨系统控制程序完善
  • 水位传感器的操作逻辑
  • 死区之类的控制参数需要设置吗
0%