Modbus-RTU和Modbus-TCP协议模板(C语言).doc

Modbus-RTU和Modbus-TCP协议模板(C语言).doc

ID:59324803

大小:94.50 KB

页数:33页

时间:2020-09-05

Modbus-RTU和Modbus-TCP协议模板(C语言).doc_第1页
Modbus-RTU和Modbus-TCP协议模板(C语言).doc_第2页
Modbus-RTU和Modbus-TCP协议模板(C语言).doc_第3页
Modbus-RTU和Modbus-TCP协议模板(C语言).doc_第4页
Modbus-RTU和Modbus-TCP协议模板(C语言).doc_第5页
资源描述:

《Modbus-RTU和Modbus-TCP协议模板(C语言).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Modbus-RTU和Modbus-TCP协议模板(C语言)目录简介:2Modbus-RTU简介:2Modbus-TCP简介:3System.h:4CRC_Check.h5CRC_Check.c5Modbus_RTU.h8Modbus_RTU.c10Modbus_TCP.h27Modbus_TCP.c27简介:在单片机内部实现modbus协议,可以简单地将变量的值映射到modbus寄存器地址,这种方法是高效的,但是有以下缺点:1、通常不支持一条指令操作多个变量(寄存器);2、可移植性较差。本模板使用8位数组模拟modbus寄存器。06,10指令均

2、对数组进行写操作,同时记录寄存器的写入操作,在其他地方定时判断“写入标志”,将“写入标志”置位的“模拟寄存器”的值转移到相关变量,或进行其他操作。03指令读取最新数据,要求定时将变量的值写入“模拟寄存器”。本模板缺点是占用资源较多、效率较低,优点是完整支持了modbus的03,06,10指令。Modbus-RTU简介:1、Modbus读寄存器指令(0x03)地址(1B)+功能码(1B)+起始地址(2B)+寄存器数量(2B)+CRC(2B)返回:地址(1B)+功能码(1B)+字节数(1B)+数据值(2*“寄存器数量”Bytes或者“字节数”)+CR

3、C(2B)2、Modbus写单个寄存器指令(0x06)地址(1B)+功能码(1B)+寄存器地址(2B)+数据值(2B)+CRC(2B)返回:地址(1B)+功能码(1B)+寄存器地址(2B)+数据值(2B)+CRC(2B)(返回与发送的指令相同)3、Modbus写多个寄存器指令(0x10)地址(1B)+功能码(1B)+起始地址(2B)+写寄存器数量(2Bn)+字节计数(1Bn*2)+数据(n*2B)+CRC(2B)返回:地址(1B)+功能码(1B)+起始地址(2B)+写寄存器数量(2B)+CRC(2B)Modbus-TCP简介:在MODBUS-RT

4、U前添加6个字节,并删除MODBUS-RTU的CRC校验。示例指令:0051000000090110000100010200006个字节部分称为“MBAP报文头”示例:0051000000090051是客户端发出的校验信息,服务端原内容返回即可0000表示modbus-tcp协议0009表示后面还有9个字节后面部分:01100001000102000001设备地址10表示10指令0001起始地址0001写寄存器数量02字节计数0000数据响应指令:005100000006011000010001System.h:#ifndef_SYSTEM_H_

5、#define_SYSTEM_H_#include"stm32f10x.h"//=======================不常改动项==========================================/******stm32f10x.h第505、506、507行已经定义了u32,u16和u8******///typedefunsignedcharu8;//typedefunsignedshortintu16;//typedefunsignedintu32;//typedefunsignedcharINT8U;//typedef

6、unsignedshortintINT16U;//typedefunsignedintINT32U;//typedefsignedcharint8_t;//typedefsignedshortintint16_t;//typedefsignedintint32_t;//typedefsignedlonglongintint64_ttypedefunsignedlonglongintu64;typedefunsignedcharbool_t;#defineFALSE0#defineTRUE!FALSE#defineNULL0#endifCRC_Ch

7、eck.h#ifndef_CRC_CHECK_H_#define_CRC_CHECK_H_#include"system.h"u16CRC16_Verify(u8*puchMsg,u16usDataLen);#endifCRC_Check.c#include"CRC_Check.h"/**高位表*/staticconstu8auchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,

8、0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。