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通讯相关推荐

  1. 单片机modbus rtu通讯_【原创】永宏PLC系列RS485通讯方式

    实现的功能,及应用的场合 本项目为弯管机设备改造工程,在不破坏设备原有的功能的情况下通过只更换设备原来的永宏PLC,使弯管机能够与埃斯顿机器人进行信号交互,通过机器人对弯管机进行上料.下料动作,即节约 ...

  2. 丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟

    丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟,真心好用,别的变频器支持modbus rtu一样可以使用id ...

  3. 西门子串口通讯07-Modbus RTU 协议的多站点轮询(CP341,RS485)

    西门子串口通讯07-Modbus RTU 协议的多站点轮询(CP341,RS485) v-x-公–众–号:工控自动化老王 1.硬件列表 2.组态配置 3.编程 4.总结 1 硬件列表 设备名称 设备型 ...

  4. 三菱FX3U通讯(RTU)四台变频器的通讯程序

    三菱FX3U通讯(RTU)四台变频器的通讯程序 1.硬件:三菱FX3U PLC加fx3u485bd通讯板,四台三菱E700变频器,威纶mt6070触摸屏. 2.功能:通过rtu方式,可以控制四台变频器 ...

  5. 台达24es通讯(rtu方式)两台施耐德ATV310变频器示例

    台达24es通讯(rtu方式)两台施耐德ATV310变频器示例 施耐德变频器的rtu有一点麻烦,是和大多变频器通讯不一样,它有它的逻辑,但这并不妨碍我们和它的通讯,比如用台达plc来通讯,点动频率,加 ...

  6. 51单片机modbus通讯源码

    51单片机modbus通讯源码 编号:779655439312452自动化大学仕

  7. rs485与modbus流程图_基于Modbus协议的RS485总线通讯机设计原理及应用

    摘要:该文详细论述了基于Modbus协议的RS485总线通讯机设计原理及应用.物理结构上包括上位机.主站.和多个从站节点.在上位机与各从站节点间增加主站,承担上位机的轮询工作,使上位机从繁忙的通信工作 ...

  8. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  9. MODBUS主站调试工具和MODBUS从站调试工具 支持RTU、TCP、UDP三种模式

    MODBUS调试工具 C#源码 包含MODBUS主站调试工具和MODBUS从站调试工具 支持RTU.TCP.UDP三种模式 开发环境VS 2012/2015/2017,.NET Framework 4 ...

  10. 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯

    西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块 PTO控制20多个轴,100多个气缸,控制2台机器人. 5台PLC智能IO通讯,Modb ...

最新文章

  1. ×××linux下samba服务器
  2. 从《2018年全球创新指数报告》看中国创新力!
  3. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
  4. [深入浅出Windows 10]不同平台设备的适配
  5. OSPF 邻接关系建立
  6. Vue DevTools可使用修正方法
  7. 【已解决】运行Eclipse出错:Failed to load the JNI shared library
  8. 利用后退按钮进行重复提交的解决办法。
  9. 【PBRT】圆盘均匀采样,python实现
  10. ie11不兼容 html编辑器,修复kindeditor编辑器不兼容IE11问题
  11. 视频教程-备战2020毕业季—毕业设计论文实战课程讲解-.NET
  12. FFmpeg录制视频黑屏
  13. 松翰单片机SN8P2711AD实现AD转换的C语言程序例子
  14. 一般熟练盲打需要多久_话说。。用五笔打字的筒子们。。你们练了多久才能熟练的打出字啊。。...
  15. node-webkit(Windows系统) 打包成exe文件后,被360杀毒软件误报木马的解决方法
  16. MacBook外接显示器及相关设置详解(分屏/多屏)
  17. GPT-3写了一篇论文
  18. 一分钟教你们证件照如何换背景颜色,快来收藏
  19. 去掉 VC2017里输出:warning LNK4099
  20. 35、矩阵(稀疏矩阵)的压缩存储(一)

热门文章

  1. 计划任务 crontab、at
  2. 09-OpenLDAP加密传输配置
  3. zoj 1562 反素数 附上个人对反素数性质的证明
  4. C#出题库项目的总结(1)
  5. STL学习系列五:Queue容器
  6. IOS推送消息怎么实现icon图标的数字累加
  7. ictclas bug修复
  8. spring-注解实现入门
  9. MATLAB学习笔记(六)
  10. 在preferences窗口找不到要运行的tomcat_基于docker安装tomcat例子