image-202403
一 | Modbus 通訊簡介 |
在工業領域,Modbus無處不在,無論你是否用過,大概你肯定聽過,那么Modbus是什么呢?Modbus是Modicon公司于1979年為使用可編程邏輯控制器通信而發表,現在已經發展成為工業領域標準通訊協議之一,廣泛應用于PLC與設備、儀表之間進行數據采集使用;
Modbus 是公開通信協議,其Zui簡單的串行通信部分僅規定了在串行線路的基本數據傳輸格式。Modbus 具有兩種串行傳輸模式,ASCII 和 RTU,它們定義了數據如何打包、解碼的不同方式。支持 Modbus 協議的設備一般都支持 RTU 格式。
Modbus 是一種單主站的主/從通信模式。Modbus 網絡上只能有一個主站存在,主站在 Modbus 網絡上沒有地址,從站的地址范圍為 0 - 247,其中 0 為廣播地址,從站的實際地址范圍為 1 - 247(即可鏈接設備數247)。注:理論上可鏈接設備247,但由于輪詢時間,信號干擾,阻抗等因素,實際應用中Zui多一般不超過32臺設備;
需要注意的是我們通常說Modbus是RS485通訊,實際上這種說法是不準確的,Modbus是通訊協議,而RS485是通訊傳輸方式,同樣還有RS232,光纖,以太網等傳輸方式,標準Modbus協議都可以通過這些傳輸方式傳播。在 S7-200 smart CPU 通信口上實現的是 RS485 半雙工通信,使用的是 S7-200 SMART 的自由口功能。
二 | S7-200 Smart 主站指令庫 |
西門子在 STEP 7-Micro/WIN SMART 中已經集成了 Modbus RTU 主站協議庫(西門子標準庫指令)。使用 Modbus RTU 主站指令庫,可以讀寫 Modbus RTU 從站的數字量、模擬量 I/O 以及保持寄存器。
image-202403
注意:
- Modbus RTU 主站指令庫的功能是通過在用戶程序中調用預先編好的程序功能塊實現的,該庫對 CPU 集成的 RS 485 通訊口 和 CM 01 信號板有效。該指令庫將設置通信口工作在自由口模式下。
- Modbus RTU 主站指令庫使用了一些用戶中斷功能,編其他程序時不能在用戶程序中禁止中斷。
- Modbus RTU 主站指令庫可以同時應用于CPU 集成的 RS 485 通訊口 和 CM01 信號板,此時集成的RS 485口使用Modbus RTU Master(v2.0)中指令,CM01信號板使用Modbus RTU Master2(v2.0)中指令,如果只有一個主站則不做區分。
三 | S7-200 Smart 主站功能編程 |
Modbus RTU 主站初始化和控制子程序
調用 Modbus RTU 主站初始化和控制子程序,使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,并啟動其功能控制:
image-202403各參數意義如下:
EN使能:必須保證每一掃描周期都被使能(使用 SM0.0) Mode 模式: 為 1 時,使能 Modbus 協議功能;為 0 時恢復為系統 PPI 協議 Baud 波特率: 支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。 Parity 校驗: 校驗方式選擇
0=無校驗
1=奇較驗
2=偶較驗Port 端口號: 0 = CPU 集成的 RS 485 通訊口 ;
1 = 可選 CM 01 信號板 。Timeout 超時: 主站等待從站響應的時間,以毫秒為單位,典型的設置值為 1000 毫秒(1 秒),允許設置的范圍為 1 - 32767。
注意: 這個值必須設置足夠大以保證從站有時間響應。Done 完成位: 初始化完成,此位會自動置1。可以用該位啟動MBUS_MSG 讀寫操作(見例程) Error 錯誤代碼 初始化錯誤代碼(只有在 Done 位為1時有效):
0= 無錯誤
1= 校驗選擇非法
2= 波特率選擇非法
3= 超時無效
4= 模式選擇非法
9= 端口無效
10= 信號板端口 1 缺失或未組態
調用 MBUS_MSG,發送一個Modbus 請求;
調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求;
image-202403各參數意義如下:
EN使能:同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能 注意:建議每一個讀寫功能(即 MBUS_MSG)都用上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫指令循環進行(見例程)。 First 讀寫請求位: 每一個新的讀寫請求必須使用脈沖觸發 Slave 從站地址: 可選擇的范圍 1 - 247 RW 讀寫請求: 0 = 讀, 1 = 寫 注意:1. 數字量輸出和保持寄存器支持讀和寫功能2. 數字量輸入和模擬量輸入只支持讀功能 Addr 讀寫從站的數據地址: 選擇讀寫的數據類型
00001 至 0xxxx - 數字量輸出
10001 至 1xxxx - 數字量輸入
30001 至 3xxxx - 模擬量輸入
40001 至 4xxxx - 保持寄存器Count 數據個數 通訊的數據個數(位或字的個數)注意: Modbus主站可讀/寫的Zui大數據量為120個字(是指每一個 MBUS_MSG 指令) DataPtr 數據指針: 1. 如果是讀指令,讀回的數據放到這個數據區中
2. 如果是寫指令,要寫出的數據放到這個數據區中Done 完成位 讀寫功能完成位 Error 錯誤代碼: 只有在 Done 位為1時,錯誤代碼才有效
0 = 無錯誤
1 = 響應校驗錯誤
2 = 未用
3 = 接收超時(從站無響應)
4 = 請求參數錯誤(slave address, Modbus address, count, RW)
5 = Modbus/自由口未使能
6 = Modbus正在忙于其它請求
7 = 響應錯誤(響應不是請求的操作)
8 = 響應CRC校驗和錯誤
101 = 從站不支持請求的功能
102 = 從站不支持數據地址
103 = 從站不支持此種數據類型
104 = 從站設備故障
105 = 從站接受了信息,但是響應被延遲
106 = 從站忙,拒絕了該信息
107 = 從站拒絕了信息
108 = 從站存儲器奇偶錯誤
在 CPU 的 V 數據區中為庫指令分配存儲區;
Modbus Master 指令庫需要一個286個字節的全局 V 存儲區。
調用STEP 7 - Mciro/WIN SMART Instruction Library(指令庫)需要分配庫指令數據區(Library Memory)。庫指令數據區是相應庫的子程序和中斷程序所要用到的變量存儲空間。如果在編程時不分配庫指令數據區,編譯時會產生許多相同的錯誤。
操作步驟:
在指令樹的Project(項目)中,以鼠標右鍵單擊Program Block(程序塊),在彈出的快捷菜單中選擇Library Memory。
image-202403在彈出的選項卡中設置庫指令數據區,可以自己填地址,也可選擇建議地址自動分配;注意:分配后的地址,不能再用在其他程序中;
image-202403配置結束,下載程序即可進行通訊測試;
四 | 關于 Modbus RTU 主站協議庫的補充說明 |
Modbus 地址
通常 Modbus 地址由 5 位數字組成,包括起始的數據類型代號,以及后面的偏移地址。Modbus Master 協議庫把標準的 Modbus 地址映射為所謂 Modbus 功能號,讀寫從站的數據。Modbus Master 協議庫支持如下地址:
- 西門子 Zui新西門子 s7-200 smart V2.8產品特性及軟件包下載 2024-12-02
- 西門子 S7-200 SMART 系列一: 產品介紹 2024-12-02
- 西門子 S7-1200 系列五:TIA博圖中OB、DB、FC、FB介紹及應用 2024-12-02
- 西門子s7-200 smart 基本控制庫(LBC)應用 2024-12-02
- 精智面板圖形視圖透明度設置 2024-12-02
- 我這樣使用博途 2024-12-02
- 改進驅動器仿真器模型 2024-12-02
- Modbus和TCP究竟有什么區別? 2024-12-02
- 西門子Zui強大的通訊功能,PROFIBUS通訊,高手必學 2024-12-02
- RS485與Modbus通信協議 2024-12-02
- 硬接線和通訊有什么區別?為什么很多電工排斥通訊方式,喜歡硬接線? 2024-12-02
- 西門子HMI如何傳送授權 2024-12-02
- 圖解:西門子精致屏HMI如何傳送授權 2024-12-02
- 西門子s7-200 smart 基本控制庫(LBC)應用五:理想氣體溫壓補償的實現 2024-12-02
- 西門子V90驅動電機選型(新版) 2024-12-02
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684