作品名称:移动modbus主站
作者:shileiwu0505
一、项目背景
本人从事农业传感器行业一年有余,目前农业传感器这一块传输协议大部分都是modbus通讯协议,在传感器采集数据采集基本都在野外农田,每个传感器厂家都会有不同类型的手持机进行采集,但是配套的手持机价格昂贵,“移动modbus主站” 可以完美解决该问题。
二、作品简介
农业传感器厂家的用的都是modbus协议,设备使用modbus 30 功能码采集32个寄存器出来(一般32个足够),进行数据显示,显示支持无符号、有符号和16进制显示,使用K2 切换显示模式,K1切换屏幕显示地址
2. 如图上所示,从机地址0数据是123, 主机也显示123,从机地址1数据是-123,主机也显示-123
3. 上图是有符号显示
三、系统框图
main.c 对各个功能模块初始化,包括modbus主站查询代码初始化,代码解析并屏幕显示代码初始化,按键代码初始化;串口接受可以使用采用了不定长接受原理,启动串口接受的时候顺带启动了一个5ms的软件定时器,每次接受到一个字节,就会重新复位定时器,知道没有接收到数据,定时器超时后认为接受完一包数据。
四、各部分功能说明和解析
1. key.c key.h
包含了按键驱动初始化,采集开发板K1 K2两个按下的状态
2. mb_modbus.c mb_modbus.h
包含了modbus主站查询代码,CRC16校验代码,大小端转换代码,数据处理和屏幕显示代码
3. font.h screen.c screen.h
包含了字符串相关字模,1206和1608两种,重新编写屏幕显示代码,使用缓存打点方式显示数据,使用方法更简单
4. uart1_port.c uart1_port.c
重新编写了串口驱动程序,由原来的串口0改为了串口1,其中串口1引脚是驱动OLED的,将OLED的驱动引脚映射到了其它引脚上了
五、作品源码
工程文件压缩后约21.4MB 。
六、视频演示
七、项目总结
1、项目总结:
本项目学习了RVB2601的串口接收、屏幕和IO使用,对RVB2601有了深入的了解,