PLC
登录
直播中
张娟
8年用户
2248经验值
私信
关注
如何通过VISA编写Modbus通讯协议呢
开启该帖子的消息推送
通讯
协议
什么是Modbus通讯协议?
如何通过VISA编写Modbus通讯协议呢?
回帖
(1)
马知一
2021-9-29 15:27:12
***Labview的Modbus通信*** 我们在做labview的modbus通讯的时候通常使用的是,NI自带的DSC块或者是免费的自定义库。好处就是简单快捷稳定。当然任何事物是有两面性的,保证通用性和快捷性的同时带来的弊端是安装麻烦且不可灵活使用,如果遇到非标中的非标设备把你搞到头大。今天我介绍一下我平常使用的Modbus编程方式,并非标榜这种方法有多好,旨在分享和交流。
我通常使用VISA通过底层去编写Modbus通讯,今天我就来介绍一下如何用VISA实现Modbus通讯。
什么是Modbus通讯协议?
ModBus是Modicon公司为其PLC通讯而开发的一种通讯协议。如今Modicon公司已经被施耐德收购成为了施耐德旗下品牌。从1979年问世至今,已经成为工业通讯领域的业界标准,最初的ModBus仅支持串口,分为RTU和ACSII两种信号传输模式(一般基于RS485串口通信媒介)。而随着时代的变迁,ModBus新增了TCP版本,可以通过以太网进行通讯,此外ModBus还有一个Modicon专用的ModBus Plus版本。
以上是从百度复制的但是我要让大家注意一点:RTU采用CRC校验,而ASCII采用LRC校验(关于这两种校验后续的文章中会介绍)
如何通过VISA编写Modbus呢?
关于VISA串口通讯我们之前的章节有介绍,这里就不过多讲解,今天我们以台达温控器为例,讲解。
本案例用到的软件:Labview 2018
VISA2018驱动
本案例用到的硬件:台达温控器
我们可知道其读取和输入寄存器地址,假定我们现在设定波特率是:9600 ,RTU ,CRC校验 站地址1读取通道1的值。
即发送:01 03 1000 0002 C0 CB
解释:H01即 :机器地址:1# 16进制
H03即 :读取功能吗
H1000:读取数据开始地址
H0002:读取数据长度 我们现在是读取2位
C0 CB :校验码
到这里不明白?没关系我给你看张图
看懂这个数据格式就可以了
Labview程序编写
注意:读取和写入都是16进制 。在这里我们要做个50毫秒的延时,目的是给硬件反应时间。打开串口要及时关闭。串口也不可重复打开,这样会造成系统报错。
现在ok了?不不不!!!我们不要忽略CRC校验(这个后续文章会将这里就不多做介绍)。
写在结尾的话
关于VIAS 实现 Modbus串口通信我们今天就介绍到这里。这个方法不一定是最快捷的方法,但是一定是最灵活的。大家可以自己试试哦。
***Labview的Modbus通信*** 我们在做labview的modbus通讯的时候通常使用的是,NI自带的DSC块或者是免费的自定义库。好处就是简单快捷稳定。当然任何事物是有两面性的,保证通用性和快捷性的同时带来的弊端是安装麻烦且不可灵活使用,如果遇到非标中的非标设备把你搞到头大。今天我介绍一下我平常使用的Modbus编程方式,并非标榜这种方法有多好,旨在分享和交流。
我通常使用VISA通过底层去编写Modbus通讯,今天我就来介绍一下如何用VISA实现Modbus通讯。
什么是Modbus通讯协议?
ModBus是Modicon公司为其PLC通讯而开发的一种通讯协议。如今Modicon公司已经被施耐德收购成为了施耐德旗下品牌。从1979年问世至今,已经成为工业通讯领域的业界标准,最初的ModBus仅支持串口,分为RTU和ACSII两种信号传输模式(一般基于RS485串口通信媒介)。而随着时代的变迁,ModBus新增了TCP版本,可以通过以太网进行通讯,此外ModBus还有一个Modicon专用的ModBus Plus版本。
以上是从百度复制的但是我要让大家注意一点:RTU采用CRC校验,而ASCII采用LRC校验(关于这两种校验后续的文章中会介绍)
如何通过VISA编写Modbus呢?
关于VISA串口通讯我们之前的章节有介绍,这里就不过多讲解,今天我们以台达温控器为例,讲解。
本案例用到的软件:Labview 2018
VISA2018驱动
本案例用到的硬件:台达温控器
我们可知道其读取和输入寄存器地址,假定我们现在设定波特率是:9600 ,RTU ,CRC校验 站地址1读取通道1的值。
即发送:01 03 1000 0002 C0 CB
解释:H01即 :机器地址:1# 16进制
H03即 :读取功能吗
H1000:读取数据开始地址
H0002:读取数据长度 我们现在是读取2位
C0 CB :校验码
到这里不明白?没关系我给你看张图
看懂这个数据格式就可以了
Labview程序编写
注意:读取和写入都是16进制 。在这里我们要做个50毫秒的延时,目的是给硬件反应时间。打开串口要及时关闭。串口也不可重复打开,这样会造成系统报错。
现在ok了?不不不!!!我们不要忽略CRC校验(这个后续文章会将这里就不多做介绍)。
写在结尾的话
关于VIAS 实现 Modbus串口通信我们今天就介绍到这里。这个方法不一定是最快捷的方法,但是一定是最灵活的。大家可以自己试试哦。
举报
更多回帖
rotate(-90deg);
回复
相关问答
通讯
协议
谁知道labview中的
modbus
通讯
协议
和
VISA
通讯
有什么区别?
2016-04-22
12510
LabVIEW与台达PLC
通过
MODBUS协议
通讯
2016-10-06
7072
如何使用
modbus协议
实现labview的串口
通讯
?
2015-09-23
9710
labview, PT100采集模块,
modbus
通讯
协议
, 串口编程采集丢数
2016-02-01
3924
哪位大神能给个labview利用
modbus协议
进行串口
通讯
的例程啊?
2016-06-13
18099
基于LabVIEW的
Modbus
串口
通讯
协议
的实现
2018-10-16
14437
485通信,
Modbus协议
,如何
通过
Visa
函数对多个仪表串口轮询?
2014-01-04
9709
LabVIEW上位机
通过
485
通讯
对下位单片机控制,请问使用
VISA
串口该怎么
编写
指令
2019-04-09
4996
请问
MODBUS
通讯
协议
及PLC编程
通讯
实例有哪些
2021-09-29
1585
怎么可以用
modbus
_rtu
协议
通讯
?
2023-11-02
483
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分