目錄
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協定通信有兩種方式:Modbus庫函數實作和VISA序列槽實作。下面分别介紹這兩種方式。
1、Modbus庫
Modbus庫主要是依托封裝好的LabVIEW VI庫,直接調用就可以實作Modbus通信。使用Modbus庫之前需要使用NI Package Manager進行安裝。
最簡單的方式就是直接搜尋Modbus,這裡我們選擇:LabVIEW NXG GModBus Over SerialLine工具包,串行通信就可以,如下圖所示:
還有一種方式安裝Modbus庫,搜尋下載下傳:LabVIEW資料記錄與監控子產品,如下圖所示:
這兩種方式下載下傳的ModBus庫均位于:函數→資料通信中,如下圖所示:
本篇博文将以LabVIEW資料記錄與監控子產品下載下傳方式的庫為例進行講解,主要原因是使用範圍廣泛,而且說明文檔詳實。
下面分享一下ModBus庫的使用代碼。
1.1、線圈操作
1.1.1、讀取線圈
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取8個數量長度的寄存器數值。
1.1.2、寫入單線圈
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址2寫入1個數量線圈寄存器(數值為:TRUE)。
1.1.3、寫入多線圈
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0寫入5個數量線圈寄存器(數值均為:TRUE)。
1.2、保持寄存器操作
1.2.1、讀取保持寄存器
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取4個數量長度的寄存器數值。
1.2.2、 寫入單個保持寄存器
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,将保持寄存器位址0寫入數值33。
1.2.3、寫入多個保持寄存器
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0寫入4個數量保持寄存器(數值為:1、4、6和8)。
1.3、讀取離散輸入
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址0讀取10個數量長度的寄存器數值。
1.4、 讀取輸入寄存器
以下示例打開COM3端口,通信速率115200/bps,序列槽模式為RTU模式,ID号為1,從起始位址1讀取4個數量長度的寄存器數值。
項目代碼下載下傳: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個數量長度的寄存器數值。
2.1.2、 寫入單線圈
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為05,ID号為1,從起始位址0寫入數值0。
2.1.3、 寫入多線圈
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為0F,ID号為1,從起始位址0寫入8個數量線圈寄存器,位元組數為1,數值為0。
2.2、保持寄存器操作
2.2.1、讀取保持寄存器
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為03,ID号為1,從起始位址0讀取4個數量寄存器。
2.2.2、 寫入單個保持寄存器
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為06,ID号為1,從起始位址1寫入數值0X0099。
2.2.3、寫入多個保持寄存器
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為10,ID号為1,從起始位址0寫入4個寄存器,位元組數為8,數值分别為:0X00、0X11、0X00、0X22、0X00、0X33、0X00、0X44。
2.3、讀取離散輸入
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為02,ID号為1,從起始位址0讀取8個數量長度的寄存器數值。
2.4、讀取輸入寄存器
以下示例打開COM3端口,通信速率115200/bps,Modbus功能碼為04,ID号為1,從起始位址1讀取4個數量長度的寄存器數值。
項目資源下載下傳:LabVIEW實作Modbus通信:VISA序列槽實作-嵌入式文檔類資源-CSDN下載下傳
拓展學習:
1、LabVIEW序列槽調試助手_不脫發的程式猿的部落格-CSDN部落格
2、LabVIEW儀器控制:智能顯示屏(數位管顯示屏)_不脫發的程式猿的部落格-CSDN部落格