# Modbus通信 ## 任务要求 - 了解Modbus的基本概念 - 熟悉功能码0x01、0x03、0x0f、0x10 - 书写规格书 · 使用word文档书写 - 书写方案书 · 使用Visio绘制流程图 · 使用word文档书写 - 书写测试大纲 · 书写测试大纲以保证自身产品的正确性、稳定性 · 使用word文档书写 - 实现ModbusRTU主站(触摸屏) · 能够正常连接 · 能够判断连接断开 · 能够按要求生成请求帧 · 能够正确解析应答帧,并做相应处理 · 能够进行超时处理 · 拥有美观易操作的人机界面 - 实现ModbusRTU从站(PLC) · 能够正常连接 · 能够判断连接断开 · 能够正确解析请求帧 · 对于正确请求帧给出正确应答帧 · 对于错误请求帧给出错误应答帧或按规格给出相应的处理 附加功能: - 如果需要读取0x10000位置的寄存器该如何处理? - 如果需要读取所有单数个寄存器,如何提高读取效率? - 如果需要获取通信历史该如何处理? - 如果从机数据需要断电不丢失该怎么处理? - 提高人机交互的美观性及易用性。 注: - 该任务需要基于ucos移植实现 - Modbus学习需要书写相关学习笔记 - 线圈和寄存器范围都是0~0x270F - 要求方案书有明确的层级结构 - 最终实现代码需要与方案书相一致 - 代码书写需按照给定的代码规范完成 - 对于解析部分需要做对应的单元测试 - 代码管理空间为:``http://gitea.xinje.cc/TrainCamp_姓名全拼_Modbus.git`` - 目录结构如下图所示: TrainCamp_姓名全拼_modbus |---iar | |---settings | |---XXX.dep | |---XXX.ewd | |---XXX.ewp | |---XXX.eww | |---XXX.icf | +---startup_stm32xxx.s |---app | |---main.h | +---main.c |---cmsis | |---core_cm3.h | | . | | . | | . | +---tz_context.h |---drivers | |---inc | | +---stm32f103_gpio.h | +---src | +---stm32f103_gpio.h |---modbus +---.gitignore ## 任务器材 | 器材 | 数量 | | ---------- | --------- | | XDM-60T4-E/XDM-60T10-E | 1台 | | ST-LINK | 1个 | | 电源线 | 1根 | | USB-COM | 1个 | | XVP线 | 2根 | | TG765-MT | 1台 | ## XDM-60T4-E硬件信息 - 芯片型号: STM32F407IG ,晶振12MHz。 - 引脚信息 | 芯片引脚 | 实际作用 | | --------- | -------- | | I0 | PH10 | | I1 | PH11 | | I2 | PG8 | | I3 | PB4 | | I4 | PB5 | | I5 | PG12 | | I6 | PB6 | | I7 | PB7 | | I10 | PF10 | | I11 | PA15 | | I12 | PB3 | | I13 | PA14 | | I14 | PI4 | | I15 | PI5 | | I16 | PI6 | | I17 | PI7 | | I20 | PE2 | | Q0 | PF6 | | Q1 | PF8 | | Q2 | PF7 | | Q3 | PF9 | | Q4 | PI8 | | Q5 | PE6 | | Q6 | PE5 | | Q7 | PE4 | | Q10 | PG7 | | Q11 | PG6 | | Q12 | PH9 | | Q13 | PH8 | | Q14 | PH7 | | Q15 | PH6 | | Q16 | PF11 | | Q17 | PB0 | | Q20 | PH5 | | USART1_TX | PA9 | | USART1_RX | PA10 | ## XDM-60T10-E硬件信息 - 芯片型号:STM32F407ZG,晶振12MHz。 - 引脚信息 | 芯片引脚 | 实际作用 | | --------- | -------- | | I0 | PA0 | | I1 | PA1 | | I2 | PG8 | | I3 | PB4 | | I4 | PB5 | | I5 | PG12 | | I6 | PB6 | | I7 | PB7 | | I10 | PF10 | | I11 | PA15 | | I12 | PB3 | | I13 | PA14 | | Q0 | PF6 | | Q1 | PF8 | | Q2 | PF7 | | Q3 | PF9 | | USART1_TX | PA9 | | USART1_RX | PA10 |