- 品牌/商標:西門子
- 企業類型:貿易商
- 新舊程度:全新
- 產品型號:齊全
- 原產地:德國
- 聯系人:李軍
. 概述
在現場應用中,很多儀表和設備僅支持Modbus RTU的通訊協議,第三方儀表可以做Modbus主站或從站,西門子的通訊模塊CP341 / CP441-2 通過Dongle(硬件狗)可以擴展該協議,S7-200 集成的口可以支持自由口通訊,通過指令庫也可以方便的實現Modbus RTU通訊。本文以S7-200作為Modbus 主站,CP341作為Modbus 從站,實現Modbus RTU通訊,闡述兩者在通訊方面的設置和注意事項。
2. 軟件環境
2.1 STEP7 V5.4 SP4
用于編寫 S7-300/400程序,此軟件需要從西門子購買,本文檔中的300的程序是使用Step7 V5.4 SP4的軟件編寫。
2.2 CP PTP Param V5.1 SP11
串行通訊模板的驅動程序,安裝此驅動后才能對PtP模板進行參數配置,并在Step7中集成通訊編程需要使用的功能塊。此驅動隨購買模板一起提供,也可以從以下的鏈接:27013524
2.3 CP PTP Modbus Slave V3.1 SP7
CP341或CP441-2用于Modbus從站時,需要安裝此驅動協議,但安裝之前必須先安裝PtP Driver,此驅動可以在購買Modbus Dongle時選擇購買,也可以從以下的鏈接:27774276
2.4 STEP7 Micro/WIN V4.0 SP6
用于S7-200編程的軟件,本文檔中的200的程序是使用Step7 Micro/win 的軟件編寫。此軟件可以從西門子中心,也可以從以下的鏈接。
https://www.ad.siemens.com.cn/download 網站 自動化系統>>S7-200>>軟件,文檔編號S0002。
2.5 Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library
S7-200實現Modbus RTU功能,可以使用Modbus的指令庫,要使用西門子的標準指令庫,必須先安裝指令庫的軟件包 Instruction Library,安裝后,可以在Step 7-Micro/WIN軟件的庫中找到Modbus相關的指令,該軟件包可以從以下的鏈接。https://www.ad.siemens.com.cn/download 網站 自動化系統>>S7-200>>軟件,文檔編號S0010。
3. 硬件列表和接線
3.1 硬件列表
| S7-300從站 | CPU315-2DP | 6ES7 315-2AG10-0AB0 |
| CP341 RS422/485 | 6ES7 341-1CH01-0AE0 | |
| Dongle | 6ES7 870-1AB01-0YA0 | |
| PC 適配器(USB) | 6ES7 972-0CB20-0XA0 | |
| S7-200主站 | CPU 224XP | 6ES7 214-2BD23-0XB0 |
表1 硬件設備
3.2 硬件接線
3.2.1 接口定義
S7-200的通訊口為RS485物理口(9針口),CP341是RS422/485的接口類型(15針口),兩種設備的接口引腳的示意圖如下所示,更詳細的信息可以參考CP341及S7-200通信接口的手冊。

圖1 S7-200 CPU通信口引腳定義

圖2 S7-300 CP341 RS422/485 通訊口引腳定義
3.2.2 接線示意圖

圖3 硬件結構和接線示意圖
4. 組態設置和編程
4.1 S7-200做Modbus主站的設置
S7-200 CPU上的通信口在電氣上是標準的RS-485半雙工串行通信口,此串行字符通信的格式:1個起始位;7/8位數據位;1位奇/偶/無校驗;1停止位。通信波特率可以設置為1200、2400、4800、9600、19200、38400、57600或112500,符合這些格式的串行通訊設備可以和S7-200進行自由口通訊,Modbus RTU指令庫就是使用自由口編程實現的。
4.1.1 Modbus RTU主站庫
使用Modbus 主站指令庫時需要注意的幾點:
需要S7-200的編程軟件是 Micro/WIN V4.0 SP5及以上版本;
Modbus RTU 主站庫對CPU的版本有要求,CPU 的版本必須為 2.00 或者 2.01(即訂貨號為 6ES721*-***23-0BA*);
Modbus主站可讀/寫的數據量為120個字(指每一個 MBUS_MSG 指令);
Modbus 主站庫支持Port0和Port1(從站庫只支持Port0口),本例中用Port0;
使用Modbus 庫時必須對庫存儲區進行分配,見下圖設置,而且分配的空間不能和程序中其它空間沖突,否則編譯調用會報錯。

圖4 庫存儲區設置
Modbus主站庫支持的功能碼和地址對應關系:
Modbus 地址 讀 / 寫 Modbus 從站須支持的功能 00001~09999 讀 功能1:讀輸出點 數字量輸出 寫 功能5:寫單個輸出點 功能15:寫多個輸出點 10001~19999 讀 功能2:讀輸入點 數字量輸入 30001~39999 讀 功能4:讀輸入寄存器 輸入寄存器 40001~49999 讀 功能3:讀保持寄存器 保持寄存器 寫 功能6:寫單個寄存器 功能16:寫多個寄存器 表2需要從站支持的功能
4.1.2 S7-200 Modbus主站編程
編程時,使用SM0.0調用MBUS_CTRL完成主站的參數初始化,詳細見下表,參數的說明也可以從子程序的局部變量表中找到。

圖5 Modbus RTU 主站初始化
圖中各參數含義如下
| 編號 | 符號/含義 | 說 明 |
| a | EN / 使能 | 必須保證每一掃描周期都被使能(使用SM0.0)。 |
| b | Mode / 模式 | 為1時使能為Modbus協議;為0時恢復為PPI協議。 |
| c | Baud / 波特率 | 支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。 |
| d | Parity / 校驗 | 校驗方式選擇:0=無校驗;1=奇校驗,2=偶校驗。 |
| e | Timeout / 超時 | 主站等待從站響應的時間,以毫秒為單位,典型的設置值為 1000毫秒,允許設置的范圍為1-32767。這個值必須設置足夠大以保證從站有時間響應。 |
| f | Done / 完成位 | 初始化完成,此位會自動置1。 |
| g | Error / 錯誤位 | 初始化錯誤代碼。 |
表3
調用 Modbus RTU 主站讀寫子程序MBUS_MSG,發送一個Modbus 請求。

圖6 調用Modbus RTU 主站讀寫子程序
圖中各參數含義如下
| 編號 | 符號/含義 | 說 明 |
| a | EN / 使能 | 同一時刻只能有一個讀寫功能使能。 |
| b | First / 讀寫請求位 | 每一個新的讀寫請求必須使用脈沖觸發。 |
| c | Slave / 從站地址 | 可選擇的范圍1–247。 |
| d | RW / 讀寫操作位 | 0=讀, 1=寫。 |
| e | Addr / 讀寫從站的數據地址 | 選擇讀寫的數據類型: |
| 00001 至 0xxxx - 開關量輸出 | ||
| 10001 至 1xxxx - 開關量輸入 | ||
| 30001 至 3xxxx - 模擬量輸入 | ||
| 40001 至 4xxxx - 保持寄存器。 | ||
| f | Count / 數據的個數 | 通訊的數據個數(位或字的個數)。 |
| g | DaptPtr / 數據指針 | 如果是讀指令,讀回的數據放到這個數據區中; |
| 如果是寫指令,要寫出的數據放到這個數據區中。 | ||
| h | Done / 完成位 | 讀寫功能完成位。 |
| i | Error / 錯誤代碼 | 只有在Done位為1時,錯誤代碼才有效。 |
表4
從上圖中可見,S7-200作為Modbus RTU主站,波特率9.6Kb/s,偶校驗,連接從站的站地址是3,數據存儲區為VB2000開始的區域。
4.2 CP341 做Modbus 從站的硬件組態
4.2.1 硬件組態

圖7 S7-300側硬件組態
4.2.2 設置Modbus參數

圖8 消息楨字符結構
按照上述操作設置參數,從上圖可以看出,本例中的傳輸波特率9.6Kb/s,1位起始位,8位數據位,偶校驗位,1位停止位,從站站地址是3,主從通訊設備的字符幀格式和波特率等參數設置需要一致。

圖9 RS422/485 接口組態
RS422/485接口只能一個有效,接口的選擇只需要組態而不需要在硬件上短接。
4.2.3 Modbus驅動的
當配置好Modbus通信的參數后,保存前需要向CP341Modbus Slave的驅動,一旦完成后無需再次。
需要注意的是,在驅動時(可以在無Dongle情況下),需要將CPU停機,然后,操作過程如下所示。

圖10 Dongle時,需要CPU停機

圖11 從站驅動后結果
4.2.4 CP341做Modbus從站的編程
從Step7 軟件下的EXAMPLE目錄中,找到項目名“zXX21_05_PtP_Com_MODSL”的項目,打開,然后將Modbus通訊模塊FB80傳遞到用戶項目中,打開路徑如下所示。

圖12 Modbus Slave 例程打開路徑
OB1中調用FB80編程如下:

圖13 FB80程序塊調用
CP卡初始化正常后,CP_START,CP_START_FM和CP_START_OK為1信號,否則CP_START_ERROR為1,同時可以從ERROR_NR察看錯誤信息,也可以在硬件組態中在線后的CP341的診斷緩沖區察看詳細的錯誤信息,錯誤信息對照和處理方式可以參考
《S7-300以用于PtP CP Modbus 協議RTU格式S7的可裝載驅動程序為從站》的手冊。
FB80的各參數含義如下
| LADDR | 硬件組態中CP341的起始邏輯地址,本例中為256 |
| START_TIMER | 初始化超時定時器,本例中為T120 |
| START_TIME | 初始化定時器時間,本例中為5S |
| OB_MASK | I/O訪問錯誤屏蔽位,本例中為True(I/O訪問錯誤已屏蔽) |
| CP_START | FB初始化使能位,本例中為M0.0 |
| CP_START_FM | CP_START 初始化的上升沿位,本例中為M0.1 |
| CP_NDR | 從CP卡寫操作位,本例中為m0.2 |
| CP_START_OK | 初始化完成且無錯誤,本例中為M0.3 |
| CP_START_ERROR | 初始化完成,但有錯誤,本例中為M0.4 |
| ERROR_NR | 錯誤號,本例中為MW2 |
| ERROR_INFO | 錯誤信息,本例中為MW4 |
表5
5. 通訊測試
Modbus RTU格式通信協議是以主從的方式進行數據傳輸的,在傳輸的過程中主站是主動方,即主站發送數據請求報文到從站,從站返回響應報文。Modbus 系統間的數據交換是通過功能碼來控制的,以下對現場常用的功能碼進行分類測試,關于功能碼的詳細信息請參考手冊。
5.1 FC01/05/15功能碼西門子CPU SR60
CP341從站的通訊區域配置

圖14 FC01/05/15 參數組態界面
FC01、FC05、FC15對應的數據區為位輸出,數據的傳遞以位為單位,可以讀寫操作,用戶地址區為0xxxx,Modbus地址在信息傳遞中從0開始。如上圖,左邊為信息傳遞地址(地址區不能沖突),右邊對應的是S7-300的數據區。例如左邊信息傳遞地址從0 ~ 7對應用戶地址區為00001 ~ 00008,對應S7-300的M10.0 ~ M10.7,并且以此為例說明FC01功能碼的通訊。
S7-200主站程序調用

圖15 功能碼FC01使用
S7-200主站,用功能碼FC01讀取從站8點數字量輸出,接收的數據存放在VB2000開始的區域,測試截圖結果如下。

圖16 FC01功能碼數據交換
5.2 FC02功能碼
CP341從站的通訊區域配置

圖17 FC02 參數組態界面
FC02對應的數據區為位輸出,數據的傳遞以位為單位,只讀操作,用戶地址區為1xxxx,Modbus地址在信息傳遞中從0開始,如上圖,左邊為信息傳遞地址(地址區不能沖突),右邊對應的是S7-300的數據區。例如左邊信息傳遞地址從0 ~ 7對應用戶地址區為10001 ~ 10008,對應S7-300的M20.0 ~ M20.7,并且以此為例說明FC02功能碼的通訊。
S7-200主站程序調用

圖18 功能碼FC02使用
S7-200主站,用功能碼FC02讀取從站8點數字量輸入,接收的數據存放在VB2000開始的區域,測試截圖結果如下。

圖19 FC02功能碼數據交換
5.3 FC03/06/16 功能碼
CP341從站的通訊區域配置

圖20 FC03/06/16參數組態界面
FC03/06/16 對應的數據區為寄存器,數據的傳遞以字為單位,可以讀寫操作,用戶地址區為4xxxx,Modbus地址在信息傳遞中從0開始。如上圖,左邊為信息傳遞地址,右邊對應的是S7-300的數據區,左邊傳輸地址不可改,右邊只對應一個數據區。例如用戶地址
區為40001 ~ 40004,對應S7-300數據區為DB1.DBW0 ~ DB1.DBW6,并且以此為例說明
FC03功能碼的通訊。
S7-200主站程序調用

圖21功能碼FC03使用
S7-200主站,用功能碼FC03讀取從站4個字寄存器,接收的數據存放在VB2000開始的區域,測試截圖結果如下。

圖22 FC03功能碼數據交換
5.4 FC04 功能碼
CP341從站的通訊區域配置

圖23 FC04參數組態界面
FC04對應的數據區為寄存器輸入,數據的傳遞也以字為單位,只讀操作,用戶地址區3xxxx,Modbus地址在信息傳送中從0開始。如上圖,左邊為信息傳遞地址,右邊對應的是S7-300的數據區,左邊傳輸地址不可改,右邊只對應一個數據區。例如用戶地址區為30001 ~ 30004,對應S7-300數據區為DB1.DBW0 ~ DB1.DBW6,并且以此為例說明FC04功能碼的通訊。
S7-200主站程序調用


圖24功能碼FC04使用
S7-200主站,用功能碼FC04讀取從站4個字輸入寄存器,接收的數據存放在VB2000開始的區域,測試截圖結果如下。

圖25 FC04功能碼數據交換
5.5 Limits 欄

圖26 Limits 參數組態界面
對于寫功能碼FC05、06、15、16,可以禁用或限制訪問相關S7-300存儲區,即使用這些功能碼時,S7-300存儲區需要在設定的小和的范圍之間,如果訪問的區域超出這個范圍,則訪問會被拒絕,同時輸出報錯誤信息。
西門子網卡及電纜
6ES7 972-0CB20-0XA0 西門子USB接口編程適配器(USB接口編程電纜)
6ES7 972-0CB35-0XA0 西門子TS適配器II 用于調制解調器遠程服務
6ES7 972-0CC35-0XA0 西門子TS適配器II 用于ISDN 遠程服務
6GK1 561-1AA01 西門子CP5611網卡(PCI總線軟卡,支持MPI,PPI,PROFIBUS-DP)
6GK1 551-2AA00 西門子CP5512網卡(PCMCIA總線軟卡,支持MPI,PPI,PROFIBUS-DP,筆記本電腦用,32BIT)
6GK1 561-3AA01 西門子CP5613網卡(PCI總線硬卡,支持PROFIBUS-DP主站)
6GK1 561-3FA00 西門子CP5613光纖網卡(PCI總線硬卡,支持PROFIBUS-DP主站
6GK1 561-4AA01 西門子CP5614網卡(PCI總線硬卡,支持PROFIBUS-DP主站/從站)
6GK1 561-4FA00 西門子CP5614光纖網卡(PCI總線硬卡,支持PROFIBUS-DP主站/從站)
6GK1562-1AA00 西門子CP5621通訊卡 貨期8周
6GK1571-1AA00 西門子CP5711卡 USB接口 和9針插口
6FX800開頭 西門子是動力電纜跟信號電纜
6XV1 840-2AH10 西門子4芯電纜 網線
6FC5210-0DF22-2AA0 西門子PCU50
6XV1 830-0PBH30 西門子TD / OP 與 S5-90U 至 -155U 的電纜 6XV1 440-2A
6XV1 830-0EH10 西門子PROFIBUS通訊電纜
6XV1 830-3EH10 西門子西門子拖纜
6XV1 830-0AH10 西門子DP電纜
6XV1 820-5AH10 西門子光纖電纜(米)
6XV1 820-5BH50 西門子光纖電纜 含BFOC (5米)
6XV1 820-5BT10 西門子光纖電纜 含BFOC (100米)
6GK1 901-0DA20-0AA0 西門子BFOC接頭(每包20只)
6ES7 901-0BF00-0AA0 西門子5米MPI電纜 9針插頭 PLC通訊電纜
6ES7 901-1BF00-0XA0 西門子RS232電纜
西門子鏈接模板
6GK1 415-2AA01 西門子DP-AS-i 網關 IP20
6GK1 415-0AA01 西門子DP-EIB 網關
6ES7 158-0AD01-0XA0 西門子DP/DP 耦合器
6ES7 157-0AC83-0XA0 西門子DP/PA 耦合器 ,非本安區
6ES7 157-0AD82-0XA0 西門子DP/PA 耦合器 ,本安區
6XV1 830-5EH10 西門子PROFIBUS FC 過程電纜( 易爆區 )
6XV1 830-5FH10 西門子PROFIBUS FC 過程電纜( 非易爆區 )
6ES7 195-7HF80-0XA0 西門子DP/PA耦合器有源總線單元
6GK1 905-0AA00 西門子SpliTConnect分接頭(10件)
6GK1 905-0AD00 西門子SpliTConnect終端(Ex)(5件)
6GK1 905-0AB10 西門子SpliTConnect M12輸出端(5件)
6GK1 905-0AC00 西門子SpliTConnect 耦合器(10件)
西門子總線連接器
6GK1 905-6AA00 西門子快速剝線工具6ES7972-0CB20-0XA0
6ES7 972-0BA50-0XA0 西門子快速連線網絡接頭(不帶編程口)升級:6ES7972-0BA52-0XA0
6ES7 972-0BB50-0XA0 西門子快速連線網絡接頭(帶編程口)升級:6ES7972-0BB52-0XA0
6ES7 972-0BA12-0XA0 西門子90度網絡接頭(不帶編程口)
6ES7 972-0BB12-0XA0 西門子90度網絡接頭(帶編程口)
6ES7 972-0BA41-0XA0 西門子35度網絡接頭(不帶編程口)升級為:6ES7 972-0BA42-0XA0
6ES7 972-0BB41-0XA0 西門子35度網絡接頭(帶編程口)升級為:6ES7 972-0BB42-0XA0
6GK1 500-0EA02 西門子無角度網絡接頭(不帶編程口)
6GK1 500-0FC00 西門子無角度快速連線網絡接頭(不帶編程口)
網絡部件
6ES7 972-0AA01-0XA0 西門子12M PROFIBUS 中繼器 IP20
6ES7 972-0AB01-0XA0 西門子12M PROFIBUS 診斷中繼器
6ES7 972-0DA00-0AA0 西門子有源終端元件
6ES7 972-4AA02-0XA0 西門子電源導軌輔助裝置 導軌信號放大器
6GK1 500-3AA00 西門子光纖總線端子OBT
6GK1 503-0AA00 西門子紅外線鏈接模塊 ILM
6GK1 503-3CA00 西門子PROFIBUS OLM/P12 (1個RS485接口,兩個BFOC)
6GK1 503-2CB00 西門子PROFIBUS OLM/G11 (1個RS485接口,兩個BFOC)
6GK1 503-3CB00 西門子PROFIBUS OLM/G12 (1個RS485接口,四個BFOC)
6GK1 503-3CC00 西門子PROFIBUS OLM/G12-1300 (1個RS486接口,四個BFOC)
6ES7 181-0AA01-0AA0 西門子BT200 硬件測試裝置
6ES7 193-8MA00-0AA0 西門子BT200 記錄軟件套裝 Win95/98/NT
6ES7 193-8LA00-0AA0 西門子充電器 BT200 230V
6ES7 193-8LB00-0AA0 西門子充電器 BT200 110V
西門子工業以太網
西門子網卡及電纜:
6GK1 161-3AA01 西門子CP1613網卡(以太網10M/100M自適應,PCI總線硬卡)
6GK1 161-2AA00 西門子CP1612網卡(以太網10M/100M自適應,PCI總線)
6GK1 161-6AA00 西門子CP1616網卡(32位,33/66M,4個接口,PCI總線)
6GK1 151-2AA00 西門子CP1512網卡(10M/100M以太網,PCMCIA筆記本用)
6GK1 151-5AA00 西門子CP1515網卡(11M無線以太網,PCMCIA筆記本用)
6GK1 611-0TA01-1DV0 西門子MOBIC T8 V1.2
6XV1 850-0AH10 西門子ITP標準工業以太網通訊電纜 (米)
6XV1 850-0BT10 西門子ITP標準工業以太網電纜 (100米) 9/15
6XV1 850-0BN15 西門子ITP標準工業以太網電纜 (15米) 9/15
6XV1 870-3QN10 西門子TP轉接軟線RJ45/RJ45,10米
6XV1 850-0BH20 西門子ITP標準工業以太網電纜 (2米) 9/15
6XV1 840-2AH10 西門子FC標準工業以太網通訊電纜 (米)
6XV1 850-2LN10 西門子TP轉接軟線15/RJ45,10米
6XV1 850-2GN10 西門子TP轉接軟線RJ45/RJ45,10米
6XV1 850-2JN10 西門子TP轉接軟線9/RJ45,10米
6XV1 850-2HN10 西門子TP XP 轉接軟線RJ45/RJ45,10米
6GK1 901-1FC00-0AA0 西門子FC引出插座RJ45
西門子SCALANCE X005入門級交換機
6GK5 005-0BA00-1AA3 西門子X005(五個RJ45口)
6GK5 005-0BA00-1CA3 西門子X005(五個RJ45口),工作溫度-40至70攝氏度
西門子SCALANCE X100非網管型交換機
6GK5 104-2BB00-2AA3 西門子X104-2(四個RJ45口,兩個BFOC)
6GK5 106-1BB00-2AA3 西門子X106-1(六個RJ45口,一個BFOC)
6GK5 108-0BA00-2AA3 西門子X108(八個RJ45口)(星型連接)
6GK5 112-2BB00-2AA3 西門子X112-2(12個RJ45口,2個BFOC)
6GK5 116-0BA00-2AA3 西門子X116(16個RJ45口)(星型連接)
6GK5 124-0BA00-2AA3 西門子X124(24個RJ45口)(星型連接)
西門子SCALANCE X200網管型交換機
6GK5 204-2BB00-2AA3 西門子X204-2(四個RJ45口,兩個BFOC,PROFINET)
6GK5 206-1BB10-2AA3 西門子X206-1(六個RJ45口,一個BFOC,PROFINET)
6GK5 208-0BA10-2AA3 西門子X208(八個RJ45口,PROFINET)
6GK5 208-0HA00-2AA6 西門子X208PRO (八個RJ45口,防護等級:IP65)
6GK5 216-0BA00-2AA3 西門子X216(16個RJ45口,PROFINET)
6GK5 224-0BA00-2AA3 西門子X224(24個RJ45口,PROFINET)
6GK5 204-0BA00-2BA3 西門子X204IRT (四個RJ45口)
6GK5 202-2BB00-2BA3 西門子X202-2IRT (二個RJ45口,兩個BFOC)













