Labview的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串口通信我们今天就介绍到这里。这个方法不一定是最快捷的方法,但是一定是最灵活的。大家可以自己试试哦。
作者简介:南山,90后技术宅,微信公众号:Labview高级社区 作者
下一篇: portupgrade 中文手册(翻译)