MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】

学习资料参加左侧群信息

1.Modbus通信协议.pdf

2.Modbus调试精灵1.024.rar

3.主机源码.rar

4.育灵科技视频


第一节 通讯的硬件协议机制 主从模式的建立

目的:实现在modbus的从机实现

1.硬件层协议   解决传输问题,相当于路

2.软件层协议   

 

举例:

例如RS232 发送1是多少V,发送0是多少V

485协议

这个硬件芯片是厂商做到一起的,一般需要有一根控制线用开判断是哪种模式   

                          MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】_第1张图片

CAN硬件协议也是类似的

1: 都是2.5V   没有压差

0:一个1.5V,一个3.5V    有一个压差

还有I2C,SPI  都是有自己的硬件协议,大同小异,都是一样的理解,很简单的

 

大致说下单工半双工

1.单工模式:方向只能朝一个方向去

2.半双工:通过协调可以实现两个方向的传输

485若想实现半双工的模式,需要软件层来指定

最简单的方式:引入一个主从模式,

--只有一个主机

-- 485的一个规则,任何时候,从机不能主动把数据发回来主机

所以软件层就是交通规则

 

第二节 硬件层半双工通讯方式的实现

--上电后主机和从机都需要一直处于监听状态

--任何一次的通讯都需要主机的发起

软件层比较常见的就是modbus协议

就是一种预先约定的格式,不用自己定义了,移植性好,适配性好

解决通用问题

 

基本模式

1.转为发送状态

2. ---首先,主机发出一组寻址命令帧,找谁,干什么

3.立刻转为接受状态,等待从机的执行回应,一定要有回应,也是按照modbus来回应

 

所以之后无论设计哪种协议,都是考虑两方面

硬件协议

软件协议

 

第三节 基于485的modbus协议,确定主机取地址帧格式

主要使用与一主多从的模式

modbus可以应用于很多硬件,232,i2c,spi,网线,都是可以的

所以说  基于485的modbus协议,其实是硬件加软件

                          MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】_第2张图片

 

网络就是多主机,can通信也是多主机模式

就是一个通过硬件的技术解决 ,防冲突载波监听技术

就是每次发都会自己仲裁下,知道仲裁成功才会开始发自己的数据

1.

但是485不具备,所以485只能有一个主机,从机必须有唯一的地址

就是写程序的人在从机中定义了一个变量,modbus的地址是从0 --- 247号

其中0号地址是广播地址,是主机保留的,若是包头是0的话,就是要把包发给所有的从设备,所以0号地址从机是不予回应的

从机回应主机的时候,需要加上自己的地址,不会干扰其他从机

 

2.数据结构,也就是modbus的主机寻址帧的高格式

   ---RTU方式   十六进制方式

   0x03   00000011

 

    ---ASC方式 ---都是换算为ASSIC传送

0x03  分成两个0x30和0x33,需要传两次,所以效率是比较低的

 

计算机打印ASSIC码是32到126,所以会出现下边的方式,所以调试的时候很方便,可以外接一个显示器进去

 

第四节 RTU的机制及数据传输实现方式

RTU方式

                       MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】_第3张图片

 

怎么知道发送完毕,就是发送之后停止3.5个字符,接受数据停止时间超过3.5个字节,就认为主机寻址帧完成,开始停止

怎么计算:

例如:波特率 9600

每位数据传输的时间 :大约是4个微秒

MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】_第4张图片

若是停止没有3.5个字节时间,又发送指令,之前的指令是会被放弃的

这是RTU模式唯一的难点

 

RTU模式是没有开始与结束标志的,就是靠时间来约定,所以就需要硬件一个定时器,一个串口

 

第五节 ASC方式

有明确的开始的标志:先发一个0x3A,就是一个冒号 :

MODBUS协议剖析 【MODBUS协议在STM32上实现 - 上】_第5张图片

 

LRC模式

就是相加求和,除以256求余数(肯定是0到256的数),取反再加一,就是求补码的过程

结束符号   \r  \n   就是  13   10

 

从机的反馈问题:

1.回应包的数据格式是一致的

2.正常的回应时,功能码与主机的功能码一致(1-127)

   异常的回应:在收到的功能码加128,这也是程序判断的依据

 

从机的实现:

1.具备串口

2.具备毫秒级定时器

 

 

 

你可能感兴趣的:(STM32深入剖析实践)