關于RS485和MODBUS的快速教程

什么是RS485?


RS485是串行傳輸標準,有點像RS232,但使用其他電信號。RS485的一個重要優點是可以將多個RS485設備放在同一總線上。因此,您不必在主機上乘以RS485接口來詢問多個設備。但是,有一個小技巧:在總線的每一端,你必須放一個總線端接器。有時這意味著您必須在端子上擰一個小電阻,或者只需將開關移到適當的位置即可。 

RS485總線通常只由兩根導線和四極電阻組成......
RS485總線通常只由兩根導線和四極電阻組成......


RS485和RS232不直接兼容:您必須使用正確類型的接口,否則信號將無法通過。確實有RS232到RS485網關,但現在它們并不令人感興趣:它可以很容易地將RS485用于USB,以太網或直接用于GSM。它更便宜,而且系統中的組件少了一個。 

使用RS485時的主要特點是交換數據的格式。使用RS232時,許多設備只使用文本(ASCII)協議,而RS485大多數設備使用MODBUS協議。因此,您必須知道最少的MODBUS才能連接RS485設備。 
 

什么是MODBUS?


MODBUS是主機(主設備)和設備(從設備)之間的協議,用于訪問設備的配置和讀取措施。MODBUS消息對應于讀取和寫入16位字和二進制寄存器(通常稱為“線圈”)的相對簡單的操作。主機系統地啟動交換,“從”設備應答。從站在主機請求之前不發送任何消息。 

由于RS485總線上可以并聯多個設備,因此每個從設備必須在總線上使用唯一的MODBUS從站ID。每個MODBUS請求都以目標設備的從站ID開始,每個答案都從發送它的從站的從站ID開始。因此,為了使MODBUS通信正常工作,您必須在設備配置中檢入其從站ID并在必要時進行更改。在途中,還要檢查通信速度和奇偶校驗(與RS232相同的原理)。 

您無法輕松地“手動”制作MODBUS消息,就像您在RS232上使用的ASCII協議一樣:每個MODBUS消息以校驗和代碼結束,根據消息的全部內容計算。要交換MODBUS消息,您必須使用: 

  • 設備供應商提供的特定程序,兼容接口;
  • 或帶有編程庫的簡單RS485接口,編程和解碼MODBUS消息;
  • 或智能RS485接口,能夠自行編碼和解碼MODBUS消息,例如Yocto-RS485。


另請注意,MODBUS協議有兩種變體:MODBUS ASCII模式,其中消息作為十六進制代碼行交換; MODBUS RTU模式,其中消息直接作為二進制幀交換。要與MODBUS設備通信,必須使用與設備中配置的模式相同的模式。所有真正遵循該標準的設備都支持MODBUS RTU模式。在現實生活中,它始終使用后一種模式:MODBUS ASCII沒有任何優勢,因為所有消息在任何情況下都難以手動編碼。 
 

一個小型溫度控制器,內置PID,模糊邏輯,......和RS485上的MODBUS接口
一個小型溫度控制器,內置PID,模糊邏輯,......和RS485上的MODBUS接口


 

訪問MODBUS寄存器


當你明白理論上如何交換信息,你還必須知道哪些登記以請求獲取措施,并登記變更配置設備。在這個級別,寄存器地址從一個設備更改為另一個設備,但有一些MODBUS約定有助于了解技術用戶指南,這些指南通常不像人們希望的那樣清晰。 

有4種類型的MODBUS寄存器:

  • 線圈,對應于開/關二進制輸出,例如繼電器。
  • 輸入比特,對應于二進制輸入(只讀)。
  • 所述輸入寄存器中,對應于模擬輸入(只讀)。
  • 保持寄存器,對應于可以改變模擬參數。


MODBUS設備的技術用戶指南通常包含按類型列出的所有可用寄存器的列表。對于每種類型的寄存器,對應一系列寄存器號,遵循以下約定: 

  • 線圈從00001起編號
  • 輸入比特是從10001向前編號
  • 輸入寄存器,從30001向前編號
  • 保持寄存器從40001向前編號


請注意,當使用此約定時,每個類別的第一個寄存器始終以數字1結束(不使用零)。 

有時,供應商不是指示唯一的寄存器編號,而是指示具有MODBUS功能標識符的寄存器類型,允許您讀取它們: 

  • 01H線圈
  • 輸入位02h
  • 04h輸入寄存器
  • 03h保持寄存器


在這種情況下,它通常是指示其組中的寄存器的相對位置,第一個元素的位置為0。因此,04h函數的寄存器0對應于第一個輸入寄存器,您也可以調用寄存器30001.注意不要混淆不符合MODBUS函數標識符的寄存器范圍之間的不相干,以及相對的不相干性。頭寸從0開始,絕對倉位從1開始...... 

當您知道要訪問哪個寄存器時,您仍然必須知道如何解釋它。由于模擬寄存器使用16位編碼,因此通常有兩種約定。第一種方法是使用器件配置中定義的值范圍,并將0-65535寄存器值的線性映射到此值范圍。第二種是以十進制固定點直接存儲值,以工程單位表示:例如,2345表示23.45攝氏度。一些供應商同時提供兩種格式的值:例如,寄存器30001用于與定義范圍成比例的版本,寄存器31001用于十進制版本。 

91麻豆国产福利精品_欧美人与动牲交a精品_伊人久久综合热线大杳_网曝门欧美日韩私拍_gogo日本亚洲肉体艺术