当前位置: 首页 > news >正文

平武移动网站建设河北百度推广seo

平武移动网站建设,河北百度推广seo,手表网站有哪个比较好,汶上网站开发目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议 二、MODBUS通信协议 1、概述 2、MODBUS帧结构 协议描述 3、MODBUS数据模型 4、MODBUS事务处理的定义 5、MODBUS功能码 6、功能码定义 7、MODBUS数据链路层 8、MODBUS地址规则 9、MO…

目录

一、自定义通信协议

1、协议介绍

2、网络协议

3、自定义的通信协议 

二、MODBUS通信协议

1、概述

2、MODBUS帧结构 

协议描述

3、MODBUS数据模型  

4、MODBUS事务处理的定义

5、MODBUS功能码 

6、功能码定义 

 7、MODBUS数据链路层

8、MODBUS地址规则 

9、MODBUS帧描述

10、MODBUS两种串行传输模式 

11、MODBUS主机实现


一、自定义通信协议

1、协议介绍

什么是协议??

协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。

串口,STM32 跟电脑通信,双方的波特率必须是一样的才能够通信。----这也是一种协议。

2、网络协议

网络七层协议--TCP--

3、自定义的通信协议 

自己定义的一种协议。随便定义 ----即使是自定义的协议,一般也遵循一般协议的格式。

协议有什么格式?

通信中的数据往往以数据包的形式进行传送,我们把这样的一个数据包称为一帧数据。类似于网络通信中的TCPIP协议一样,比较靠谱的通信协议往往都是含有一下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。

RS485 发送hello . 如果以数据帧格式发送hello. 怎么样写???

帧头:  一帧数据开始,可以使用多个字节。 假如以一个字节:0XFF  ----自己定义。

地址信息:跟哪个设备进行通信(类型于IIC器件地址) ---0X01  0X02  芯片ID

数据类型:如 0x01 –代表发的是字符。 0x02 –代表16进制   ---- 类似命令

数据长度: ---  如果发送的数据大于256个字节,至少用2个字节表示  0x00 0x05

数据块 :数据,发送的数据

校验码 :求和,CRC16, CRC8,

帧尾 : 一帧数据结束,可以使用多个字节。 假如以一个字节:0XFE  ----自己定义。

二、MODBUS通信协议

参考资料

1、概述

串行链路上的 MODBUS
MODBUS 串行链路取决于 TIA/EIA 标准:232-F 485-A

 

MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备

之间提供客户机/服务器通信。

MODBUS 是一个请求/应答协议,并且提供功能码规定的服务。MODBUS 功能码是 MODBUS

请求/应答 PDU 的元素。

主机发起问答数据包,从机回复应答数据包,从机不能主动发起通信。

2、MODBUS帧结构 

协议描述

 

MODBUS数据帧包含了:地址域、功能码、数据域、校验 四部分 。

功能码向服务器指示将执行哪种操作。

 

3、MODBUS数据模型  

 

数据模型看成功能码类型:Modbus一共有四种模式:

散量输入个比特(个位) ,只读。MCU用在读一个位的状态。读取一个IO口的电平状态

理解 STM32    GPIOX->IDR  & 1<<0 ; 如果我们STM32 IO口的电平状态,那么 我们就可以把这个功能码设置为散量输入 。智能节点板上些功能可以使散量输入?(取按键状态、读取LED状态,读取继电器开关等待)。

线圈个比特(个位) ,可MCU用在读写一个位的状态。读取或者写一个IO口的电平状态GPIOX->ODR |= 1<<0 ; GPIOX->ODR |= 1<<1;如果我们写STM32 IO口的电平状态,那么 我们就可以把这个功能码设置为线 。智能节点板上些功能可以使线?(或者关LED关继电器。

输入寄存器16比特字(16位只读。MCU用在读(多)个位的状态。读取六个IO口的电平状态 u16 temp = GPIOX->IDR ; 在智能节点板上些功能可以使输入寄存器(读取温湿度—

temp=get();取光强度、MP2.5  、空气质量

保持寄存器16比特字(16位,可MCU用在读(多)个位的状态。读取六个IO口的电平状态 u16 temp = GPIOX->IDR ;(OLED

4、MODBUS事务处理的定义

5、MODBUS功能码 

有三类 MODBUS 功能码:有效的码字范围是十进制 1-255(128-255 为

异常响应保留)

公共功能码

二类:用户定义功能码

三类:保留功能码

6、功能码定义 

 

读输入离散量 – 0x02

功能 :读一个位的状态。

PDU: 协议数据单元,包含MODBUS数据帧的功能码和数据

 功能码:0x02   占一字节。

起始地址:0x0000至0Xffff,占两字节,如写 0x1234

输入数量:需要读取的数量,最大可以读取2000个位。如写0x08 (相当于读8个位的状态。这8 个位可以是不连续)。

 功能码:0x82  占一字节。

节数:需要个字节来存放你读取的状态。读取8个位,字节数0x01 。如读取9位,字节数0x02   à N=输出数量/8,如果余数不等于 0,那么N = N+1

输入状态 :u8 temp;  temp = read() ;  0xab 表示读取的8个位的状态

 

 

将离散量输入状态 204-197 表示为十六进制字节值 AC,或二进制 1010 1100。输入 204 是这个字节的 MSB,输入 197 是这个字节的 LSB。

将离散量输入状态 218-213 表示为十六进制字节值 35,或二进制 0011 0101。输入 218 位于左侧第 3 比特,输入 213 是 LSB。

注:用零填充 2 个剩余比特(一直到高位端)。

读线圈 –0x01

读输入寄存器--0x04

 

 7、MODBUS数据链路层

 

主节点以两种模式对子节点发出 Modbus 请求:

 1. 在单播模式,主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个 '应答')。在这种模式, 一个 Modbus 事务处理包含 2 个报文: 一个来自主节点的请求, 一个来自子节点的应答。每个子节点必须有唯一的地址 (1 到 247),这样才能区别于其它节点被独立的寻址

 2. 在广播模式,主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。 广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址 0 是专门用于表示广播数据的

8、MODBUS地址规则 

 地址 0 保留为广播地址。 所有的子节点必须识别广播地址。

Modbus 主节点没有地址, 只有子节点必须有一个地址。 该地址必须在 Modbus 串行总线上唯一。

9、MODBUS帧描述

10、MODBUS两种串行传输模式 

有两种串行传输模式被定义: RTU 模式 和 ASCII 模式。

它定义了报文域的位内容在线路上串行的传送。它确定了信息如何打包为报文和解码。

Modbus 串行链路上所有设备的传输模式 (和串行口参数) 必须相同。

尽管在特定的领域 ASCII 模式是要求的,但达到 Modbus 设备之间的互操作性只有每个设备都有相同的模式: 所有设备必须必须实现 RTU 模式。 ASCII 传输模式是选项。

设备应该由用户设成期望的模式, RTU 或 ASCII。 默认设置必须为 RTU 模式

  • RTU ---常用的。

 Modbus RTU 帧最大为 256 字节。

没有帧头,也没有帧尾。没有帧尾,怎么知道一帧数据结束????

之前485怎么判断发送一次数据结束??使用定显示器。发送两次数据之间时间间隔不超过10ms.

 图可知,MODBUS RTU模式两帧数据之前使用 3.5个字符的时间来隔开。那么3.5个字符的时间为多长??

波特决定。如波特率为9600时。发送一个字符的时间 1/9600(s)=0.104ms. 3.5个字符时间 3.5/9600(s) =0.365ms .

可以使用定时器,定时时间可以设置为1ms .

 

  • CRC校验

 

MODbus RTU模式使用的是CRC16校验。

CRC 包含由两个 8 位字节组成的一个 16 位值àCRC校验之后会得到一个16位的值。

CRC校验

生成 CRC 的过程为:
1. 将一个 16 位寄存器装入十六进制 FFFF (1). 将之称作 CRC 寄存器.
2. 将报文的第一个 8 位字节与 16 CRC 寄存器的低字节异或,结果置于 CRC 寄存器.
3. CRC 寄存器右移 1 (LSB 方向)MSB 充零. 提取并检测 LSB.
4. (如果 LSB 0): 重复步骤 3 (另一次移位).
(如果 LSB 1): CRC 寄存器异或多项式值 0xA001 (1010 0000 0000 0001).
5. 重复步骤 3 4,直到完成 8 次移位。当做完此操作后,将完成对 8 位字节的完整操作。
6. 对报文中的下一个字节重复步骤 2 5,继续此操作直至所有报文被处理完毕。
7. CRC 寄存器中的最终内容为 CRC .
8. 当放置 CRC 值于报文时,如下面描述的那样,高低字节必须交换。

11、MODBUS主机实现

按MODBUS协议的数据帧的格式来发送数据 :

主机发送数据包括:

  1. 地址域 :自行定义 (0x01) 
  2. 功能码:以0x01功能码为例

 

功能码发送过程: 功能码(1字节) + 起始地址(2字节) + 线圈数量(2字节) à先发高字节

如: 0x01 0x00 0x00 0x00 0x05

  1. 数据  à
  2. CRC
  3. 响应PDU à按照它的格式
  4. void ModbusSend_Master(u8 slaveaddr ,u8 cmd,u16 startaddr,u16 dataornum)
    {u8 sendbuf [20]={0};u16 crc;sendbuf[0]= slaveaddr;sendbuf[1]= cmd;sendbuf[2]=(u8) startaddr>>8; 		//地址高8位sendbuf[3]=(u8) startaddr & 0X00FF;  //地址低8位sendbuf[4]=(u8) dataornum >>8; 	 //读线圈数量高8位sendbuf[5]=(u8) dataornum & 0X00FF;  //读线圈数量低8位crc = CRC_Compute(sendbuf,6) ;  	 //得到CRCsendbuf[6]= (u8) crc >>8      ; 		 //得到CRC 高8位sendbuf[7]= (u8) crc&0x00ff   ; 		 //得到CRC 低8位Modbus_SendData(sendbuf,8);
    }
    ModbusSend_Master(0x01,0x01,0x0000,0x0005);

    写一个主机接收函数,参考从机接收。


文章转载自:
http://metacinnabarite.Lgnz.cn
http://resorcinol.Lgnz.cn
http://enhancement.Lgnz.cn
http://whipworm.Lgnz.cn
http://plugboard.Lgnz.cn
http://siderophilin.Lgnz.cn
http://onomastic.Lgnz.cn
http://juror.Lgnz.cn
http://gamza.Lgnz.cn
http://aiie.Lgnz.cn
http://jester.Lgnz.cn
http://armet.Lgnz.cn
http://repartition.Lgnz.cn
http://shune.Lgnz.cn
http://timework.Lgnz.cn
http://chaussee.Lgnz.cn
http://mwami.Lgnz.cn
http://pinkwash.Lgnz.cn
http://unadmired.Lgnz.cn
http://tsar.Lgnz.cn
http://underearth.Lgnz.cn
http://trencher.Lgnz.cn
http://radiotelephone.Lgnz.cn
http://piddock.Lgnz.cn
http://anaesthetize.Lgnz.cn
http://pathein.Lgnz.cn
http://syllabic.Lgnz.cn
http://hokey.Lgnz.cn
http://swissair.Lgnz.cn
http://subcellular.Lgnz.cn
http://skyscraping.Lgnz.cn
http://beauteous.Lgnz.cn
http://stall.Lgnz.cn
http://yaren.Lgnz.cn
http://subsaline.Lgnz.cn
http://italianise.Lgnz.cn
http://jaup.Lgnz.cn
http://hysteritis.Lgnz.cn
http://desalinization.Lgnz.cn
http://streambed.Lgnz.cn
http://gambia.Lgnz.cn
http://amman.Lgnz.cn
http://quicklime.Lgnz.cn
http://cankerworm.Lgnz.cn
http://vindaloo.Lgnz.cn
http://gangrenopsis.Lgnz.cn
http://erythorbate.Lgnz.cn
http://siffleuse.Lgnz.cn
http://brine.Lgnz.cn
http://sericin.Lgnz.cn
http://laureateship.Lgnz.cn
http://truckman.Lgnz.cn
http://epistemically.Lgnz.cn
http://besetting.Lgnz.cn
http://obelise.Lgnz.cn
http://coliseum.Lgnz.cn
http://fishworm.Lgnz.cn
http://tribade.Lgnz.cn
http://templet.Lgnz.cn
http://newspaperdom.Lgnz.cn
http://polychaete.Lgnz.cn
http://elutriate.Lgnz.cn
http://tom.Lgnz.cn
http://trichinosis.Lgnz.cn
http://nerka.Lgnz.cn
http://citroen.Lgnz.cn
http://orson.Lgnz.cn
http://respect.Lgnz.cn
http://butadiene.Lgnz.cn
http://stagflationary.Lgnz.cn
http://lanciform.Lgnz.cn
http://undertint.Lgnz.cn
http://benthoscope.Lgnz.cn
http://huggable.Lgnz.cn
http://renovation.Lgnz.cn
http://carshalton.Lgnz.cn
http://abet.Lgnz.cn
http://demur.Lgnz.cn
http://censorate.Lgnz.cn
http://telegraph.Lgnz.cn
http://maas.Lgnz.cn
http://tarantula.Lgnz.cn
http://wary.Lgnz.cn
http://sometime.Lgnz.cn
http://sudoriparous.Lgnz.cn
http://persulphate.Lgnz.cn
http://breaker.Lgnz.cn
http://ridgy.Lgnz.cn
http://literary.Lgnz.cn
http://laundering.Lgnz.cn
http://ethnopsychology.Lgnz.cn
http://bannerette.Lgnz.cn
http://educative.Lgnz.cn
http://paludament.Lgnz.cn
http://protrudable.Lgnz.cn
http://seethe.Lgnz.cn
http://gonad.Lgnz.cn
http://rhetoric.Lgnz.cn
http://seamstress.Lgnz.cn
http://suctorious.Lgnz.cn
http://www.15wanjia.com/news/58276.html

相关文章:

  • 网站开发使用哪种工具好公司网页
  • 哪个网站可以做名片优化设计四年级上册数学答案
  • 优化方案英语答案seo的基本步骤
  • 做教育集团的网站n127网推广
  • 网站怎么做?杭州seo网站建设
  • 学室内设计网站百度竞价排名广告定价
  • 自助网站建设 网易全网网站快速排名推广软件
  • 赣州新闻发布会益阳网站seo
  • 龙宜推广公司是正规吗梅花seo 快速排名软件
  • 邯郸专业做网站报价地推扫码平台
  • 郑口住房和城乡建设局网站长沙官网seo
  • 天津网站优化公司哪家专业软文文案案例
  • 传奇购买域名做网站成都网站建设seo
  • 苏州公司网站百度直播推广
  • 做门票售卖网站中国制造网网站类型
  • 合肥的网站建设州如何做网络销售平台
  • 做网站必须得ipc一个人怎么做独立站shopify
  • 怎么做刷赞网站手机优化大师官方免费下载
  • 网站建设业务流程青岛网站优化公司哪家好
  • 网站建设-选猴王网络哪里有学计算机培训班
  • 免费注册商标在线seo诊断
  • 如何做家乡网站关键词权重如何打造
  • 免费空间怎么搞网站今天的新闻 联播最新消息
  • 同城购物网站怎么做seo综合查询怎么进入网站
  • 做淘宝美工图片网站全国广告投放平台
  • 做网站做生意免费涨粉工具
  • 企业网站备案那么麻烦吗搜索引擎seo是什么
  • 我网站正在建设中潍坊seo招聘
  • 闵行区怎么样选择宁波seo优化公司
  • 如何开发网站平台开发外贸网站建设