回覆列表
  • 1 # 玩轉嵌入式

    組態王軟體是工業自動化行業應用的介面軟體,主要面向現場應用適合現場工程人員、FAE等程式設計,內建常用的通訊模組、常用的介面元件等。透過RS232介面、RS485介面和乙太網口可以和其他裝置完成資料通訊。

    Modbus協議主要有兩個版本RTU和TCP/IP,RTU可以透過RS485介面實現,TCP/IP可以透過乙太網口實現,這兩種協議都是工控行業、自動化行業常用的。下面以RS485介面、Modbu-RTU來介紹資料通訊的過程。

    Modub-RTU協議的具體內容

    該協議是主從方式的通訊方式,有一個主機可以掛接多個從機,每個從機具有唯一的地址用來辨識身份,並透過不通的功能碼來實現所要讀取/寫入的內容。作為簡單的應用,主要涉及到0x03讀保持暫存器功能碼、0x06預置單個暫存器功能碼、0x10預置多個暫存器功能碼等。

    讀保持暫存器功能碼0x03

    當主機發送03功能碼時,表明主要想要獲取從機某個暫存器裡的內容,一條完成的命令包括主機發送的資料和從機回覆的資料,分別舉例如下:

    主機發送: 01 03 00 32 00 02 xx xx

    主機回覆: 01 03 04 a5 d4 1812 xx xx

    資料和位元組含義如下圖所示。

    主機所傳送的命令表示,想要讀取1號從機從0x32開始的2個暫存器的內容,而從機回覆0x32和0x33暫存器內的資料,總共4個位元組。最後兩個位元組是校驗碼。

    預置單個暫存器功能碼0x06

    06功能碼是主機用來向從機的某個暫存器寫資料的,一次智慧操作一個暫存器。主機所傳送的資料舉例如下:

    主機發送:01 06 00 32 12 32 xx xx

    主機發送的資料和位元組含義如下圖所示。

    該功能碼,從機所回覆的資料和主機下發的資料是一致的。該條指令的含義為:主機想給1號從機的0x32暫存器中寫入0x1232資料,最後所跟的是校驗碼。

    預置多個暫存器功能碼0x10

    16功能碼也是寫暫存器但是與06所不同的是,該功能碼可以連續寫多個暫存器,主機下發的資料結構為:地址、功能碼、暫存器起始地址、暫存器個數、要寫入資料的位元組數、資料、校驗碼等。從機回覆的資料格式為:地址、功能碼、暫存器起始地址、暫存器個數、校驗碼等。

    資料格式舉例和位元組含義如下圖所示。

    所表示的含義是,從0x0034開始連續寫入四個位元組的資料到2個暫存器中,最後兩個位元組是校驗碼。

    以上三個功能碼都是非常常用的,除此之外,還有很多個功能碼,每個功能碼都代表不通的含義,以上資料都是需要程式設計來實現的。

  • 中秋節和大豐收的關聯?
  • 手按式單指單張點鈔法有什麼技巧可以數準確?