教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

STM32单片机的MODBUS通讯器毕业论文 - 图文(13)

来源:网络收集 时间:2026-05-05
导读: 35 基于单片机的MODBUS通讯器设计 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D,

35

基于单片机的MODBUS通讯器设计

0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 };

u16 CRC16(u8 *puckMsg,u8 usDataLen)//CRC16查表计算函数 { }

36

u8 uchCRCHi = 0xFF ; /* 高CRC字节初始化 */ u8 uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */ u32 uIndex ; /* CRC循环中的索引 */ while (usDataLen--) /* 传输消息缓冲区 */ { }

return (uchCRCLo << 8 |uchCRCHi) ; //高位在前

uIndex = uchCRCHi ^ *puckMsg++ ; /* 计算CRC */ uchCRCHi = uchCRCLo ^ AuchCRCHi[uIndex] ; uchCRCLo = AuchCRCLo[uIndex] ;

基于单片机的MODBUS通讯器设计

void Begin_Send() {

TxCounter1 = 0; }

//主机MODBUS程序

void ReadSlaveMCUData(u8 saddr,u8 fuctionnum,u16 startaddr,u16 count) {

u16 CRCData;

USARTSendBuff[0]=saddr;//从机地址 USARTSendBuff[1]=fuctionnum;//功能码 USARTSendBuff[2]=startaddr/256;//从机地址高 USARTSendBuff[3]=startaddr%6;//从机地址低 USARTSendBuff[4]=count/256;//读字节数高 USARTSendBuff[5]=count%6;//读取字节数低 CRCData=CRC16(USARTSendBuff,6);//返回CRC校验 USARTSendBuff[6]=(u8)CRCData;

USARTSendBuff[7]=(u8)(CRCData>>8);//加入CRC校验 SendByteNum=8; //送入要发送的字节数 //Send_Buf=TxBuffer1;

USART_SendData(USART1, USARTSendBuff[TxCounter1]); TxCounter1++;

Begin_Send(); }

37

基于单片机的MODBUS通讯器设计

附录6 从机通讯程序代码 #include #include \.h\#include\

unsigned char xdata receBuf[16]={0x01,0x01,10,11,12,13,14,9}; unsigned char xdata sendBuf[16]; unsigned int bdata s_bit;

unsigned char idata checkoutError;//用于偶校验; unsigned char idata receTimeOut=0;//接收超时 unsigned char testCoil; //用于测试 位地址1 bit b232Send;

unsigned int testRegister; //用于测试 字址址16 unsigned char localAddr = 2; //单片机控制板的地址 unsigned char sendCount; //发送字节个数 unsigned char receCount; //接收到的字节个数 unsigned char sendPosi; //发送位置 unsigned int get_Reg(unsigned int m);

void set_Reg(unsigned int m,unsigned int tempData); void set_Coi(unsigned int m,unsigned int s); unsigned int get_Coi(unsigned int m); extern unsigned int xdata Data_tab[20]; /* CRC 高位字节值表 */

const unsigned char code auchCRCHi[] = {

0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,

38

…… 此处隐藏:983字,全部文档内容请下载后查看。喜欢就下载吧 ……
STM32单片机的MODBUS通讯器毕业论文 - 图文(13).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/616166.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)