天天看點

LabVIEW實作Modbus通信

目錄

​​1、Modbus庫​​

​​1.1、線圈操作​​

​​1.1.1、讀取線圈​​

​​1.1.2、寫入單線圈 ​​

​​1.1.3、寫入多線圈 ​​

​​1.2、保持寄存器操作​​

​​1.2.1、讀取保持寄存器​​

​​1.2.2、 寫入單個保持寄存器​​

​​1.2.3、寫入多個保持寄存器​​

​​1.3、讀取離散輸入​​

​​1.4、 讀取輸入寄存器​​

​​2、VISA序列槽​​

​​2.1、線圈操作​​

​​2.1.1、讀取線圈​​

​​2.1.2、 寫入單線圈 ​​

​​2.1.3、 寫入多線圈 ​​

​​2.2、保持寄存器操作​​

​​2.2.1、讀取保持寄存器​​

​​2.2.2、 寫入單個保持寄存器​​

​​2.2.3、寫入多個保持寄存器​​

​​2.3、讀取離散輸入​​

​​2.4、讀取輸入寄存器​​

Modbus通信協定是儀器控制中常用的通信協定之一,基于Modbus協定可實作資料的讀、寫操作。

關于Modbus通信協定基礎知識可先通過以下文章進行了解:

​​一文看懂Modbus協定_不脫發的程式猿的部落格-CSDN部落格_modbus是哪層協定​​

​​Modbus協定在串行鍊路上的實作_不脫發的程式猿的部落格-CSDN部落格​​

​​Modbus協定完整中文版-硬體開發文檔類資源-CSDN下載下傳​​

Modbus隻是工業控制中常用的一種協定方式,本篇博文依舊是通過序列槽通信的方式實作基本的Mosbus操作。

Modbus協定常用功能主要包括四部分:讀寫線圈、讀取離散輸入、讀取輸入寄存器和讀寫保持寄存器,具體基礎知識可參見上文發的基礎知識連結。

LabVIEW實作Modbus通信

使用LabVIEW實作Modbus協定通信有兩種方式:Modbus庫函數實作和VISA序列槽實作。下面分别介紹這兩種方式。

1、Modbus庫

Modbus庫主要是依托封裝好的LabVIEW VI庫,直接調用就可以實作Modbus通信。使用Modbus庫之前需要使用NI Package Manager進行安裝。

最簡單的方式就是直接搜尋Modbus,這裡我們選擇:LabVIEW NXG GModBus Over SerialLine工具包,串行通信就可以,如下圖所示:

LabVIEW實作Modbus通信

還有一種方式安裝Modbus庫,搜尋下載下傳:LabVIEW資料記錄與監控子產品,如下圖所示:

LabVIEW實作Modbus通信

這兩種方式下載下傳的ModBus庫均位于:函數→資料通信中,如下圖所示:

LabVIEW實作Modbus通信

本篇博文将以LabVIEW資料記錄與監控子產品下載下傳方式的庫為例進行講解,主要原因是使用範圍廣泛,而且說明文檔詳實。

LabVIEW實作Modbus通信

下面分享一下ModBus庫的使用代碼。 

1.1、線圈操作

1.1.1、讀取線圈

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取8個數量長度的寄存器數值。

LabVIEW實作Modbus通信

1.1.2、寫入單線圈 

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址2寫入1個數量線圈寄存器(數值為:TRUE)。

LabVIEW實作Modbus通信

 1.1.3、寫入多線圈 

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0寫入5個數量線圈寄存器(數值均為:TRUE)。

LabVIEW實作Modbus通信

1.2、保持寄存器操作

1.2.1、讀取保持寄存器

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取4個數量長度的寄存器數值。

LabVIEW實作Modbus通信

1.2.2、 寫入單個保持寄存器

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,将保持寄存器位址0寫入數值33。

LabVIEW實作Modbus通信

1.2.3、寫入多個保持寄存器

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0寫入4個數量保持寄存器(數值為:1、4、6和8)。

LabVIEW實作Modbus通信

1.3、讀取離散輸入

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取10個數量長度的寄存器數值。

LabVIEW實作Modbus通信

1.4、 讀取輸入寄存器

以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址1讀取4個數量長度的寄存器數值。

LabVIEW實作Modbus通信

項目代碼下載下傳:​​LabVIEW實作Modbus通信:Modbus庫函數實作-嵌入式文檔類資源-CSDN下載下傳​​

2、VISA序列槽

VISA序列槽方式實作Modbus協定,本質上就是自己手寫協定幀,每一類幀格式都需要自己來編寫。

這裡可以再回顧一下LabVIEW序列槽通信的基礎知識:​​LabVIEW序列槽通信_不脫發的程式猿的部落格-CSDN部落格_labview 序列槽通信​​

2.1、線圈操作

2.1.1、讀取線圈

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為01,ID号為1,從起始位址0讀取8個數量長度的寄存器數值。

LabVIEW實作Modbus通信

2.1.2、 寫入單線圈 

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為05,ID号為1,從起始位址0寫入數值0。

LabVIEW實作Modbus通信

2.1.3、 寫入多線圈 

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為0F,ID号為1,從起始位址0寫入8個數量線圈寄存器,位元組數為1,數值為0。

LabVIEW實作Modbus通信

2.2、保持寄存器操作

2.2.1、讀取保持寄存器

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為03,ID号為1,從起始位址0讀取4個數量寄存器。

LabVIEW實作Modbus通信

2.2.2、 寫入單個保持寄存器

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為06,ID号為1,從起始位址1寫入數值0X0099。

LabVIEW實作Modbus通信

2.2.3、寫入多個保持寄存器

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為10,ID号為1,從起始位址0寫入4個寄存器,位元組數為8,數值分别為:0X00、0X11、0X00、0X22、0X00、0X33、0X00、0X44。

LabVIEW實作Modbus通信

2.3、讀取離散輸入

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為02,ID号為1,從起始位址0讀取8個數量長度的寄存器數值。

LabVIEW實作Modbus通信

2.4、讀取輸入寄存器

以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為04,ID号為1,從起始位址1讀取4個數量長度的寄存器數值。 

LabVIEW實作Modbus通信

項目資源下載下傳:​​LabVIEW實作Modbus通信:VISA序列槽實作-嵌入式文檔類資源-CSDN下載下傳​​

拓展學習:

1、​​LabVIEW序列槽調試助手_不脫發的程式猿的部落格-CSDN部落格​​ 

2、​​LabVIEW儀器控制:智能顯示屏(數位管顯示屏)_不脫發的程式猿的部落格-CSDN部落格​​ 

繼續閱讀