Modbus通讯编程实例(一)

最近单独在写Modbus和现场总线的介绍,都是一些思路性质的介绍,不涉及具体的实例,可能很多童鞋还是觉得不够具体,因为我现在不做具体的编程调试了,所以直接些实例很费劲。参考了一些网上的和施耐德电气内部的资料,写成以下的案例,用了一些其他人的劳动成果,如果原作者在意版权问题,请联系我,我尊重您的所有权。

我的帖子里提过Modbus的功能码,常用的没几个,这里列出更多的(也不是全部):

功能码(十进制)十六进制说明
0101读线圈
0202读离散量输入
0303读保持寄存器
0404读输入寄存器
0505写单个线圈
0606写单个寄存器
0707读异常状态
0808诊断
110B获得事件计数器
120C获得事件记录
150F写多个线圈
1610写多个寄存器
1711报告从站ID
2216屏蔽写寄存器
2317读/写多个寄存器
2418读FIFO队列

DATA_EXCH功能块是用于Premium和M340传输数据到另外一台设备,这个功能块支持Modbus所有的功能码。DATA_EXCH用梯形图表示:

各个引脚定义:

ADR为地址引脚,对于PREMIUM系列需要使用ADDR功能块连接。
对于M340系列需要使用ADDM功能块连接。
TYPE为类型引脚,1为接受/发送,2为只接受,3为只发送。
EMIS为要发送表
RECP为接受表
GEST为交换管理表

实例一:读取N位(功能码01)

其中在EMIS数组中第一个字,低字节为功能码01,高字节为读取位的起始位1
第二个字,低字节为读取位的起始位1,高字节为读取位的长度5
第三个字,低字节为读取位的长度5
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的数据起始地址,2个字节的读取位的长度,所以长度为1+2+2=5

在TWIDO中赋值如下:

在RECP中第一个字为返回码

第二个字为读取的数据

Modbus通讯编程实例(二)

实例二:读取N字(功能码03)

其中在EMIS数组中第一个字,低字节为功能码03,高字节为读取字的起始地址1

第二个字,低字节为读取字的起始地址1,高字节为读取字的长度6
第三个字,低字节为读取字的长度6
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的数据起始地址,2个字节的读取字的长度,所以长度为1+2+2=5

在TWIDO中赋值如下

在RECP中第一个字为返回码

第二个字开始为读取的数据

Modbus通讯编程实例(三)

实例三:写单字(功能码06)

其中在EMIS数组中第一个字,低字节为功能码06,高字节为从站要写入字的地址11
第二个字,低字节为从站要写入字的地址11,高字节为主站写出字的地址90
第三个字,低字节为主站写出字的地址90
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的从站写入字地址,2个字节的主站写出字地址,所以长度为1+2+2=5

在主站赋值如下

在TWIDO中显示如下:

Modbus通讯编程实例(四)

实例四:写N字(功能码16)

其中在EMIS数组中第一个字,低字节为功能码16,高字节为从站要写入字的起始地址20
第二个字,低字节为从站要写入字的起始地址20,高字节为要写入字的长度3
第三个字,低字节为要写入字的长度3,高字节为2倍的要写入字的长度
第四个字~第六个字为主站写出字,高低字节顺序要相互转换
最后要在交换管理表的第四个字中定义这个报文字节的长度,为1个字节的功能码,2个字节的从站写入字地址,2个字节的写入字的长度,1个2倍的要写入字的长度,6个字节的主站写出字,所以长度为1+2+2+1+6=12

在主站赋值如下

在TWIDO中显示如下

另外注意刷新数据时,必须要把EN引脚断开一下才可以重新读取或写入。通过实验,把交换管理表的完成位(即GEST第一个字的最低位)放在EN引脚前不太好使,所以最好编个令牌循环指令。把令牌放在EN引脚前,当取得令牌时再读取或者写入。

功能码05:

modbus功能码04实例_Modbus通讯编程实例相关推荐

  1. modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了

    前言:小蓝上次分享了三菱PLC编程指令文章,有一位粉丝说还有标签,FB模块,以太网通讯,MODBUS,TCP通讯这些有的学的.所以今天就给大家带来CC-LINK通讯编程实例.如果看完还是不太明白怎么办 ...

  2. python程序实例讲解_python入门编程实例 python入门编程实例解析

    python入门编程实例 python入门编程实例解析 python入门编程实例及解析: 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...

  3. matlab简单程序实例视频,matlab编程实例100例.docx

    matlab编程实例100例 1-32是:图形应用篇33-66是:界面设计篇67-84是:图形处理篇85-100是:数值分析篇实例1:三角函数曲线(1)function shili01h0=figur ...

  4. 三菱modbusRTU通讯实例_三菱PLC通讯编程实例

    FX系列作为三菱基本款的PLC,它们之间的通讯方式分别如下:CC-LINK,N:N网络连接,并联连接. 1.CC-LINK连接 CC-LINK连接图如下: 对应的PLC可为FX1N.FX1NC.FX2 ...

  5. python函数编程实例_Python函数式编程实例详解

    本文实例讲述了Python函数式编程.分享给大家供大家参考,具体如下: 函数式编程就是一种抽象程度很高的编程范式,从计算机硬件->汇编语言->C语言->Python抽象程度越高.越贴 ...

  6. 三菱st语言编程实例_C语言编程实例39

    素数又称质数.所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除. 思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m ...

  7. linux c编程项目实例,Linux c编程实例_例子

    例一:字符与整型变量的实现 #include int main() { int c1,c2; char c3; c1='a'-'A'; c2='b'-'B'; c3='c'-; printf(&quo ...

  8. pq分解法潮流计算c语言编程 因子表,PQ分解法潮流计算编程实例.pdf

    PQ分解法潮流计算编程实例.pdf 电力系统分析电力系统分析 Power System AnalysisPower System Analysis PQ分解法编程实例分解法编程实例 通过本讲主要回答如 ...

  9. 三菱fx2n做从站的modbus通讯_三菱PLC编程实例分享

    三菱FX系列PLC与三菱变频器通讯应用实例(RS485) 三菱电机自动化 对象: ① 三菱PLC:FX2N + FX2N-485-BD ② 三菱变频器:A500系列.E500系列.F500系列.F70 ...

最新文章

  1. linux文本处理-grep
  2. ResourceLoader 获取资源
  3. one order event handling - event filtering
  4. excel匹配_Excel中的数据匹配和查找
  5. Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)
  6. 2021银行共探转型新动能:大行酝酿质变 小行跨越数字鸿沟
  7. 好看的扁平化大气IT个人简历网页模板
  8. ant design pro(二)布局
  9. python自定义规律绘制_ForMaiR - 自定义规则的邮件自动转发工具
  10. Atiitt 图像处理的常见功能业务用途与类库与功能实现 目录 1. 常见业务场景 2 1.1. 缩略图 2 1.2. 判断图像大小分辨率要求 长度 宽度 2 1.3. 图像格式 转换,,黑白图像
  11. bootstrap 折叠collapse失效
  12. C语言编程学习必备的一些网站,干货收藏!
  13. (一)【模电】(第一章 常用半导体器件)半导体基础知识
  14. 接口测试项目(非常值得练手)
  15. 微信公众号授权,支付,退款总结【shoucang】
  16. seo单页html模板,竞价单页模板设计思路
  17. html怎么把字做成动画效果,8个华丽的HTML5文字动画特效赏析
  18. 使用Python获取bing壁纸接口
  19. Postgre时间类型<>日期类型,坑了
  20. Android网络代理终极方案(适用于手机及电视盒子设备)

热门文章

  1. 诱人的低代码,未到狂欢时 | 钛媒体深度
  2. spss运行脚本 linux,从外部Python脚本运行SPSS会话操作
  3. QQ每天定时领取群礼物
  4. 河南省濮阳市谷歌高清卫星地图下载
  5. 32蜂鸣器天空之城代码_GitHub宣布已将所有代码永久封存!
  6. 青龙面板-服务器工具安装
  7. 记录——红外成像光学系统进展与展望
  8. 记录一次dns修复过程
  9. 嵌入式linux学习笔记-- 对于动态库的一些操作 dlopen
  10. 龙芯2k按键中断驱动_龙芯2k1000的中断处理逻辑