2022年avr单片机中使用MODBUS协议的方法 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年avr单片机中使用MODBUS协议的方法 .pdf》由会员分享,可在线阅读,更多相关《2022年avr单片机中使用MODBUS协议的方法 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 Avr单片机中使用modbus协议的方法有幸做了个项目,其中使用到了单片机和上位机通讯的程序,上位机用组态实现功能,探索了些方法,写出来和大家分享一下,这些知识本不是什么秘密,本人参考了许多资料,自己整合了一下。每种程序都是算法多样,最终功能实现就行。大家做单片机串口通讯时是不是总想有一种以不变应万变的思想,就是在底层单片机硬件和软件不变的情况下,去适应任何上位机软件系统,当然可以实现,这就需要用到标准的通讯协议了,以下我就和大家分享一下我做的modbus协议(单片机端),如果上位机用组态软件的情况下,你直接使用通讯协议就行它会自动和单片机通讯。大家在设计单片机程序时首先要定义好数据结构,先
2、构想一下需要哪些采集数据,上位机需要查询什么数据,数据的类型和全局与否,运算的精度等等。然后把上位机需要采集的数据用一个数组管理起来,便于modbus协议的实现。单片机里串口通讯程序尽量用查询发送,中断接收的方式,要定义发送缓冲区和接收缓冲区,以便提高系统效率。以下程序用gcc 实现,单片机用avr 单片机。ISR(USART0_RX_vect)/串口 0 接收中断服务程序 volatile unsigned char status,data;cli();/关中断 status=UCSR0A;/ucsr0a赋值状态标志 data=UDR0;/接收的数据放入data 变量 usart0_rx_c
3、omplete=0;/接收完成标志赋值0,还没有完成 if(status&(FRAMING_ERROR0|PARITY_ERROR0|DATA_OVERRUN0)=0)/如果各标志位正确则,执行以下 usart0_rx_count+;/接收缓冲区指针加一 switch(usart0_rx_count)case 1:if(data=add/第一个字节是地址,读入内部本机地址进行比较 usart0_rx_buf0=data;TIMSK0=0 x01;/启动定时器0,进行超时控制 else 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -usart0_rx_count=0;b
4、reak;case 2:if(data=0 x03)|(data=0 x01)|(data=0 x05)|(data=0 x10)=0)/如果第一位不等于读指令0 x03,01,功能码,则清接收缓冲区指针 usart0_rx_count=0;else/等于这几个功能码则进行,则将他放入接收数组,并预计接收数组长度,不是10 码时都是8 个字节 usart0_rx_buf1=data;if(data!=0 x10)rx0_buf_size=8;break;case 3:usart0_rx_buf2=data;break;case 4:usart0_rx_buf3=data;break;case
5、5:usart0_rx_buf4=data;break;case 6:usart0_rx_buf5=data;break;case 7:usart0_rx_buf6=data;/10码时接收的字节计数 if(usart0_rx_buf1=0 x10)rx0_buf_size=9+usart0_rx_buf6;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -case 8:usart0_rx_buf7=data;/1,用 10 功能码时有效的数据位,system_reg_data的数据,这里规定最多接收26 个字节(不带crc)break;case 9:usar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年avr单片机中使用MODBUS协议的方法 2022 avr 单片机 使用 MODBUS 协议 方法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内