附件这个从机 MODBUS的程序给你参考吧,下面是对应例程说明。如果你还是看不懂或者用不了,那我建议你先从最简单的只有通讯功能的短小程序写起(百度很多C资料),把通讯实现后,再去添加完善整个MODBUS功能。
参数配置:串口初始化函数中配置串口参数,默认使用温控器的串口5,波特率115200,8N1。 22.bin文件中可以配置是否启用modbussalve功能和设置modbus从机地址。 基于MODBUS SALVE方案MODBUS SALVE指令操作表如下:(设备地址默认为0x5A) 0x03:读DGUS VP变量地址数据 请求指令格式为: 从机地址 | | | | | 例:请求指Tx:5A 03 0000 0002 C920 从0x0000地址读2个变量数据 |
响应指令格式为: 从机地址 | | | | | 例:响应为 Rx:5A 03 04 0000 0000 10F6 |
0x06:写单个DGUS VP变量数据 请求指令格式为: 从机地址 | | | | | 例:请求指Tx:5A 06 1000 0002 01E0 将数据0x0002写入0x0000地址 |
响应指令格式为: 从机地址 | | | | | 例:响应为 Rx:5A 06 1000 0001 41E1 |
0x10:写多个DGUS VP变量数据 请求指令格式为: 从机地址 | | | | | | | 例:请求指令:5A 10 0000 0002 04 3132 3334 6D9E 向文本变量起始地址0000里面写3132 0001地址写3334 |
响应指令格式为: 从机地址 | | | | | 例:响应为 Rx:5A 10 0000 0002 4CE3 |
T5L平台Modbus salve移植主要功能函数在modbus.c和uart.c中 1.Modbus 串口初始化函数:voidModbus_Init(void) 修改Modbus所用的串口,并修改串口初始化的波特率,通信方式。默认为115200,如有需要,重新修改,降低波特率。 2.串口接收中断处理函数:voidUART5_RX_ISR_PC(void) interrupt 13 Modbus通信速度较慢,在串口接收中断中对接收的modbus指令进行CRC校验,从机地址默认为0x5A,modbus功能码只支持0x03 ,0x06和0x10,具体格式如上表格。 移植需要将此串口中断接收处理函数移植到对应串口接收中断中。 3.Modbus salve处理函数:voidModbus_Salve_Handler(void) 响应0x03,0x06和0x10功能码,异常码不响应,不处理。 移植需要修改对应串口接收缓存区。
|