西門子S7-200與(yu) 變頻器MODBUS通訊實例詳解
西門子S7-200PLC簡介,西門子plc s7-200
西門子S7-200PLC在實時模式下具有速度快,具有通訊功能和較高的生產(chan) 力的特點。一致的模塊化設計促進了低性能定製產(chan) 品的創造和可擴展性的解決(jue) 方案。來自西門子的S7 - 200微型PLC可以被當作獨立的微型PLC解決(jue) 方案或與(yu) 其他控製器相結合使用。
免費學習(xi) PLC編程技術,包吃住還有工資...
Modbus通訊協議簡介
Modbus是由Modicon(現為(wei) 施耐德電氣公司的一個(ge) 品牌)在1979年發明的,是全球第一個(ge) 真正用於(yu) 工業(ye) 現場的總線協議。
ModBus網絡是一個(ge) 工業(ye) 通信係統,由帶智能終端的可編程序控製器和計算機通過公用線路或局部專(zhuan) 用線路連接而成。其係統結構既包括硬件、亦包括軟件。它可應用於(yu) 各種數據采集和過程監控。
ModBus網絡隻有一個(ge) 主機,所有通信都由他發出。網絡可支持247個(ge) 之多的遠程從(cong) 屬控製器,但實際所支持的從(cong) 機數要由所用通信設備決(jue) 定。采用這個(ge) 係統,各PC可以和中心主機交換信息而不影響各PC執行本身的控製任務。
1 MODBUS RTU協議在S7-200中的應用原理
1.1 MODBUS RTU協議與(yu) S7-200相互關(guan) 係簡介
S7-200 CPU上的通訊口Port0可以支持MODBUS RTU協議,成為(wei) MODBUS RTU從(cong) 站。此功能是通過S7-200的自由口通訊模式實現,因此可以通過無線數據電台等慢速通訊設備傳(chuan) 輸。
想在S7-200 CPU與(yu) 其他支持MODBUS RTU的設備使用MODBUS RTU協議通訊,需要由有S7-200 CPU做MODBUS主站。S7-200 CPU做主站必須由用戶自己用自由口模式,按相關(guan) 協議編程。
2 從(cong) 站指令的用法:
S7-200控製係統應用中,MODBUS RTU從(cong) 站指令庫隻支持CPU上的通訊0口(Port0)。要實現MODBUS RTU通訊,需要Step7-Micro/WIN32 V3.2以上版本的編程軟件,而且須安裝Step7-Micro/WIN32 V3.2 Instruction Library(指令庫)。MODBUS RTU功能是通過指令庫中預先編好的程序功能塊實現的。
MODBUS RTU協議在S7-200中應用的基本過程
(1) 首先檢查S7-200控製係統中所用Micro/WIN軟件版本,應當是Step7-Micro/WIN V3.2以上版本。
(2) 檢查Micro/WIN的指令樹中是否存在MODBUS RTU從(cong) 站指令庫(圖1),庫中應當包括MBUS_INIT和MBUS_SLAVE兩(liang) 個(ge) 子程序。如果沒有,須安裝Micro/WIN32 V3.2 Instruction Library(指令庫)軟件包
編程時使用SM0.1—調用子程序MBUS_INIT進行初始化,使用SM0.0—調用研究MBUS_SLAVE,並指定相應參數。關(guan) 於(yu) 參數的詳細說明,可在子程序的局部變量表中找到。
調用MODBUS通訊指令庫
參數意義(yi) 如下:
●模式選擇:啟動/停止MODBUS,1=啟動;0=停止;
● 從(cong) 站地址:MODBUS從(cong) 站址,取值1~247;
● 波特率:可選1200,2400,4800,9600,19200,38400,57600;
● 奇偶校驗:0=無校驗;1=奇校驗;2=偶校驗;
● 延時:附加字符間延時,缺省值為(wei) 0;
● 最大I/Q位:參與(yu) 通訊的最大I/O點數,S7-200I/O映像區為(wei) 128/128,缺省值為(wei) 128;
● 最大AI字數:參與(yu) 通訊的最大AI通道數,可為(wei) 16或32;
● 最大保持寄存器區:參與(yu) 通訊的V存儲(chu) 區字(VW);● 保持寄存器區起始址:以&VBx指定(間接尋址方式);
● 初始化完成標誌:成功初始化後置1;
● 錯誤代碼:0=無錯誤。
1.3 注意的問題
調用Step7-Mciro/WIN32 V3.2 Instruction Library(指令庫)需要分配庫指令數據區(Library Memory)。庫指令數據區是相應庫子程序和中斷程序所要用到變量存儲(chu) 空間。編程時不分配庫指令數據區,編譯時會(hui) 產(chan) 生許多相同的錯誤。
由子程序參數HoldStart和MaxHold指定保持寄存器區,是S7-200 CPUV數據存儲(chu) 區中分配,此數據區不能和庫指令數據區有任何重疊,否則運行時會(hui) 產(chan) 生錯誤,不能正常通訊。注意MODBUS 中保持寄存器區按“字”尋址,即MaxHold規定是VW而VB個(ge) 數。
3 主站指令的用法:
1. MODBUS RTU 主站指令庫的功能是通過在用戶程序中調用預先編好的程序功能塊實現的,該庫對 Port 0 和 Port 1 有效。該指令庫將設置通信口工作在自由口模式下。
2. MODBUS RTU 主站指令庫使用了一些用戶中斷功能,編其他程序時不能在用戶程序中禁止中斷。
3. MODBUS RTU 主站庫對CPU的版本有要求。CPU 的版本必須為(wei) 2.00 或者 2.01(即訂貨號為(wei) 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
使用 MODBUS RTU 主站指令庫,可以讀寫(xie) MODBUS RTU 從(cong) 站的數字量、模擬量 I/O 以及保持寄存器。
要使用 MODBUS RTU 主站指令庫,須遵循下列步驟:
安裝西門子標準指令庫
按照要求編寫(xie) 用戶程序調用 MODBUS RTU 主站指令庫
MODBUS RTU 主站功能編程
1. 調用 MODBUS RTU 主站初始化和控製子程序
使用 SM0.0 調用 MBUS_CTRL 完成主站的初始化,並啟動其功能控製:
用 SM0.0 調用 MODBUS RTU 主站初始化與(yu) 控製子程序
各參數意義(yi) 如下:
a. EN 使能:必須保證每一掃描周期都被使能(使用 SM0.0)
b. Mode 模式:為(wei) 1 時,使能 MODBUS 協議功能;為(wei) 0 時恢複為(wei) 係統 PPI 協議
c. Baud 波特率:支持的通訊波特率為(wei) 1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校驗:校驗方式選擇
0=無校驗
1=奇較驗
2=偶較驗
e. Timeout 超時:主站等待從(cong) 站響應的時間,以毫秒為(wei) 單位,典型的設置值為(wei) 1000 毫秒(1 秒),允許設置的範圍為(wei) 1 - 32767。
注意: 這個(ge) 值必須設置足夠大以保證從(cong) 站有時間響應。
f. Done 完成位:初始化完成,此位會(hui) 自動置1。可以用該位啟動 MBUS_MSG 讀寫(xie) 操作(見例程)
g. Error 初始化錯誤代碼(隻有在 Done 位為(wei) 1時有效):
0= 無錯誤
1= 校驗選擇非法
2= 波特率選擇非法
3= 模式選擇非法
2. 調用 MODBUS RTU 主站讀寫(xie) 子程序MBUS_MSG,發送一個(ge) MODBUS 請求;
調用MODBUS RTU 主站讀寫(xie) 子程序
各參數意義(yi) 如下:
a. EN 使能:同一時刻隻能有一個(ge) 讀寫(xie) 功能(即 MBUS_MSG)使能
注意:建議每一個(ge) 讀寫(xie) 功能(即 MBUS_MSG)都用上一個(ge) MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫(xie) 指令循環進行(見例程)。
b. First 讀寫(xie) 請求位:每一個(ge) 新的讀寫(xie) 請求必須使用脈衝(chong) 觸發
c. Slave 從(cong) 站地址:可選擇的範圍 1 - 247
d. RW 從(cong) 站地址:0 = 讀, 1 = 寫(xie)
注意:
1. 開關(guan) 量輸出和保持寄存器支持讀和寫(xie) 功能
2. 開關(guan) 量輸入和模擬量輸入隻支持讀功能
e. Addr 讀寫(xie) 從(cong) 站的 選擇讀寫(xie) 的數據類型
數據地址: 00001 至 0xxxx - 開關(guan) 量輸出
10001 至 1xxxx - 開關(guan) 量輸入
30001 至 3xxxx - 模擬量輸入
40001 至 4xxxx - 保持寄存器
f. Count 數據個(ge) 數 通訊的數據個(ge) 數(位或字的個(ge) 數)
注意: MODBUS主站可讀/寫(xie) 的最大數據量為(wei) 120個(ge) 字(是指每一個(ge) MBUS_MSG 指令)
g. DataPtr 數據指針:
1. 如果是讀指令,讀回的數據放到這個(ge) 數據區中
2. 如果是寫(xie) 指令,要寫(xie) 出的數據放到這個(ge) 數據區中
h. Done 完成位 讀寫(xie) 功能完成位
i. Error 錯誤代碼:隻有在 Done 位為(wei) 1時,錯誤代碼才有效
0 = 無錯誤
1 = 響應校驗錯誤
2 = 未用
3 = 接收超時(從(cong) 站無響應)
4 = 請求參數錯誤(slave address, MODBUS address, count, RW)
5 = MODBUS/自由口未使能
6 = MODBUS正在忙於(yu) 其它請求
7 = 響應錯誤(響應不是請求的操作)
8 = 響應CRC校驗和錯誤
101 = 從(cong) 站不支持請求的功能
102 = 從(cong) 站不支持數據地址
103 = 從(cong) 站不支持此種數據類型
104 = 從(cong) 站設備故障
105 = 從(cong) 站接受了信息,但是響應被延遲
106 = 從(cong) 站忙,拒絕了該信息
107 = 從(cong) 站拒絕了信息
108 = 從(cong) 站存儲(chu) 器奇偶錯誤
常見的錯誤:
如果多個(ge) MBUS_MSG 指令同時使能會(hui) 造成 6 號錯誤
從(cong) 站 delay 參數設的時間過長會(hui) 造成主站 3 號錯誤
從(cong) 站掉電或不運行,網絡故障都會(hui) 造成主站 3 號錯誤
3. 在 CPU 的 V 數據區中為(wei) 庫指令分配存儲(chu) 區(Library Memory)
MODBUS Master 指令庫需要一個(ge) 284個(ge) 字節的全局 V 存儲(chu) 區。
西門子 S7200 PLC MODBUS支持的功能碼
功能碼 |
描述 |
1 |
讀取單個(ge) /多個(ge) 線圈的實際輸出狀態。功能1返回任意數量輸出點的接通/斷開狀態(Q)。 |
2 |
讀取單個(ge) /多個(ge) 線圈的實際輸入狀態。功能2返回任意數量的輸入點的接通/斷開狀態(I) |
3 |
多個(ge) 保持寄存器。功能3返回V存儲(chu) 器的內(nei) 容。保持寄存器在MODBUS下是字類型,在一個(ge) 請求中最多可讀120個(ge) 字。 |
4 |
讀單個(ge) /多個(ge) 輸入寄存器,返回模擬輸入值。 |
5 |
寫(xie) 單個(ge) 線圈(實際輸出)。功能5將實際輸出點設置為(wei) 指定值。該輸出點不是被強製,用戶程序可以重寫(xie) 由MODBUS的請求而寫(xie) 入的值。 |
6 |
寫(xie) 單個(ge) 保持寄存器。功能6寫(xie) 一個(ge) 單個(ge) 保持寄存器的值到S7-200的V存儲(chu) 區。 |
15 |
寫(xie) 多個(ge) 線圈(實際輸出)。功能15寫(xie) 多個(ge) 實際輸出值到S7-200的Q映像區。起始輸出點必須是一個(ge) 字節的開始(如Q0.0或Q2.0),並且要寫(xie) 得輸出的數量是8的倍數。這是MODBUS從(cong) 站協議指令的限定。這些點不是被強製,用戶程序可以重寫(xie) 由MODBUS的請求而寫(xie) 入的值。 |
16 |
寫(xie) 多個(ge) 保持寄存器。功能16寫(xie) 多個(ge) 保持寄存器到S7-200的V區。在一個(ge) 請求中最多可寫(xie) 120字。 |
例 國產(chan) 精驅變頻器與(yu) S7200 CPU224XP PLC通訊
(1)設置變頻器的通訊參數
參數 |
設置值 |
說明 |
P0.01 |
4 |
啟動命令改為(wei) 串行通訊 |
P0.03 |
2 |
頻率給定改為(wei) 串行通訊 |
P3.09 |
133 |
9600波特率 無奇偶校驗 |
P3.10 |
3 |
從(cong) 站地址 3 |
硬件接線
S7-200通訊口1
第3腳-----RS485+ 第8腳----RS485-
(3) 初始化程序
變頻器的控製地址,因為(wei) 變頻器控製地址為(wei) 2000H,所以換位10進製為(wei) 8192,MUDBUS地址40001開頭,需要加1,控製地址為(wei) 8193,功能碼4為(wei) 讀寫(xie) 寄存器,因為(wei) 啟
動變頻器的控製命令為(wei) 17,所以傳(chuan) 送17到VW200則啟動變頻器
(5 ) 設置變頻器的給定頻率
變頻器的通信控製字節
西門子通訊MUDBUS協議在工控上使用最廣泛的一種協議,具備以下幾個(ge) 特點
1 )使用簡單,利用MUDBUS庫文件簡單的幾條指令就能實現與(yu) 智能儀(yi) 表,變頻器,打印機等設備進行通訊,且無需加其他硬件上的成本MODBUS總線廣泛應用於(yu) 儀(yi) 器儀(yi) 表、智能高低壓電器、變送器、可編程控製器、人機界麵、變頻器、現場智能設備等諸多領域。MODBUS與(yu) 其他的現場總線和工業(ye) 網絡相比有以下幾個(ge) 顯著特點:
2)標準、開放:用戶可以免費放心的使用
MODBUS協議,不用繳納許可費用,不會(hui) 涉及侵犯知識產(chan) 權。目前支持MODBUS的廠一家超過400家,支持MODBUS的產(chan) 品超過600種。在中國,MODBUS已經成為(wei) 國家標準GB/T19582-2008。據不完全統 計:截止到2007年MODBUS的節點安裝數量已經超過了1000萬(wan) 個(ge) 。
3)應用廣泛:凡MODBUS協議設備具有RS232/485接口的都可以使用本產(chan) 品實現與(yu) 現場總線PROFIBUS的互連。如:具有MODBUS協議接口的變頻器、智能高低壓電器、電機啟動保護裝置、電量測量裝置、智能現場測量設備、各種變送器及儀(yi) 表等。
4)MODBUS可以支持較多類型的電氣接口:MODBUS 總線協議采用主站查詢從(cong) 站的方式,物理接口可以是RS232、RS485、RS422、RJ45,還可以在各種介質上傳(chuan) 送,如雙絞線、光纖、無線射頻等.
5)MODBUS的幀格式較為(wei) 簡單、緊湊,格式規範,易於(yu) 傳(chuan) 輸,通俗易懂。用戶使用容易,廠商開發簡單。用戶不必了解PROFIBUS和MODBUS技術細節,隻需參考說明手冊(ce) 及提供的應用實例,按要求完成配置,不需要複雜的編程,即可在短時間內(nei) 實現設備間的連接通信。
6)透明通信:用戶可以依照PROFIBUS通信數據區和MODBUS通信數據區的映射關(guan) 係,實現PROFIBUS到MODBUS之間的數據透明通信。
免責聲明:本文係網絡轉載或改編,版權歸原作者所有!