MODBUS
文章平均质量分 69
ba_wang_mao
目标:(1)、熟练使用FreeRTOS嵌入式操作系统编写单片机程序。(2)、初步熟悉C#和MySQL编写比较简单可靠的C/S架构的TCP通信程序及B/S架构的WEB SERVER程序。(3)、简单熟悉阿里云物联网开发技术(单片机端SDK开发和上位机端SDK开发)。
展开
-
STM32-modbus rtu 之从机程序
以前移植过freemodbus,这次是自己重新写,只实现保持寄存器的读写。一、串口这部分跟上一篇文章主机程序一样,DMA接收,直接发送。二、错误反馈/*发送 错误反馈*/void mb_sentACK( u8 cm,u8 err){ u16 temp; serialTXbuf_st.buf[0] = local_addr; serialTXbuf_st.buf[1] = cm+0x80; serialTXbuf_st.buf[2] = err;...转载 2021-04-12 13:35:29 · 1805 阅读 · 0 评论 -
STM32-modbus rtu 之主机程序
一、STM32串口的发送与接收考虑到modbus的使用场合大多为半双工而非全双工,所以,串口接收采用DMA+空闲中断,发送则直接发送。 #include "serial.h"#include "string.h"_serialbuf_st serialRXbuf_st;_serialbuf_st serialTXbuf_st;/*DMA接收数据缓存*/u8 g_uart1DmaRXBuf[UART_DMARX_SIZE]; /*说明:3个串口直接发送函数编写:林...转载 2021-04-12 12:24:55 · 4626 阅读 · 0 评论 -
STM32F407单片机上开发MODBUS RTU 多主站程序(二)
前面一篇文章介绍了MODBUS RTU 多主站程序(一),现在介绍如何编写主站轮巡和解析程序。 由于STM32系列单片机可以用DMA方式接收串口通信,因此本文的串口通信用DMA实现。 一、主站轮巡超时定时器 由于主站发送完请求报文后,需要检测从站是否在规定的时间应答。 1、如果从站应答,就清除超时定时器的计时值同时让超时定时器停止,好主站下次开始发送请求报文时,重新开启超时定时器。...原创 2021-03-08 11:26:07 · 3044 阅读 · 17 评论 -
STM32F407单片机上开发MODBUS RTU 多主站程序(一)
我因为工程需要经常要在STM32F407上编写MODBUS RTU多主站程序。何谓多主站程序呢?即:1个工程项目的单片机系统需要编写多个MODBUS RTU主程序,例如:USART1需要编写1个MODBUS RTU主站程序,读取相关的数据;USART2需要编写1个MODBUS RTU主站程序,读取相关的数据。 按照一般的 我使用了队列+指针的方式实现MODBUS RTU多主站程序...原创 2021-01-08 17:07:41 · 5068 阅读 · 8 评论 -
FreeModbus源码详解
本篇按照FreeModbus协议栈的工作流程,对源代码进行总结解析;FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完整的报文后,对报文进行解析,然后响应主机,发送报文给主机,实现主机和从机之间的通信;1:demo.c中三个函数,完成协议栈的准备工作;eMBInit()函数:(mb.c)[cpp]view plaincopy/*函数功能:...转载 2019-12-30 15:43:08 · 2391 阅读 · 0 评论 -
Modbus TCPIP基础知识-------------ModbusTCPIP协议概述(一)
文章目录1 ModbusTcp1.1 MBAP报文 1.2 MODBUS请求的生成 1.3 MODBUS响应的生成 2 Modbus介绍 2.1 MODBUS数据模型 2.2 公共功能码定义 3 功能码描述 3.1 01(0x01)功能码---读线圈 3.2 02(0x02)功能码---读离散量输入 3.3 03(0x03)功能码---读保持寄存器 3....转载 2020-03-27 11:52:33 · 1432 阅读 · 0 评论 -
初识Modbus TCP/IP-------------C#编写Modbus TCP客户端程序(一)
先我要说明一下,本人新手一枚,本文仅为同样热爱学习的同学提供参考,有不对的地方还请大家热心指出,本文只起到一个抛砖引玉的作用,希望看到本文的同学可以从中学习到少许知识,也希望可以跟各位读者成为朋友,多多交流,使学习不再孤单寂寞。由于本文太长,顾分为两部分,第二部分连接初识ModbusTCP/IP-------------C#编写Modbus TCP客户端程序(二)http://...转载 2020-03-27 11:56:43 · 874 阅读 · 0 评论 -
Modbus TCPIP基础知识-------------C#编写Modbus TCP客户端程序(二)
前面已经讲解了有关ModbusTCPIP协议的有关内容,相关链接:https://blog.csdn.net/sgmcumt/article/details/87435191下面我们具体用一个C#的例程来说明一下ModbusTCP报文的数据组成和传输方法。使用的调试工具是Modbus Slave和Modbus Poll。工具的使用可参照:https://blog.csdn.net/byxdaz...转载 2020-03-27 12:08:54 · 1051 阅读 · 0 评论 -
C#ModBus Tcp 报文解析
本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文)读操作功能码 0x01 读一组线圈 读取站号为1 从地址12开始的10个线圈测试结果上一篇博客已经总结了读操作报文格式,就按照格式划分报文解析:注意:报文中线圈起始地址 00000 对应设备中 10001 地址,其他顺延功能码0x02 报文格式与功能码0x01一致,只是第八字节的功能码变为02 其他完全一致,不再重复解析功能码0x03 读一组保持寄存器 读取站号为1 从地址12开始的10...转载 2020-07-31 17:10:31 · 2877 阅读 · 4 评论 -
C# Modbus Rtu实现
Modbus Rtu的实现与Modbus Tcp的实现类似 C#ModBus Tcp的学习及Master的实现我们还是需要借用一个开源库NModbus4,在vs中.打开NuGet管理器.安装NModbus4具体实现,具体实现与之前的Modbus Tcp的实现类似 ,只是在实例化master时将TCPClient换为串行端口资源SerialPort,并在实例化时设置好端口所需参数(端口名,波特率,校验位,停止位,数据位)using System;using System.Collectio转载 2020-07-31 16:46:35 · 8867 阅读 · 9 评论 -
C# MODBUS TCP的学习及Master的实现
Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。所以这也是我们工控领域软件开发的所必懂的通讯协议,我也是初次学习,先贴上我的学习笔记.一 、协议概述1、Modbus协议是应用于控制器上的一种通用语言,实现控制器之间,控制器通过网络和其他设备之间的通信,支持传统RS232/RS422/RS485和以太网设备,它已经成为一种通用的工业标准,有了它不同厂商生产的控制设备可以连成工业网络,进行集中控制,此协议定义了一个控制器能认识...转载 2020-07-31 16:31:36 · 7182 阅读 · 1 评论 -
开源一套MODBUS主机代码(带讲解分析)
最近有用到modbus主机部分,网上搜索了一圈,没找到好用的现成的开源代码。之前用过freemodbus,只有从机的源代码是免费的,其他的都需要商业授权。既然这样,那就自己动手,丰衣足食……自己编写个modbus的主机代码,并且开源出来。modbus就不多介绍了,是工业上常用的通信协议。在物理层, Modbus 串行链路系统可以使用不同的物理接口(RS485、 RS232)。最常用的是RS485 两线制接口。modbus又是一个主从协议:同一时刻,在总线上只能有一个主机,其他作为从机。并且从机不会主转载 2020-07-28 20:34:07 · 14294 阅读 · 14 评论