九二电影网电视剧免费观看,欧美国产日韩在线三区,亚洲精品国产精品国产自2022,特级做A爰片毛片免费看108

咨詢(xún)熱線(xiàn):

400-808-5829

行業(yè)知識

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

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

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

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

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

Modbus的功能代碼(FC)是使用特定代碼的Modbus請求,在告知Modbus從設備訪(fǎng)問(wèn)何種類(lèi)型的內存(如保持寄存器、輸入線(xiàn)圈等)以及對該內存執行何種操作(如讀取或寫(xiě)入)方面起作用。下面的表格列出了TOPServerModbusSuite中包含的所有Modbus驅動(dòng)程序用于通信的特殊Modbus功能代碼:


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

根據您在客戶(hù)端應用程序中讀取或寫(xiě)入的地址類(lèi)型(保持寄存器、內部寄存器、輸入線(xiàn)圈或輸出線(xiàn)圈),這將決定TOP服務(wù)器Modbus驅動(dòng)程序在處理您的實(shí)際協(xié)議請求時(shí)所使用的特定功能代碼設備。

在TOP服務(wù)器的Modbus驅動(dòng)程序中,還有一些特別的設置,可以增加設備中不同Modbus實(shí)現的靈活性。我們稍后會(huì )介紹這些設置。

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

如何將Modbus功能代碼與尋址進(jìn)行對應?

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

保持寄存器是一個(gè)具有讀寫(xiě)訪(fǎng)問(wèn)權限的16位(模擬)地址,地址范圍在4xxxxx。

內部寄存器是一種16位(模擬)地址寄存器,只能進(jìn)行只讀訪(fǎng)問(wèn)。

輸入線(xiàn)圈是一種具有只讀訪(fǎng)問(wèn)權限的地址,該地址為1位(布爾)的1xxxxx。

輸出線(xiàn)圈是一種具有讀/寫(xiě)訪(fǎng)問(wèn)權限的位(布爾)地址,其地址為0xxxxx。

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

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

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

Modbus功能碼1,以十六進(jìn)制表示為0x01。

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

在此列表下方,您將看到對功能代碼5和15的支持,即讀取和寫(xiě)入訪(fǎng)問(wèn)的線(xiàn)圈。

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

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

在Modbus設備中,輸入線(xiàn)圈是只讀的,這意味著(zhù)您無(wú)法使用功能代碼來(lái)寫(xiě)入1xxxxx類(lèi)型的地址。

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

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

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

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

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

Modbus的功能代碼4,也表示為十六進(jìn)制的0x04。

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

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

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

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

Modbus的功能代碼5為十六進(jìn)制0x05。

在寫(xiě)入單個(gè)輸出線(xiàn)圈(0xxxxx)時(shí),TOP服務(wù)器使用的是此功能代碼,也被稱(chēng)為“強制”線(xiàn)圈。

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

當TOP服務(wù)器寫(xiě)入單個(gè)保持寄存器(4xxxxx)時(shí),會(huì )使用此功能代碼,該寄存器也被稱(chēng)為“預置”寄存器。

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

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

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

為了應對這種情況,TOP服務(wù)器的Modbus驅動(dòng)程序增加了一個(gè)特殊設置項,可以禁用"Modbus功能05"。當此設置被禁用時(shí),驅動(dòng)程序將僅使用FC15指令來(lái)對輸出線(xiàn)圈進(jìn)行寫(xiě)入操作。

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

十六進(jìn)制代碼為0x10的功能代碼16

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

為了解決這個(gè)問(wèn)題,TOP服務(wù)器Modbus驅動(dòng)程序還有一個(gè)設置選項,可以讓您禁用“Modbus功能06”。這樣一來(lái),當您禁用該選項時(shí),驅動(dòng)程序將只使用FC16來(lái)進(jìn)行對保持寄存器的所有寫(xiě)入操作。

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

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

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

當客戶(hù)端應用程序向保持寄存器寫(xiě)入位時(shí),會(huì )出現以下情況:

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

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

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

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

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

TOP服務(wù)器將會(huì )執行一個(gè)FC3讀取,讀取整個(gè)寄存器。

接著(zhù),驅動(dòng)程序僅修改出問(wèn)題的位(這將改變保持寄存器16位值的整體值)。

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

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

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

TOPServerModbusSuite驅動(dòng)程序可以支持多種不同類(lèi)型的內存地址范圍:

注冊賬號為:400001-465536

內部存儲器的地址段為300001到365536。

請提供一個(gè)從100001到165536的輸入線(xiàn)圈編號范圍。

輸出線(xiàn)圈的編號從000001到065536。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Modbus規范的默認設置是啟用“基于零的尋址”。如果禁用此設置,驅動(dòng)程序將使用基于1的尋址。請確保始終使用正確的設置,以免顯示的值為設備中的錯誤地址。

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

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

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

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

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

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

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

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

愛(ài)陸通——物聯(lián)網(wǎng)產(chǎn)品與行業(yè)解決方案提供商。
相關(guān)方案Relevant Solutions
All Rights Reserved 廈門(mén)愛(ài)陸通通信科技有限公司 版權所有 ? 2008-2025 Inc.   閩ICP備15018514號-2 網(wǎng)站地圖 城市分站
无遮挡免费高清羞羞视频| 在线天堂新版资源www在线| 爱情岛亚洲论坛成人网站| 白袜篮球体育生飞机Gay视频| 国产午夜激无码AV毛片| 亚洲裸男自慰GV网站|