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