ModBus
文章平均质量分 65
学习,开发过程中笔记总结
armwind
这个作者很懒,什么都没留下…
展开
-
Modbus Poll v9.9.2 Build 1690 Modbus测试工具单文件版
Modbus poll 单文件版本,不需要注册码转载 2022-06-06 21:38:35 · 1262 阅读 · 0 评论 -
Modbus-RTU状态机接收数据帧的方式(串口 or DMA)
传统单片机一般具有串口外设,有一些还具有DMA。针对没有DMA外设的单片机,只能使用方式1了,每个字节的串口数据都会产生串口中断。而对于具有DMA的单片机,我们可以使用方式2,当接收到一帧后才会产生中断,这样就不会频繁打断主程序运行。Modbus的一帧串口接收缓存最大为256个字节,所以接收到一帧数据,会产生256个串口中断。但串口中最好只做数据接收操作。不要有过多的耗时动作,不然会丢数据的,也影响主循环的实时性。1. Modbus 数据帧接收方式1-串口中断这种方式,在每次收到一个字节的数据原创 2022-05-21 09:22:33 · 4175 阅读 · 0 评论 -
ModbusTCP/Modbus RTU by TCP
gdgdgfsdfsdfdfsdfModbus TCP1.ModBUS TCP协议介绍其实就是加了个协议头,以及去掉RTU报文的CRC校验码 * <------------------------ MODBUS TCP/IP ADU(1) -------------------------> * <----------- MODBUS PDU (1') ----------------> * +-----------+-------------原创 2022-05-12 20:15:19 · 1047 阅读 · 0 评论 -
Modbus xMBUtilSetBits函数注释
该方法用来设置线圈的数据,贴上部分代码。我们知道Modbus为数据为大端模式(高地址放在低位,低地址放在高位),这样可以按着我们的习惯来设置IO数据。如下为设置多个线圈帧。今天就以这样的组合看modbus协议如何发送和解析的协议帧的。下图是我的测试记录,可以看到差异差异就是倒数第3个字节框选1:发送的报文Tx:008108-01 0F 0B B8 00 10 02 03 00 43 68框选2:发送的报文Tx:008116-01 0F 0B B8 00 10 02 03 C0 43 38 下面原创 2022-05-03 15:04:06 · 978 阅读 · 0 评论 -
STM32串口发送中断踩坑
今天想测试下Modbus设备,手上暂时没有串口转485的模块,就打算用手上的stm32f042的开发板做个串口转485模块。如下所示但是软件实际开发过程中,遇到了麻烦。现象: 在打开串口接收中断时,串口会一直产生除接收中断外的其它中断,非常奇怪。 USART_ITConfig(InitPort, USART_IT_RXNE, ENABLE); //使能接收中断通过查手册发现,在打开接收中断时,默认会打开溢出中断下面的方式是不能清除溢出中断标记。 if (USART_GetFlag原创 2022-05-02 20:31:40 · 5285 阅读 · 0 评论 -
FreeModBus主从机联调
这个周末一直在调试FreeModBus,事先已经对ModBus协议有了初步认识,并且也阅读过FreeModBus源代码。看着代码很简单,本以为半天功夫就可以移植后,可确花了2天时间。现在整理下调试笔记。主机复位后发送请求数据,然后进入无休止的发送状态在定时器时间调试不完全的情况下,容易出现断言错误接收模式时有时会接收到无效帧T35_50US时序调整1.主机复位后发送请求数据,然后进入无休止的发送状态此中情况发生在Master设备上,主要是由于发送数据打包后,我们需要发送一个(void)xMB原创 2020-06-03 07:18:27 · 1178 阅读 · 1 评论 -
FreeModbus添加主机功能
经过前面几个夜晚的学习,此刻已经在FreeModbus中添加了主模式的代码,特此记录下添加心得体会。代码添加还是很容易,就是要保证数据准确的发送出去文章目录1. 添加前的思考2. 添加工作模式(ASCII,RTU)接口2.1 接口描述2.2 接口注册过程3. 添加数据打包过程3.1 接口介绍3.2 接口实现4. 实验演示1. 添加前的思考在添加主模式代码前,深入的分析了FreeModbus源...原创 2020-02-14 23:11:38 · 3683 阅读 · 2 评论 -
FreeModbus ascill工作模式数据接收发送分析
文章目录1. ASCII帧结构介绍2. FreeModBus ASCII工作模式发送数据代码分析3. FreeModBus ASCII工作模式接收数据代码分析前面分析代码一直是拿RTU工作模式来分析的,不知道ascill工作模式有何不同。其实除了帧起始和末尾格式有些差异外,其它基本是一致的。大概的差异点有下面几点1.ASCII是以字符’:‘开始,以回车 换行结束-’\r,’\n’(CR,LF...原创 2020-02-14 21:37:22 · 961 阅读 · 0 评论 -
FreeModbus串口移植注意事项
FreeModbus串口移植因为要考虑到实时性,这部分还是很重要的。为了保证实时,使用中断还是很有必要的。下面以RTU的工作模式为例。文章目录1. 串口接口描述2. 串口接收方法xMBRTUReceiveFSM()2.1 串口xMBPortSerialGetByte()移植示例2.2 xMBRTUReceiveFSM移植示例3. 串口发送方法xMBRTUTransmitFSM()3.1 软件循环...原创 2020-02-13 23:05:25 · 1558 阅读 · 2 评论 -
FreeModbus状态机和事件总结
从FreeModbus源码中能够发现有很多状态机,了解这些状态机能更快的理解FreeModbus源码流程。下面逐个接受各个状态机的流程和驱动机制。由于modbus有3种封包模式ASCII,RTU,TCP,这里就以最常用的RTU为例,从源码进行分析,此例程为源码中的win32例程,不过不影响探究流程。文章目录1. FreeModbus 串口接收状态机1.1.系统后设置工作状态为`STATE_RX_...原创 2020-02-12 23:06:39 · 3740 阅读 · 1 评论 -
Modbus代码和软件结构简介
在这里先感谢下FreeModbus作者Christian Walter,让我们能学到开放的ModBus源码。不过源码中只有从设备的代码,但这已经足够了,后面有时间添加主模式代码。学习之前先了解下代码结构和各个模块的功能。文章目录1.freemodbus-v1.6源码下载2.FreeModbus源码目录1.freemodbus-v1.6源码下载外国的网站可能有点慢,坚持下载下来吧。https...原创 2020-02-11 23:01:56 · 1082 阅读 · 0 评论 -
Modbus常用功能码简介
1.常用功能码日常开发常用的功能码就那几个,基本都是读取传感器数据,配置参数。其它的功能很少用。对主设备来说,外部输入的变量,如开关量,传感器的数据都是只读的,因为这些取决于外部条件。对从设备来说是可以读写的,因为主设备和具体的执行设备之间还隔了一层从设备,主设备获取数据,需要经过从设备。代码中文名称位操作/字操作操作数量主设备访问权限从设备访问权限01读线圈状态...原创 2020-02-10 22:23:12 · 3175 阅读 · 0 评论 -
Modbus协议简介
这两天把Modubs重新看了一下,之前只是简单的使用没有系统总结。关于Modbus协议的讲解,官方文档讲解的非常清楚,不多说。下面记录下学习笔记文章目录1.Modbus数据类型2. Modbus请求帧结构3.Modbus响应帧结构1.Modbus数据类型Modbus是一种简单的软件协议,说它简单,可能大家在日常工作学习中也有这样类似的用法,只是没有形成体系软件而已。Modbus包含4种数据结...原创 2020-02-10 22:14:54 · 2448 阅读 · 0 评论