PLC串行通信在測控裝置中的實現(xiàn) 作者: 時間:2007-03-09 來源:網(wǎng)絡 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 摘要:介紹了HG-2003型溫升測控置的測控對象和結(jié)構(gòu)設(shè)計。詳細討論了裝置中所采用的西門子公司的S7-200型PLC和PC機之間串行通信程序的設(shè)計與實現(xiàn),即S7-200梯形圖通信程序設(shè)計與實現(xiàn)中的細節(jié)和難點。簡要介紹了上位PC機通信程序的設(shè)計。該通信功能的實現(xiàn)確保了該裝置結(jié)構(gòu)簡單、可靠性高、便于二次開發(fā)。 關(guān)鍵詞:RS-232串行通信 可編程控制器 自由端口模式 數(shù)據(jù)緩沖區(qū) PC/PPI電纜 HG-2003型溫升測控裝置是筆者與我國北京某科學研究聯(lián)聯(lián)合開發(fā)的一套專門用于高壓晶閘管閥溫升檢測試驗的測控裝置??紤]到PLC及其網(wǎng)絡已被公認為現(xiàn)代測控裝置開發(fā)的幾大支柱之一,而且從近幾年的統(tǒng)計數(shù)字來看,PLC產(chǎn)品在世界范圍內(nèi)的產(chǎn)量、銷量高居各測控器件榜首,因此筆者決定本測控系統(tǒng)的核心器件采用可編程控制器(PLC),其基本功能可通過軟件編程實現(xiàn)。PLC的三大亮點是:(1)集電控、電傳、電儀三電于一體;(2)網(wǎng)絡的性能價格比高;(3)可靠性高。這些亮點就使得整個測控設(shè)備結(jié)構(gòu)簡單、可靠性高,同時也為實現(xiàn)系統(tǒng)控制功能的二次開發(fā)奠定了良好的技術(shù)基礎(chǔ)。本文主要討論設(shè)備中所采用的西門子公司的S7-200型PLC和PC機之間的串行通信問題。 1 溫升測控系統(tǒng)整體介紹 1.1 HG-2003測控裝置的測控對象及結(jié)構(gòu) 先來介紹一下該溫升試驗測控裝置的基本工作流程。10kV電源進線經(jīng)過進線框中的高壓斷路器CB和高壓隔離開關(guān)柜中的隔離開關(guān)G(用于在設(shè)備檢修或維護時形成一個明顯的斷點)后,加在10kV轉(zhuǎn)換變壓器T1上。該變壓器將三相電轉(zhuǎn)化為單相電。這主要是由于做實驗時負載電流很大,如果使用三相電源,容易造成負荷電流的不平衡從而造成試驗故障。在轉(zhuǎn)換變壓器的輸出端(二次側(cè))連接單相溫升試驗變壓器T2。該溫升變壓器的一次側(cè)應加裝用于無功功率補償?shù)碾娙莨瘢蝹?cè)則通過有載分接開關(guān)直接連接試驗品(即高壓晶閘管閥)進行溫升試驗。 從基本工作流程不難知道測控裝置的測控對象,本裝置的具體測控對象如表1所示。表1 測控對象表 序 號名 稱模入(AIN)開入(DIN)開出(DOUT)備 注1電源進線柜 11控制和顯示開關(guān)狀態(tài)2隔離開關(guān)柜 1 顯示開關(guān)狀態(tài)3電容柜 21控制和顯示開關(guān)狀態(tài)4溫升試驗變壓器12 溫度測量和報警信號5轉(zhuǎn)換變壓器8158溫度、電量測量和開關(guān)狀態(tài)6高壓晶閘管閥1 溫度測量7其它 23輔助設(shè)備監(jiān)控信號8合計102313 測控裝置的物理結(jié)構(gòu)分為兩部分:操作控制臺和試區(qū)控制箱。其中,試區(qū)控制箱即PLC控制箱被安裝在試驗區(qū)的隔離開關(guān)框內(nèi)。操作控制臺即PC機人機辦是非曲直操作臺則安裝在控制室內(nèi)。由于二者之間相距約40m,所以采用PC/PPI電纜傳輸測控信號時需加裝中繼器。 1.2 HG-2003測控裝置的基本功能 本測控系統(tǒng)的基本功能包括:開關(guān)分合控制指示功能;設(shè)備和試品的過流、過壓、過熱報警及保護功能;各種操作連鎖功能,如電源開關(guān)柜內(nèi)10kV電源斷路器和隔離開關(guān)柜內(nèi)的手動隔離開關(guān)、控制室門觸點、試驗大廳門觸點間的連鎖保護功能等,并設(shè)有相關(guān)的報警提示畫面。這些功能可以避免操作順序出錯。 2 S7-200通信程序的設(shè)計與實現(xiàn) 2.1 PC機與S7-200的通信方式 西門子S7-200 PLC的通信功能較強,有多種通信方式可供用戶選擇,如:單主站方式、多主站方式以及使用調(diào)制解調(diào)器的遠程通信方式等。在本測控裝置中,筆者采用單主站方式。在運行Windows或Windows NT操作操作的個人計算機(PC機)上安裝STEP 7-Micro/WIN32編程軟件后,PC機就可作為通信中的主站。它可與一個或多個從站相連,STEP 7-Micro/WIN 32每次和一個S7-200 CPU通信,但可以訪問網(wǎng)絡上的所有CPU。該通信方式的硬件配置為PLC到PC機通信口的電纜連接器,即帶RS-232口的隔離型PC/PPI電纜,用五個DIP開關(guān)設(shè)置波特率和其它配置項。它支持的波特率為9.6kbps或19,2kbps,支持的協(xié)議為PPI協(xié)議。這里并沒有使用PPI協(xié)議,而是使用PC/PPI電纜和自由端口通信功能來實現(xiàn)S7-200 CPU與PC機間的通信。自由端口模式是計算機或其它帶有串行通信接口的設(shè)備與S7-200 CPU之間通信的一種廉價和靈活的方法。它以用戶定義的通信協(xié)議為基礎(chǔ),通過使用相關(guān)的中斷指令和專用的通信指令控制S7-200 CPU通信口的操作模式,實現(xiàn)與多種智能設(shè)備的連接。具體地說,所謂自由通信端口模式是指CPU的串行通信接口可由用戶程序控制的一種通信操作模式,其梯形圖程序可以使用接收完成中斷、字符接收中斷、發(fā)送完成中斷、發(fā)送指令(XMT)和接收指令(RCV)等控制通信過程。在該模式下,通信協(xié)議完全由用戶程序控制。 CPU處于STOP模式時,自由通信端口模式被禁止,CPU重新建立使用其它協(xié)議的通信,例如與編程設(shè)備的通信。只有當CPU處于RUN模式時,才能使用自由通信端口模式。通過將特殊寄存器字節(jié)SM30或SM130的協(xié)議選擇域(mm)置1可以將通信端口設(shè)置為自由端口模式,處于該模式時不能與編程設(shè)備通信。 可以用反映CPU模塊上的工作方式開關(guān)當前位置的特殊存儲器位SM0.7來控制自由端口模式的進入。當SM0.7為1時,工作方式開關(guān)處于RUN位置,可選擇自由端口模式;當SM0.7為0時,工作方式開關(guān)處于TEM位置,應選擇PC/PPI協(xié)議模式,以便用于編程設(shè)備監(jiān)視或控制CPU模塊的操作。 2.2 自由端口模式下PLC串行通信程序的編程要點 計算機與可編程控制器通信時,為了避免通信中的各方爭用通信線,一般采用主從工作方式,即計算機為主機,可編程控制器為從機;只有主機才有權(quán)主動發(fā)送請求報文,從機收到后返回響應報文。下面主要談一談編程過程中應注意的幾個問題。 首先是電纜切換時間的處理。因為使用了PC/PPI電纜,所以在S7-200 CPU的用戶程序中應考慮電纜的切換時間。S7-200 CPU接收到RS232設(shè)備的請求報文到它發(fā)送響應報文的延遲時間必須大于等于電纜的切換時間。波特率為9600bps和19200bps,電纜的切換時間分別為2ms和1ms。在梯形圖程序中可用定時中斷實現(xiàn)切換延時。 其次就是通信可靠性的處理,校驗碼的采用是提高通信可靠性最常用的措施之一。用得較多的是異或校驗,即將每一幀中的第一個字符(不包括起始字符)到該幀中正文的最后一個字符作異或運算,并將異或的結(jié)果(展品或校驗碼)作為報文的一部分發(fā)送到接收端。接收方接收到數(shù)據(jù)后計算出所接收到的數(shù)據(jù)的展品或校驗碼,再與發(fā)送方傳過來的校驗碼比較,如果不同,可以判斷通信有誤。 最后需注意的是防止起始字符、結(jié)束字符與數(shù)據(jù)字符的混淆。因為報文的起始字符和結(jié)束字符只有8位,接收到的報文數(shù)據(jù)區(qū)內(nèi)出現(xiàn)與起始字符或結(jié)束字符相同的數(shù)據(jù)字符的機率很大,這可能會引起字符混淆??梢栽诎l(fā)送前對數(shù)據(jù)作某種處理,例如選擇起始字符和結(jié)束字符為某些特殊的值,而將數(shù)字字符轉(zhuǎn)化為BCD碼或ASCII碼后再發(fā)送,這樣可以避免出現(xiàn)上述的情況,但是會增加編程的工作量和數(shù)據(jù)傳 送的時間。 2.3 通信程序中關(guān)鍵指令的使用與說明 發(fā)送指令XMT(Transmit)用于啟動自由端口模式下數(shù)據(jù)緩沖區(qū)(TBL)數(shù)據(jù)的發(fā)送,指令格式如圖1所示。通過指定的通信端口(PORT),將存儲在數(shù)據(jù)緩沖區(qū)(TBL)中的信息發(fā)送。使ENO=0的錯誤條件:SM4.3(運行時間),0006(間接尋址),009(在端口0同時XMT/RCV),000B(在端口1同時XMT/RCV)。 XMT指令可以方便地發(fā)送1~255個字符,如果有中斷程序連接到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個字符時,端口0會產(chǎn)生中斷事件9,端口1會產(chǎn)生中斷事件26。可以監(jiān)視發(fā)送完成狀態(tài)位SM4.5和SM4.6的變化,而不是用中斷進行發(fā)送。數(shù)據(jù)緩沖區(qū)中的起始字符和結(jié)束字符是可選項,第一個字節(jié)的“字符數(shù)”是要發(fā)送的字節(jié)數(shù),它本身并不發(fā)送出去。 接收指令RCV(Receive)可以方便地接收一個或多個字符,最多可接收255個字符。通過指令的通信端口(PORT),將接收信息存儲在數(shù)據(jù)緩沖區(qū)(TBL)中。數(shù)據(jù)緩沖區(qū)中的第一個字節(jié)用來累計接收到的字節(jié)數(shù),它本身不能接收到,起始字符和結(jié)束字符是可選項。如果有中斷程序連接到接收結(jié)束事件上,在接收完最后一個字符時,端口0產(chǎn)生中斷事件23,端口1產(chǎn)生中斷事件24。 使ENO=0的錯誤條件:SM86.6和SM186.6(RCV參數(shù)錯誤),SM4.3(運行時間),0006(音接尋址),009(在端口0同時XMT/RCV),000B(在端口1同時XMT/RCV)。CPU不是在自由端口模式。 可以監(jiān)視SM86.6或SM186.6的變化,而不是用中斷進行報文接收。SM86.6或SM186.6為非零時,RCV指令未被激活或接收已經(jīng)結(jié)束。正在接收報文時,它們?yōu)?。 當超時或校驗錯誤時,要自動中止報文接收功能。必須為報文接收功能定義一個啟動條件和一個結(jié)束條件。 RCV指令允許通過參數(shù)設(shè)定選擇報文開始條件和報文結(jié)束條件,即設(shè)定特殊存儲器字節(jié)SM86~SM94(用于端口0)和SM186~SM194(用于端口1)。圖2另外兩個比較重要的指令是獲取與設(shè)置通信口地址指令。獲取通信口地址指令(GET ADDR指令)用來讀取PORT指定的CPU口的站地址,并將數(shù)值放入ADDR指定的地址中。設(shè)置通信口地址指令(SET ADDR指令)用來將通信口(PORT)站地址設(shè)置為ADDR指定的數(shù)值。設(shè)置的新地址不能永久保存,斷電后又上電,通信口地址將恢復為上次的地址值(用系統(tǒng)塊下載的地址)。圖2為使用RCV指令和接收完成中斷接收數(shù)據(jù)的通信程序流程圖。 3 計算機通信程序的設(shè)計與實現(xiàn) 3.1 Windows環(huán)境下的PC機通信程序 在Windows環(huán)境下,操作系統(tǒng)通過驅(qū)動程序控制各硬件資源,不允許用戶像在DOS環(huán)境下那樣直接對串口進行底層的操作。為此,Visual Basic提供了一個串行通信控件:MSComm控件。程序員只需設(shè)置和監(jiān)視MSComm控件的屬性和事件,就可以勁易而易舉地實現(xiàn)串行通信。 3.2 MSComm控件的屬性 MSComm控件主要屬性如下:(1)Comm Port:設(shè)置并返回通信端口號。(2)Settings:以字符的形式設(shè)置并返回波特率、奇偶校驗位、數(shù)據(jù)位和停止位。其中字符n、o、e分別代表無校驗、奇校驗、偶校驗。(3)Port Open:設(shè)置并返回通信端口狀態(tài)。設(shè)置為Ture時,打開端口;設(shè)置為Flase時,關(guān)閉端口。另外,還有Input、Output、Input Mode、In Buffer Count等屬性,這里不再一一介紹。 3.2 MSComm控件處理接收信息的方式 MSComm控件提供兩種處理方式:(1)事件驅(qū)動方式:RTHreshold屬性非0時,收到字符或傳輸線發(fā)生變化時就會產(chǎn)生串口事件On Comm。通過查詢CommEvent屬性可以捕獲并處理這些通信事件。(2)查詢方式:通過查詢Iuput Buffer Count(接收緩沖區(qū)的字節(jié)數(shù))屬性值,處理接收到的信息。本裝置中采用事件驅(qū)動方式。 用Visual Basic語言設(shè)計串行通信程序簡單實用,關(guān)鍵是如何形成一個友好的用戶界面。編程的細節(jié)這里不再詳述。 隨著工業(yè)PC機的推出,個人計算機在工業(yè)現(xiàn)場支行的可靠性問題也得到了解決。因此在各類測控設(shè)備中實現(xiàn)PLC和PC機間的串行通信有著重大的意義。這樣一方面有助于將個人計算機開發(fā)成簡易工作站或者工作終端,實現(xiàn)集中顯示、集中報警功能;另一方面也可把個人計算機開發(fā)成PLC編程終端,通過編程器接口接入PLC網(wǎng)絡,進行編程、調(diào)試及監(jiān)控,并最終達到PLC測控設(shè)備結(jié)構(gòu)簡單、運行可靠、維護容易、便于二次開發(fā)的技術(shù)特點。
評論