日韩人妻无码AⅤ中文字幕你懂的,日本免费一区二区三区中文字幕,精品无码午夜福利理论片,乌克兰少妇XXXX做受野外

咨詢熱線:

400-808-5829

行業(yè)知識

大數(shù)據(jù)分析將與物聯(lián)網(wǎng)技術(shù)結(jié)合,實現(xiàn)更精確的預(yù)測和智能化決策

首頁物聯(lián)網(wǎng)百科行業(yè)知識
熱門關(guān)鍵詞: 5G網(wǎng)關(guān)5G千兆網(wǎng)關(guān)

modbus通訊協(xié)議功能碼怎么看?

發(fā)布時間:2024-01-16 瀏覽量:15972

?當使用Modbus作為通信協(xié)議時,有許多不同的解釋、術(shù)語和標簽來說明如何訪問各種設(shè)備中的不同類型的數(shù)據(jù)。有時,設(shè)備手冊只會提到支持的Modbus功能代碼以及這些功能代碼在哪個范圍內(nèi)可用。愛陸通幫助您了解modbus通訊協(xié)議功能碼。

Modbus的功能代碼(FC)是使用特定代碼的Modbus請求,在告知Modbus從設(shè)備訪問何種類型的內(nèi)存(如保持寄存器、輸入線圈等)以及對該內(nèi)存執(zhí)行何種操作(如讀取或?qū)懭耄┓矫嫫鹱饔?。下面的表格列出了TOPServerModbusSuite中包含的所有Modbus驅(qū)動程序用于通信的特殊Modbus功能代碼:


modbus通訊協(xié)議功能碼怎么看?

根據(jù)您在客戶端應(yīng)用程序中讀取或?qū)懭氲牡刂奉愋停ū3旨拇嫫鳌?nèi)部寄存器、輸入線圈或輸出線圈),這將決定TOP服務(wù)器Modbus驅(qū)動程序在處理您的實際協(xié)議請求時所使用的特定功能代碼設(shè)備。

在TOP服務(wù)器的Modbus驅(qū)動程序中,還有一些特別的設(shè)置,可以增加設(shè)備中不同Modbus實現(xiàn)的靈活性。我們稍后會介紹這些設(shè)置。

此外,在本文中沒有詳細介紹,但TOP服務(wù)器的Modbus靈活性進一步增強,可以支持特定的非標準驅(qū)動程序中的Modbus變體,例如EnronModbus、OMNIFlow、LufkinELAM、HoneywellUDC甚至基于YaskawaMemobus的驅(qū)動程序。

如何將Modbus功能代碼與尋址進行對應(yīng)?

就像我們之前提到的那樣,當我們討論Modbus協(xié)議和訪問特定數(shù)據(jù)位置(或內(nèi)存類型)時,一般有四種不同類型的Modbus地址:

保持寄存器是一個具有讀寫訪問權(quán)限的16位(模擬)地址,地址范圍在4xxxxx。

內(nèi)部寄存器是一種16位(模擬)地址寄存器,只能進行只讀訪問。

輸入線圈是一種具有只讀訪問權(quán)限的地址,該地址為1位(布爾)的1xxxxx。

輸出線圈是一種具有讀/寫訪問權(quán)限的位(布爾)地址,其地址為0xxxxx。

前一次我們曾經(jīng)討論過,設(shè)備文檔并不總是提供Modbus地址詳細列表,按照地址類型(例如4xxxx或保持寄存器)進行分類。

所以,因為我們正在更加詳細地討論Modbus功能碼,我們需要根據(jù)特定地址的內(nèi)存類型以及其讀寫能力來討論Modbus地址范圍。

這兩個因素決定了在向設(shè)備發(fā)送請求時所使用的Modbus功能代碼?,F(xiàn)在我們來討論每個功能代碼以及它們對應(yīng)的地址和功能的執(zhí)行。

Modbus功能碼1,以十六進制表示為0x01。

當需要讀取一個或多個(最多2000個)輸出線圈或0xxxxx類型的離散/布爾地址時,TOP服務(wù)器將使用該功能代碼。

在此列表下方,您將看到對功能代碼5和15的支持,即讀取和寫入訪問的線圈。

Modbus功能碼2表示讀取離散輸入,用十六進制表示為0x02。

當需要讀取多個(每次最多2000個)輸入線圈或1xxxxx類型的離散/布爾地址中的一個時,TOP服務(wù)器使用這個功能代碼。

在Modbus設(shè)備中,輸入線圈是只讀的,這意味著您無法使用功能代碼來寫入1xxxxx類型的地址。

Modbus功能代碼3(十六進制0x03)

當需要讀取一個或多個保持寄存器或4xxxxx類型的模擬地址時,TOP服務(wù)器會使用該功能代碼。每次最多可以讀取125個地址。

您可以使用功能代碼3來訪問保持寄存器中的不同位。只需在末尾加上一個.x的語法,其中x表示您想要讀取的寄存器中的位(例如,400001.0表示訪問保持寄存器偏移1的位0)。

由于保持寄存器在大多數(shù)支持Modbus的設(shè)備中是最常見的內(nèi)存類型,因此Modbus功能代碼3可能是最廣泛使用的功能代碼。

同時,寄存器保持了讀/寫訪問的狀態(tài),因此您可以在列表底部找到對功能代碼6和16的支持。

Modbus的功能代碼4,也表示為十六進制的0x04。

當需要讀取一個或多個(一次最多125個)內(nèi)部寄存器或3xxxxx類型的模擬地址時,TOP服務(wù)器會使用這個功能代碼。

除了保持寄存器,我們還可以使用功能碼4訪問內(nèi)部寄存器中的各個位。例如,我們可以使用4*u,e,300004.2來獲取基于1與0的位尋址的信息寄存器中的內(nèi)容。

在Modbus設(shè)備中,與輸入線圈類似,內(nèi)部寄存器也是只讀的。因此,您不會找到專門用于寫入3xxxxxx類型地址的功能代碼。

備注:是的,如果您留意到,F(xiàn)C3是用于訪問4xxxxx地址的,而FC4是用于訪問3xxxxx地址的,就好像FC1用于訪問0xxxxx地址,而FC2用于訪問1xxxxx地址一樣——這些并非打印錯誤。

Modbus的功能代碼5為十六進制0x05。

在寫入單個輸出線圈(0xxxxx)時,TOP服務(wù)器使用的是此功能代碼,也被稱為“強制”線圈。

Modbus功能碼6(十六進制0x06)

當TOP服務(wù)器寫入單個保持寄存器(4xxxxx)時,會使用此功能代碼,該寄存器也被稱為“預(yù)置”寄存器。

modbus通訊協(xié)議功能碼怎么看?

Modbus通信協(xié)議的功能碼是Modbus功能代碼15(十六進制0x0F)。

當在TOP服務(wù)器寫入多個輸出線圈(0xxxxx)時,通常會使用此功能代碼。不過,現(xiàn)在很多設(shè)備僅支持FC15對輸出線圈進行單次和多次寫入的情況,并且這種情況并不少見。

為了應(yīng)對這種情況,TOP服務(wù)器的Modbus驅(qū)動程序增加了一個特殊設(shè)置項,可以禁用"Modbus功能05"。當此設(shè)置被禁用時,驅(qū)動程序?qū)H使用FC15指令來對輸出線圈進行寫入操作。

modbus通訊協(xié)議功能碼怎么看?

十六進制代碼為0x10的功能代碼16

此功能代碼用于TOP服務(wù)器在寫入(預(yù)設(shè))多個保持寄存器(4xxxxx)時的操作。與FC15相似,設(shè)備制造商通常只支持FC16,可用于單次和多次寫入保持寄存器的情況,這是一種更經(jīng)濟的實現(xiàn)方式,只需要添加對一個與兩個功能代碼的支持。

為了解決這個問題,TOP服務(wù)器Modbus驅(qū)動程序還有一個設(shè)置選項,可以讓您禁用“Modbus功能06”。這樣一來,當您禁用該選項時,驅(qū)動程序?qū)⒅皇褂肍C16來進行對保持寄存器的所有寫入操作。

Modbus功能碼22(十六進制0x16)

這個功能是專為保持寄存器(4xxxxx)中的位寫入而設(shè)計的,它僅適用于單個事務(wù)。默認情況下,在TOP服務(wù)器的Modbus驅(qū)動程序設(shè)備屬性中是禁用的,因為許多Modbus設(shè)備不支持FC22,可以選擇支持其他方法。

另一種方法是默認且常用的方式,即對于保持在寄存器中的位進行讀取、修改和寫入操作。

當客戶端應(yīng)用程序向保持寄存器寫入位時,會出現(xiàn)以下情況:

正如您所料,這種常用的方法存在一些風險,尤其是當您的Modbus設(shè)備中的寄存器值經(jīng)常發(fā)生變化時。進行讀取/修改/寫入操作可能會導(dǎo)致位被更改為不正確的狀態(tài),因為之前的更改操作可能還沒有完成所需的時間。

舉個例子,假設(shè)我們正在對400001的第1位進行讀取/修改/寫入操作。如果在操作開始時第2位是“打開”的狀態(tài),但在寫入之前已切換為“關(guān)閉”,那么它將再次錯誤地被“打開”。

FC22的設(shè)計目標是通過直接修改保持寄存器中的特定位來規(guī)避潛在風險,同時保持其余位不受影響。然而,使用FC22需要確保實際的Modbus從設(shè)備支持該功能,而這種情況并非普遍存在。

所以,請確保您的設(shè)備是否真的支持FC22。如果支持,在TOP服務(wù)器的Modbus驅(qū)動程序的設(shè)備屬性中,您可以啟用“HoldingRegisterBitWrites”選項。

modbus通訊協(xié)議功能碼怎么看?

TOP服務(wù)器將會執(zhí)行一個FC3讀取,讀取整個寄存器。

接著,驅(qū)動程序僅修改出問題的位(這將改變保持寄存器16位值的整體值)。

然后根據(jù)設(shè)備的支持以及特殊設(shè)置的描述,將經(jīng)過修改的16位值寫回Modbus從設(shè)備,可以使用FC6或16功能碼。

因此,該函數(shù)的作用是確定正在訪問的內(nèi)存類型以及其讀寫操作。然而,該功能代碼與Modbus請求中的其他信息一起使用,這些信息包括所謂的偏移量。

如何將偏移尋址與Modbus功能碼結(jié)合使用?

TOPServerModbusSuite驅(qū)動程序可以支持多種不同類型的內(nèi)存地址范圍:

注冊賬號為:400001-465536

內(nèi)部存儲器的地址段為300001到365536。

請?zhí)峁┮粋€從100001到165536的輸入線圈編號范圍。

輸出線圈的編號從000001到065536。

我們支持的是1到65,536范圍內(nèi)所有內(nèi)存類型的偏移值。但是,關(guān)于偏移值的定義是什么呢?

通常情況下,解釋偏移量的方法是根據(jù)地址的首位數(shù)字(4、3、1或0)來確定驅(qū)動程序訪問的是哪種類型的內(nèi)存。首位數(shù)字后面的所有內(nèi)容構(gòu)成了偏移量,表示你所關(guān)注的特定內(nèi)存地址在該內(nèi)存類型中的位置。

在Modbus文件中記錄了保持寄存器的偏移量。TOP服務(wù)器聲稱它能夠支持以下偏移量:400140000140001400001。

在Modbus請求中,Modbus功能代碼和偏移量一起運作,它們用于指示設(shè)備返回或修改特定信息。

尋址Modbus可以采用兩種方式,分別是從零開始和從一開始。

零尋址是指設(shè)備的寄存器地址從0開始遞增,第一個寄存器的地址為0,第二個為1,以此類推。

一尋址是指設(shè)備的寄存器地址從1開始編號,第一個寄存器的地址為1,第二個為2,依次遞增。

對于Modbus通信協(xié)議,可以使用兩種不同的尋址方式,具體選擇哪一種方式取決于設(shè)備的要求和用戶的使用習慣。

當討論基于偏移的Modbus尋址時,還有一個關(guān)鍵的細節(jié)是設(shè)備是否支持零或一作為起始地址。最初,零作為起始地址是Modbus的預(yù)期實現(xiàn)方式。然而,隨著時間的推移和Modbus作為一種廣泛采用的開放協(xié)議,一些設(shè)備制造商引入了一種名為one-based尋址的概念。

從零開始進行尋址是指在訪問內(nèi)存類型時,第一個偏移量為零。例如,如果您想要訪問寄存器400001,那么在Modbus協(xié)議中的請求將是FC3,并且其偏移量為0。類似地,當訪問寄存器400002時,請求將是偏移量為1的FC3,以此類推。

因此,一些制造商采用了一種名為基于一的尋址的實現(xiàn)方式。在這種方式下,從1開始進行尋址,偏移量與實際地址請求保持對齊。舉個例子,如果您要求使用寄存器1,那么請求仍然使用FC3,但偏移量為1。同樣地,400002將請求FC3,但偏移量為2,以此類推。這種方法更加“友好”于用戶。

modbus通訊協(xié)議功能碼怎么看?

然而,了解這一點非常重要,因為有些設(shè)備支持從0開始尋址,而其他設(shè)備支持從1開始尋址。TOP服務(wù)器的Modbus驅(qū)動程序有一個可配置的設(shè)置,可以指定您的Modbus從設(shè)備所支持的實現(xiàn)方式。

modbus通訊協(xié)議功能碼怎么看?

Modbus規(guī)范的默認設(shè)置是啟用“基于零的尋址”。如果禁用此設(shè)置,驅(qū)動程序?qū)⑹褂没?的尋址。請確保始終使用正確的設(shè)置,以免顯示的值為設(shè)備中的錯誤地址。

舉一個例子,假設(shè)您讀取到了值400001,與您預(yù)期的值相比,它被認為是一個“錯誤”的值。在這種情況下,請檢查一下與400001相鄰的寄存器的值。如果確實相鄰,您需要將寄存器的尋址方式從1換為從零開始(反之亦然)。

另外,還有一種基于1或基于0的位尋址方式可供選擇。默認情況下,TOPServerModbus驅(qū)動程序支持從零開始的位尋址,因為這是Modbus規(guī)范的默認設(shè)置。這就意味著位的尋址范圍是從0到15。

使用1位尋址,可以從1到16位進行尋址,這對于處理16位數(shù)據(jù)更加直觀自然。此外,根據(jù)您的設(shè)備支持情況,TOPServerModbus驅(qū)動程序具有可配置的設(shè)置。

modbus通訊協(xié)議功能碼怎么看?

為了確保準確訪問位值,您在TOPServer中選擇的位尋址方法必須與設(shè)備支持的尋址方式相一致。如果設(shè)置錯誤,可能會導(dǎo)致訪問到錯誤的位值。該設(shè)置允許您啟用0-15位的訪問或禁用1-16位的訪問。

為確認制造商所支持的方法,請持續(xù)查閱制造商的文件或與其進行交流。若發(fā)現(xiàn)某選項因錯誤設(shè)置為“開啟”而實際所需為“關(guān)閉”,或相反情況,則可能需切換該設(shè)置。

Modbus具有許多獨特的特點,這是由于它是一個非常成熟和廣泛使用的開放協(xié)議。一個靈活的Modbus主站,例如TOP服務(wù)器,提供了一系列可配置的選項,以與各種制造商的Modbus從站配合使用,以實現(xiàn)最大的兼容性。

(以上所有圖均源于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系刪除)

愛陸通——物聯(lián)網(wǎng)產(chǎn)品與行業(yè)解決方案提供商。
相關(guān)方案Relevant Solutions
All Rights Reserved 廈門愛陸通通信科技有限公司 版權(quán)所有 ? 2008-2025 Inc.   閩ICP備15018514號-2 網(wǎng)站地圖 城市分站