单片机modbus rtu通讯_Modbus-RTU通讯
Modbus 一个工业上常用的通讯协议、一种通讯约定。MODBUS-RTU,再单片机上很容易实现。
所以我们见到的很多仪表都采用的MODBUS-RTU协议 ,其物理层可以说是485,通常我们只需要A接A,B接B即可。最近呢,我是使用了一款正泰NKB1系列电机综合保护器,就以这个我们详细的说一下。
1、报文
一个报文就是一帧数据,就一串完整的指令。
2、数据格式
这里说的就是一个报文它包含的数据。
1)请求报文:就是由主站发送到从站的命令
请求报文
2)应答报文:从站返回的报文
应答报文
3、功能码
01H 读线圈
02H 读离散量输入
03H 读保持寄存器
04H 读输入寄存器
05H 写单个线圈
06H 写单个寄存器
15H 写多个线圈
16H 写多个寄存器
当然也需要查看厂家的通讯手册,会有一些差别
4、CRC校验
CRC就是为了验证数据的正确性,CRC计算比较麻烦,网上也有很多计算资料,现在呢有一些网站我将数据输入后,确认数据类型后自动计算出,链接在下边,非常的便捷,不用在头疼了。
http://www.ip33.com/crc.html
接下来我们具体看一下编程,这里使用的是西门子smart200系列的PLC与正泰NKB1系列电机综合保护器通讯
1)正泰NKB1功能码
2)要读取的数据
本次我们将读取0054H-0068H
3)PLC编程
1.初始化主站 需要始终接通
EN:使能
Mode:=1,将端口协议分配给Modbus
Baud:=19200 波特率
Parity:=2 偶校验
Port:=0 端口为0 本体自带的485通讯端口
TimeOut:=1000 默认1000
这里的参数设置需要与NKB1参数设置一样
2.请求报文
EN:使能
First:激活,这里必须使用边沿指令
Slave:=1 从站地址
RW:=1 写入
addr:=40078 ,这里需要大家特别注意需要与读指令结合起来看,我们是从0054H开始到0068H读取6个寄存器,而西门子PLC读取保持型寄存器的地址是从40001开始,那我们可以计算一下:
先将0054H变成10进制,也就是84,40001+84=40085就是我们要读取的地址,再通过上边请求报文中可以看出我们需要发送8个字节,但由于西门子PLC发送与接收都是以字为单位 所以我们需要发送5个字,那么用40085-5-1=40079,所以这里我们填入40079
Count:=5 就是上边我们要发送的字节
DATAPTR:=&VB300 这里呢是一个指针,指向我们存储命令的地址
所以我们需要发送的代码是
VB301 01
VB303 03
VB304 00
VB305 54
VB306 00
VB307 06
VB308 2B
VB309 84
注意数据格式中数据都是16进制
3.从站回复
EN:使能
First:激活,这里必须使用边沿指令
Slave:=1 从站地址
RW:=0 读取
addr:=40085 ,就是上边计算出的数据
Count:=11 ,根据上边读取数据表格来看前5个数据长度是4个字节,最后一个数据是2个字节,西门子PLC读取也是按照字读取,那么根据两个字节一个字,四个字节2个字的原则,这里我们需要11个字
DataPtr:=&VB2000 这里也是一个指针,指向数据存储的地址
3.读取数据
根据以上 从VB2000-VB2003是A相电流
VB2004-VB2007 是B相电流
以此类推!
谢谢大家的观看,多提意见,最近比较忙,更新不定时,请谅解!
单片机modbus rtu通讯_Modbus-RTU通讯相关推荐
- 单片机modbus rtu通讯_【原创】永宏PLC系列RS485通讯方式
实现的功能,及应用的场合 本项目为弯管机设备改造工程,在不破坏设备原有的功能的情况下通过只更换设备原来的永宏PLC,使弯管机能够与埃斯顿机器人进行信号交互,通过机器人对弯管机进行上料.下料动作,即节约 ...
- 丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟
丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟,真心好用,别的变频器支持modbus rtu一样可以使用id ...
- 西门子串口通讯07-Modbus RTU 协议的多站点轮询(CP341,RS485)
西门子串口通讯07-Modbus RTU 协议的多站点轮询(CP341,RS485) v-x-公–众–号:工控自动化老王 1.硬件列表 2.组态配置 3.编程 4.总结 1 硬件列表 设备名称 设备型 ...
- 三菱FX3U通讯(RTU)四台变频器的通讯程序
三菱FX3U通讯(RTU)四台变频器的通讯程序 1.硬件:三菱FX3U PLC加fx3u485bd通讯板,四台三菱E700变频器,威纶mt6070触摸屏. 2.功能:通过rtu方式,可以控制四台变频器 ...
- 台达24es通讯(rtu方式)两台施耐德ATV310变频器示例
台达24es通讯(rtu方式)两台施耐德ATV310变频器示例 施耐德变频器的rtu有一点麻烦,是和大多变频器通讯不一样,它有它的逻辑,但这并不妨碍我们和它的通讯,比如用台达plc来通讯,点动频率,加 ...
- 51单片机modbus通讯源码
51单片机modbus通讯源码 编号:779655439312452自动化大学仕
- rs485与modbus流程图_基于Modbus协议的RS485总线通讯机设计原理及应用
摘要:该文详细论述了基于Modbus协议的RS485总线通讯机设计原理及应用.物理结构上包括上位机.主站.和多个从站节点.在上位机与各从站节点间增加主站,承担上位机的轮询工作,使上位机从繁忙的通信工作 ...
- 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真
51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...
- MODBUS主站调试工具和MODBUS从站调试工具 支持RTU、TCP、UDP三种模式
MODBUS调试工具 C#源码 包含MODBUS主站调试工具和MODBUS从站调试工具 支持RTU.TCP.UDP三种模式 开发环境VS 2012/2015/2017,.NET Framework 4 ...
- 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯
西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块 PTO控制20多个轴,100多个气缸,控制2台机器人. 5台PLC智能IO通讯,Modb ...
最新文章
- ×××linux下samba服务器
- 从《2018年全球创新指数报告》看中国创新力!
- 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
- [深入浅出Windows 10]不同平台设备的适配
- OSPF 邻接关系建立
- Vue DevTools可使用修正方法
- 【已解决】运行Eclipse出错:Failed to load the JNI shared library
- 利用后退按钮进行重复提交的解决办法。
- 【PBRT】圆盘均匀采样,python实现
- ie11不兼容 html编辑器,修复kindeditor编辑器不兼容IE11问题
- 视频教程-备战2020毕业季—毕业设计论文实战课程讲解-.NET
- FFmpeg录制视频黑屏
- 松翰单片机SN8P2711AD实现AD转换的C语言程序例子
- 一般熟练盲打需要多久_话说。。用五笔打字的筒子们。。你们练了多久才能熟练的打出字啊。。...
- node-webkit(Windows系统) 打包成exe文件后,被360杀毒软件误报木马的解决方法
- MacBook外接显示器及相关设置详解(分屏/多屏)
- GPT-3写了一篇论文
- 一分钟教你们证件照如何换背景颜色,快来收藏
- 去掉 VC2017里输出:warning LNK4099
- 35、矩阵(稀疏矩阵)的压缩存储(一)