工控網(wǎng)首頁
>

應用設計

>

基于西門子S7系列PLC的集成MPI和Modbus網(wǎng)絡應用

基于西門子S7系列PLC的集成MPI和Modbus網(wǎng)絡應用

2008/2/18 11:44:00
[摘 要] 本文以西門子公司S7-300和S7-200系列PLC為例,使用其CPU集成的通信端口實現(xiàn)MPI網(wǎng)絡和Modbus網(wǎng)絡的透明通信,為新建現(xiàn)場總線和現(xiàn)有現(xiàn)場總線的升級提供一種可靠且成本極低的方案,也為Profibus-DP網(wǎng)絡和Modbus網(wǎng)絡在同一系統(tǒng)中的集成提供一種思路。 [關鍵詞] S7-300 S7-200 MPI Modbus 現(xiàn)場總線 1 引言 Modbus現(xiàn)場總線自1979年誕生以來,已經(jīng)經(jīng)歷了二十多年市場的洗禮。由于其兼容的設備廣泛,通用性和易用性好,構成網(wǎng)絡的成本低廉,在中小型系統(tǒng)中占據(jù)著大壁江山。MPI網(wǎng)絡是西門子公司主導的一種網(wǎng)絡,在S7-300,S7-400系列PLC中做為一種標準配置集成于CPU本體上,也可以將S7-200系列PLC方便的納入MPI網(wǎng)絡中。對于一個正在使用西門子S7系列控制器的系統(tǒng)來說,如何將已有的Modbus總線集成到S7控制系統(tǒng)中來,是一個頭痛的問題,雖然可以使用S7-300/400的CP通信模板來實現(xiàn),但繁瑣的編程和用于購買軟硬件的額外支出也是一個問題。本文以S7-200 CPU為網(wǎng)關,實現(xiàn)了S7-300/400和Modbus從站的透明通信,為解決這些問題提供一種可靠且成本極低的方案,也為Profibus-DP網(wǎng)絡和Modbus網(wǎng)絡在同一系統(tǒng)中的集成提供一種思路。 2 設計方法 2.1硬件構成 本文旨在建立一個由S7-300(CPU312)和一個S7-200(CPU224XP或CPU226),若干個支持MODBUS RTU協(xié)議的溫度表構成的混合MPI和MODBUS RTU兩種現(xiàn)場總線的通信網(wǎng)絡。由于S7-200/300/400全系列CPU均支持MPI協(xié)議,且使用CPU模塊上集成的通信口即可完成MPI通信,所以硬件方面不需要額外增加任何其它設備。在這個混合通信網(wǎng)絡中,我們使用S7-200作為網(wǎng)橋,實現(xiàn)MPI和MODBUS RTU兩種協(xié)議間的互相轉(zhuǎn)換。系統(tǒng)的網(wǎng)絡構成如圖1所示:
溫度表 圖1 網(wǎng)絡構成圖 圖1中紅色線條表示MPI網(wǎng)絡,藍色線條表示MODBUS網(wǎng)絡,PC僅作為編程器(PG)使用。在MPI網(wǎng)絡中,S7-200作為MPI從站和作為主站的S7-300或PG通信,但在MODBUS網(wǎng)絡中,S7-200卻是作為主站和溫度表等從站通信,這是通過在S7-200的通信口0上加載MODBUS通信協(xié)議,在通信口1上加載MPI通信協(xié)議來實現(xiàn)的。 2.2 通信鏈路詳解 (1)PG與PLC間的通信:編程器PG僅可以通過MPI總線與S7-200,S7-300,TP270進行通信。除了上載/下載程序外,還可以在PG上運行Winccflexible Runtime運行系統(tǒng)來實現(xiàn)對系統(tǒng)的監(jiān)控。注意:此處只能使用PC Adapter來實現(xiàn)上述鏈接。示意圖如圖2:
圖2 PG與PLC間的通信 (2)MPI通信鏈路:在MPI通信鏈路中,S7-300作為主站,既可以與從站S7-200通信,又可以接受來自操作員站TP270的控制。TP270既可以和S7-300通信,也可以和S7-200通信,通過操作員的輸入,控制S7-300和S7-200。作為MPI從站的S7-200,除了接受TP270的控制,更主要的是將I,Q,V區(qū)域的變量與S7-300共享,以便S7-300進行讀寫操作,從而實現(xiàn)對MODBUS網(wǎng)絡數(shù)據(jù)的讀寫。示意圖如圖3:
圖3:MPI通信鏈路示意圖 (3)MODBUS通信鏈路:在MODBUS通信鏈路中,S7-200作為MODBUS主站直接對MODBUS從站進行讀寫,S7-300和TP270并不直接參與通信。作為從站的溫度表也僅僅回應S7-200的通訊請求。當然,受MODBUS RTU的限制,各溫度表從站之間不能互相通信,而只是回應來自主站S7-200的通訊請求。示意圖如圖4:
圖4:MODBUS通信鏈路 2.3 軟件設計 (1)MODBUS通信程序:為了在S7-200的通信口0加載MODBUS通信協(xié)議,需要使用通信口0的自由口通信模式,通過在STEP7-Micro/Win中編寫通信程序,實現(xiàn)該目的。這里我們使用MODBUS協(xié)議庫來實現(xiàn)該功能。以讀取溫度表從站的當前值和設定值,并寫設定值為例,保持寄存器40001和40002分別為溫度當前值和設定值。我們將程序分為兩部分,一部分是讀寫溫度表的子程序(后文稱為加熱控制子程序),另一部分是主程序。 (A) 首先需要在主程序中使用SM0.0調(diào)用加熱控制子程序SBR(Heating_Control),如圖5所示:
圖5:在主程序中調(diào)用加熱控制子程序 (B) 其次在加熱控制子程序中使用MBUS_CTRL對S7-200的通信口0進行通信初始化,設置通信參數(shù)等,如圖6所示:
圖6:對通信口0進行初始化的程序 MBUS_CTRL的幾個主要變量設置意義如下: Mode: 該變量的數(shù)據(jù)類型為BOOL型,當BOOL值為1時,通信口0用于MODBUS通信, 當BOOL值為0時,通信口0用于PPI通信。 Baud:該變量的數(shù)據(jù)類型為DWORD型,用來設置MODBUS網(wǎng)絡的通信速率,可設置范圍為1200bps到115200bps。 Parity:該變量類型為BYTE型,用來設置奇偶校驗的類型,可設置為0,1或2。0表示無奇偶校驗,1表示奇校驗,2表示偶校驗。 Timeout:該變量為INT型,表示通信超時的時間值,單位為毫秒。 Done:該變量為BOOL型,指示初始化完成,正常完成后會一直置位。 Error:錯誤狀態(tài),指示通信初始化時的狀態(tài)。該變量類型為BYTE型。 由于Mode變量使用了SM0.0,所以當S7-200處于運行狀態(tài)時,通信口0將一直用于MODBUS通信,不能用于和STEP 7-Micro/Win通信,即不能用于上載/下載程序,但通信口1不受影響,可用于和STEP 7-Micro/Win通信。 (C) 最后在加熱控制子程序中使用MBUS_MSG實現(xiàn)對MODBUS從站的讀寫。以讀取4號溫度表從站的當前值和設定值為例,程序如圖7所示:
圖7:讀取4號從站的當前值和設定值 MBUS_CTRL的幾個主要變量設置意義如下: First:BOOL型變量。表示消息類型。為1時表示是新消息,為0時表示是重復的消息。 Slave:從站地址號。因為我們要讀取4號溫度表的值,所以這里設定為4,其設置范圍為0——247(在MODBUS規(guī)約中,地址0表示廣播地址)。該變量的數(shù)據(jù)類型為BYTE型。 RW:BYTE型變量。為0時表示該消息是讀取從站寄存器的請求,為1時表示該消息是寫從站寄存器的請求。因為是讀取4號從站的寄存器,所以此處設置為0。 Addr:DWORD型變量。表示要讀/寫的從站寄存器的開始地址。因為保持寄存器40001和40002分別為溫度當前值和設定值,所以此處設置為40001。 Count:INT型變量。表示要讀/寫的寄存器數(shù)量。溫度當前值和設定值占用了兩個連續(xù)的寄存器,所以此處設置為2。其設置范圍為:1到120個WORD或1到1920個BIT。 DataPtr:DWORD型變量。對于讀從站寄存器的操作,該參數(shù)表示將讀取出來的參數(shù)存放在哪里;對于寫從站寄存器的操作,該參數(shù)表示將哪里的數(shù)據(jù)寫入到從站寄存器。如果讀取的從站寄存器是兩個或更多個,則從DataPtr指定的連續(xù)個內(nèi)存區(qū)域?qū)⒈徽加?。對于本例中DataPtr=&VB304,Count=2的設置,表示從站的40001中的值將被存放到S7-200的VW304,40002中的值將被存放到S7-200的VW306。 Done:完成標志。BOOL型變量。為1時表示已經(jīng)完成,為0時表示任務繁忙中。 Error:錯誤狀態(tài)。BYTE型變量。為0時表示無錯誤。 需要注意:只有在復位MBUS_MSG的EN位后,剩余的讀寫操作才能順利完成。所以在MBUS-MSG的下一個網(wǎng)絡中,我們利用Done標志位來復位EN位,為后面的通信做好準備。 (D) 對4號從站的寄存器進行寫操作,同樣使用MBUS-MSG,如圖8所示:
圖8 寫4號從站的設定值 圖8中我們將S7-200的VW466中的值寫入到了4號站的40002。 到這里為止,已經(jīng)將MODBUS從站的值和S7-200的V區(qū)域數(shù)據(jù)進行了交換,接下來進行S7-200和TP270的數(shù)據(jù)交換。 (2)S7-200和TP270的MPI通信程序 通過在Winccflexible中的組態(tài),可以輕松實現(xiàn)在TP270上讀寫S7-200中(MODBUS從站寄存器)的數(shù)據(jù)。打開Winccflexible,在“通訊----連接”中建立兩個連接,分別命名為“S7-200”和“S7-300”,為“S7-200”選擇驅(qū)動程序SIMATIC S7 200,為“S7-300”選擇驅(qū)動程序SIMATIC S7 300/400,并設置在線模式為“開”,為“S7-200”設置地址為3,為“S7-300”設置地址為“2”,此處的地址為MPI地址。詳細設置如圖9和圖10所示:
圖9 S7-200和TP270的通信設置
圖10 S7-300和TP270的通信設置 要在屏幕上顯示溫度表的當前值和設定值,只需要在畫面中放置對應S7-200的V區(qū)域的輸出域即可。新建一畫面,并在其中放置一輸出域,設置該輸出域的屬性如圖11所示:
圖11 輸出域的設置 對于變量VW304的設置,如圖12,圖13所示:
圖12 變量VW304的常規(guī)設置
圖13 變量VW304的尋址設置 要修改溫度表的設置值,需要在畫面中設置一輸入域,設置其地址為VW466,然后由操作員在屏幕
投訴建議

提交

查看更多評論
其他資訊

查看更多

SCON-CB系列控制器 使用說明書

S7-200 CPU集成模擬量I/O在溫度測量中的應用

基于觸摸屏的遠程控制的探討與實現(xiàn)

在三菱GT Designer中制作動畫