摘 要:本文在介紹西門(mén)子公司的S7-200系列的可編程控制器,以及上位機(jī)監(jiān)控軟件“組態(tài)王”軟件的基礎(chǔ)上,根據(jù)轉(zhuǎn)轍機(jī)測(cè)試臺(tái)微機(jī)監(jiān)控系統(tǒng)的要求,提出一種用VB6.0實(shí)現(xiàn)組態(tài)王軟件實(shí)時(shí)監(jiān)控西門(mén)子系列PLC的方法。
關(guān)鍵詞:組態(tài)王;可編程控制器;動(dòng)態(tài)數(shù)據(jù)交換
[b][align=center]The Control System of Point Switch Based on PLC and Kingview Software
JING Wei,WANG Peng, WU Wei[/align][/b]
Abstract: According to requirement of the control system of Port Switch, one method of the Kingview software system of real time control of PLC by VB6.0 is brought forward, based on introduction of PLC of S7-200 serial of SIEMENS and Kingview software.
Keywords: Kingview;programmable logic control(PLC);dynamic data exchange(DDE)
1 引言
工業(yè)自動(dòng)化通用組態(tài)軟件-組態(tài)王軟件系統(tǒng)與最終工程人員使用的具體的PLC或現(xiàn)場(chǎng)部件無(wú)關(guān)。對(duì)于不同的硬件設(shè)施,只需為組態(tài)王配置相應(yīng)的通訊驅(qū)動(dòng)程序即可。組態(tài)王支持的硬件設(shè)備包括:可編程控制器(PLC)、智能模塊、板卡、智能儀表、變頻器等等。
PLC以卓越的可靠性和方便的可編程性廣泛應(yīng)用于工業(yè)控制領(lǐng)域[1]。實(shí)現(xiàn)PC機(jī)和PLC通訊的目的是為了向用戶提供諸如工藝流程圖顯示、動(dòng)態(tài)數(shù)據(jù)畫(huà)面顯示、報(bào)表顯示、窗口技術(shù)等多種功能,為PLC提供良好的人機(jī)界面。
本工程采用西門(mén)子公司的S7-200系列的可編程控制器[2],及上位工控機(jī)組成控制系統(tǒng)。上位機(jī)監(jiān)控軟件采用北京亞控科技發(fā)展有限公司的6.5“組態(tài)王”組態(tài)軟件,實(shí)現(xiàn)對(duì)轉(zhuǎn)轍機(jī)測(cè)試臺(tái)的過(guò)程監(jiān)控及數(shù)據(jù)處理。
2 系統(tǒng)簡(jiǎn)介
轉(zhuǎn)轍機(jī)是鐵路上常見(jiàn)的用于控制火車前進(jìn)方向的設(shè)備。轉(zhuǎn)轍機(jī)活動(dòng)桿的伸出或者縮回決定火車不同的前進(jìn)方向。
轉(zhuǎn)轍機(jī)實(shí)時(shí)監(jiān)控系統(tǒng)以組態(tài)王為主要運(yùn)行畫(huà)面,首先在組態(tài)王界面上對(duì)被監(jiān)控系統(tǒng)的參數(shù)進(jìn)行設(shè)置,然后起動(dòng)被測(cè)的轉(zhuǎn)轍機(jī)測(cè)試臺(tái),在組態(tài)王的界面上可以動(dòng)態(tài)顯示下位機(jī)的運(yùn)行狀態(tài)以及完成對(duì)多種電動(dòng)直流轉(zhuǎn)轍機(jī)各項(xiàng)電器性能指標(biāo)的測(cè)試,如工作電流、工作電壓、摩擦電流(故障電流)、轉(zhuǎn)換力及轉(zhuǎn)換時(shí)間(動(dòng)作時(shí)間)等。由于組態(tài)王只提供這類西門(mén)子可編程控制器PLC的驅(qū)動(dòng)程序,沒(méi)有提供其通訊協(xié)議,因此,在功能并不很強(qiáng)大的組態(tài)王內(nèi)部直接開(kāi)發(fā)可編程控制器PLC的通訊協(xié)議是有較大難度的。一般采用的方法是:利用Visual Basic提供的串行通訊功能[3]、[4],實(shí)現(xiàn)與可編程控制器PLC之間的通訊,再利用VB的DDE功能完成組態(tài)王與Visual Basic之間的動(dòng)態(tài)數(shù)據(jù)交換。這樣就把從可編程控制器PLC采集到的外部信號(hào)通過(guò)Visual Basic間接動(dòng)態(tài)的顯示在組態(tài)王界面上。其系統(tǒng)結(jié)構(gòu)如圖1所示。
3 VB與可編程控制器PLC之間串行通訊的實(shí)現(xiàn)
帶異步通訊適配器的PC機(jī)與PLC只有滿足如下條件,才能互聯(lián)通信[5]:帶有異步通訊接口的PLC才能與帶異步通訊適配器的PC機(jī)互聯(lián);雙方采用的總線標(biāo)準(zhǔn)一致,否則要通過(guò)“總線標(biāo)準(zhǔn)變換單元”變換之后才能互聯(lián);雙方的初始化、波特率、數(shù)據(jù)位數(shù)、停止位數(shù)、奇偶效驗(yàn)都相同。只有在對(duì)PLC的通訊協(xié)議分析清楚的情況下,嚴(yán)格的按照協(xié)議的規(guī)定及幀格式來(lái)編寫(xiě)PC機(jī)的通訊程序。PLC中配有通訊機(jī)制,一般不需要用戶編程。
PC機(jī)與西門(mén)子系列PLC不能直接連接,要通過(guò)一條PC/PPI電纜進(jìn)行RS232/RS485的變換,圖2表示了它們之間的連接關(guān)系。
3.1可編程控制器PLC的通訊協(xié)議
設(shè)定可編程控制器PLC的通訊協(xié)議是通過(guò)對(duì)其自由端口的初始化來(lái)完成的。在自由端口模式下,通訊協(xié)議完全由梯形圖控制。只有CPU處于RUN模式時(shí),才能進(jìn)行自由端口通訊。SMB30(用于端口0)和SMB31(用于端口1)用于選擇波特率、奇偶校驗(yàn)和數(shù)據(jù)位數(shù)。自由端口的控制字節(jié)描述如下:
BBB 自由口波特率
000= 38400波特 100= 2400波特
001= 19200波特 101= 1200波特
010= 9600波特 110= 600波特
011= 4800波特 111= 300波特
PP 奇偶選擇 MM 協(xié)議選擇
00= 無(wú)奇偶校驗(yàn) 00= 點(diǎn)到點(diǎn)協(xié)議(PPI/從站模式)
01= 偶校驗(yàn) 01= 自由口協(xié)議
10= 無(wú)奇偶校驗(yàn) 10= PPI/主站模式
D 每個(gè)字符的數(shù)據(jù)位
0= 每個(gè)字符8位 1= 每個(gè)字符7位
這里選擇的是SMB30(用于端口0),設(shè)置的字節(jié)為9(0 0001 001H),即:該協(xié)議為自由口協(xié)議,自由口波特率為9600,無(wú)奇偶校驗(yàn),每個(gè)字符的數(shù)據(jù)位為8位。
發(fā)送 發(fā)送指令(XMT)激活發(fā)送數(shù)據(jù)緩沖區(qū)(TBL)中的數(shù)據(jù)。數(shù)據(jù)緩沖區(qū)的第一個(gè)數(shù)據(jù)指明了要發(fā)送的字節(jié)數(shù)。PORT指定了用于發(fā)送的端口。
XMT指令發(fā)送一個(gè)或多個(gè)字符,最多有255個(gè)字節(jié)的緩沖區(qū)。如果有一個(gè)中斷程序連接到發(fā)送結(jié)束事件上,在發(fā)完緩沖區(qū)中的最后一個(gè)字符時(shí),則會(huì)產(chǎn)生一個(gè)中斷 (對(duì)端口0為中斷事件9,對(duì)端口1為中斷事件26)。XMT指令可以監(jiān)視發(fā)送完成狀態(tài)位SM4.5或SM4.6的變化,而不是用中斷進(jìn)行發(fā)送。
接收 接收指令(RCV)激活初始化或結(jié)束接收信息的服務(wù)。通過(guò)指定端口(PORT)接收的信息存儲(chǔ)于數(shù)據(jù)緩沖區(qū)(TBL)。數(shù)據(jù)緩沖區(qū)的第一個(gè)數(shù)據(jù)指明了接收的字節(jié)數(shù)。RCV指令接收一個(gè)或多個(gè)字符,最多有255個(gè)字符,這些字符存儲(chǔ)在緩沖區(qū)中。如果有一個(gè)中斷程序連接到接收完成事件上,在接收到緩沖區(qū)中的最后一個(gè)字符時(shí),則會(huì)產(chǎn)生一個(gè)中斷(對(duì)端口0為中斷事件23,對(duì)端口1為中斷事件24)??梢员O(jiān)視SMB86或SMB186狀態(tài)的變化,而不是用中斷進(jìn)行信息接收。
本程序展示了接收和發(fā)送的使用,它將接收一串字符,直到接收到回車符,信息又發(fā)回到發(fā)送方。
MAIN:
LD SM0.1
MOVB 16#9, SMB30 //選擇9600波特率,8位數(shù)據(jù),無(wú)校驗(yàn)
MOVB 16#B0, SMB87 //初始化RCV信息控制信息
MOVB 16#0A, SMB89 //設(shè)定信息結(jié)束為回車符
MOVW 5, SMW90 //設(shè)置空閑超時(shí)為5ms
MOVB 100, SMB94 //最大字符數(shù)為100
ATCH 0, 23 //接收完成事件連接到中斷
ATCH 1, 9 //發(fā)送完成事件連接到中斷
ENI //允許中斷
RCV VB100, 0 //接收信箱緩沖區(qū)指向VB100
INT_0: INT_1:
LDB= SMB86, 16#20 LD SM0.0
MOVB 10, SMB34 DTCH 10
ATCH 2, 10 XMT VB100, 0
CRETI INT_2:
NOT LD SM0.0
RCV VB100, 0 RCV VB100, 0
3.2 VB的通訊協(xié)議
在VB中MSComm控件可以采用輪詢或事件驅(qū)動(dòng)的方法從端口獲取數(shù)據(jù)[6]。這里采用的是事件驅(qū)動(dòng)的方法。這種方法就是在一個(gè)事件發(fā)生的時(shí)候,讓程序自動(dòng)的跳到一段程序。該控件的Oncomm事件執(zhí)行這個(gè)功能。Oncomm程序負(fù)責(zé)對(duì)諸如在串口的硬件中斷或者一個(gè)軟件緩存的計(jì)數(shù)器到達(dá)了一個(gè)觸發(fā)值這樣的事件時(shí)做出反應(yīng)。
在VB中放置一個(gè)TextBox控件。通過(guò)設(shè)定其Settings、CommPort、InputMode、Handshaking、PortOpen屬性來(lái)實(shí)現(xiàn)設(shè)定VB的通訊協(xié)議。這里設(shè)定Settings屬性為:9600,n,8,1,即:該協(xié)議的自由口波特率為9600,無(wú)奇偶校驗(yàn),每個(gè)字符的數(shù)據(jù)位為8位。
4 VB與組態(tài)王軟件數(shù)據(jù)交換的實(shí)現(xiàn)
VB與“組態(tài)王”之間通訊的實(shí)現(xiàn)主要是通過(guò)“組態(tài)王”提供的動(dòng)態(tài)數(shù)據(jù)交換(DDE)來(lái)完成的。DDE是Windows平臺(tái)上的一個(gè)完整的通信協(xié)議,它使應(yīng)用程序能彼此交換數(shù)據(jù)和發(fā)送指令。DDE過(guò)程可以比喻成兩個(gè)人的對(duì)話。提問(wèn)的一方稱為“顧客”(Client),回答的一方稱為“服務(wù)器”(Server)。一個(gè)應(yīng)用程序可以同時(shí)是“顧客”和“服務(wù)器”:當(dāng)它向其他程序中請(qǐng)求數(shù)據(jù)時(shí),它充當(dāng)?shù)氖恰邦櫩汀?若有其他程序需要它提供數(shù)據(jù),它又成了“服務(wù)器”。這里的關(guān)鍵是要實(shí)現(xiàn)的是“組態(tài)王”作為顧客程序從VB得到數(shù)據(jù)。
使VB成為“服務(wù)器”很簡(jiǎn)單,只需在“組態(tài)王”中設(shè)置服務(wù)器程序的三個(gè)標(biāo)識(shí)名(應(yīng)用程序名、主題名、項(xiàng)目名),并把VB應(yīng)用程序中提供數(shù)據(jù)的窗體的LinkMode屬性設(shè)置為1,不必在VB中增加任何程序。值得注意的是,將VB的FormTopic的屬性,設(shè)定成和在組態(tài)王中定義DDE設(shè)備時(shí)的“話題名”一樣;在組態(tài)王定義要顯示出指定的VB可執(zhí)行文件中指定的TextBox控件的值。
5 結(jié)束語(yǔ)
當(dāng)系統(tǒng)開(kāi)始運(yùn)行前,要求首先運(yùn)行VB的可執(zhí)行文件作為后臺(tái)運(yùn)行程序,然后才能運(yùn)行組態(tài)王系統(tǒng)。當(dāng)可編程控制器PLC發(fā)送數(shù)據(jù)的時(shí)候,由VB接受到此數(shù)據(jù),再通過(guò)組態(tài)王提供的DDE功能,將該數(shù)據(jù)顯示到組態(tài)王界面上。這樣,就把從可編程控制器PLC采集到的外部信號(hào)通過(guò)VB間接動(dòng)態(tài)的顯示在組態(tài)王界面上。
該方法實(shí)現(xiàn)了組態(tài)王對(duì)西門(mén)子系列PLC的實(shí)時(shí)監(jiān)控。經(jīng)過(guò)測(cè)試可知,系統(tǒng)的實(shí)時(shí)響應(yīng)速度能達(dá)到ms級(jí),并且這種實(shí)現(xiàn)系統(tǒng)實(shí)時(shí)監(jiān)控的方法可移植性強(qiáng),對(duì)于監(jiān)控其他類型的可編程控制器PLC或單片機(jī)也適用。
參考文獻(xiàn):
[1]齊從謙, 王士蘭編. PLC技術(shù)及應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社, 2000
[2]范逸之, 陳立元, 孫德萱等. 利用Visual Basic實(shí)現(xiàn)串并行通信技術(shù)[M].北京:清華大學(xué)出版社, 2001
[3]楊勇. 用VB6.0實(shí)現(xiàn)PLC與上位計(jì)算機(jī)的串行通信[J]. 微計(jì)算機(jī)信息, 2005, 10-1: 56-59.
[4] Jan Axelson著. 串行端口大全[M]. 精英科技譯. 北京:中國(guó)電力出版社, 2001
[5] (美) 麥凱爾維, 馬丁森. Visual Basic 5開(kāi)發(fā)使用手冊(cè)[M]. 楊繼平譯. 北京:機(jī)械工業(yè)出版社, 1997
[6]西門(mén)子有限公司. 西門(mén)子SIMATIC S7-200可編程序控制器系統(tǒng)手冊(cè)[M]. 2000