串口接收问题
- 使用定义好的USART0接收时一直无法在PC端接收到数据。
- 问题解决。接线错误,对485认识不够。485在通信时只需要接对AB两根线,D+接A,D-接B,共地即可。
- 串口接收中断。
- 问题解决。直接使用中断中的RX_buffer[]数组会有数据丢失问题,需要使用经过断包处理的UART_in数组来接收。
- 注意
- 串口连续发送会出现未知数据。
- usart0的UART0_in由于丢包问题需要移位使用。
CRC校验问题
- 本次校验使用CRC16-MODBUS标准。其中校验位低位在前,高位在后。
- 在底层库中已经有封装好的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的主机指令接收分析
- 测试连续设置蠕动泵相关参数
- 控雨系统控制程序完善
- 水位传感器的操作逻辑
- 死区之类的控制参数需要设置吗
Comments