湖南翰智自動化設備有限公司致力于工業自動化控制領域的產品開發、工程配套和系統集成,擁有豐富的自動化產品的應用和實踐經驗以及雄厚的技術力量。*銷售西門子S7-200PLC/S7-200CPU/S7-300PLC/S7-300CPU/S7-400PLC/S7-400CPU/S7-1200PLC/S7-1200CPU/西門子觸摸屏/西門子SITOP電源/西門子LOGO/西門子MM420變頻器/
圖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功能碼
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存儲區需要在設定的zui小和zui大的范圍之間,如果訪問的區域超出這個范圍,則訪問會被拒絕,同時輸出報錯誤信息。
6. 總結
本文檔以S7-200為主站和CP341為從站簡單介紹了Modbus RTU通訊,關于通訊的組態設置,編程以及常用功能碼的使用,其具體的使用可以作為西門子串行通訊模塊與第三方的儀表、設備等進行串行通信的參考。
7. 相關參考資料
關于西門子串行通信應用的文檔可以參考相關產品手冊,或登錄下載中心http://www.ad.siemens.com.cn/download/ , 搜索下載如下文檔:
A0006:串口通訊模塊的信息與使用
A0081:CP340/341/440/441通訊及編程
A0336:CP341 Modbus RTU多站點輪詢
A0440:CP340/341基于ASCII驅動協議的多站點輪詢
A0384:S7-300 CP341作主S7-200作從的Modbus通信
?:吳(銷售工程師)
:
:
西門子6ES7322-8BF00-0AB0西門子6ES7322-8BF00-0AB0