摘 要: 工業(yè)現(xiàn)場(chǎng)往往需要將生產(chǎn)線所處的狀態(tài)或出現(xiàn)的故障信息顯示在大屏幕上,以提示相關(guān)人員。為實(shí)現(xiàn)該目的,設(shè)計(jì)了一套生產(chǎn)線信息顯示系統(tǒng)。該系統(tǒng)采用西門(mén)子S7300 PLC作為生產(chǎn)線主控制器,生產(chǎn)線信息數(shù)據(jù)存儲(chǔ)在內(nèi)存單元中,CP341模塊使用3964R協(xié)議,將數(shù)據(jù)串行發(fā)送至單片機(jī),單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理之后,再把需要顯示的文字信息內(nèi)碼串行發(fā)送至顯示屏。該系統(tǒng)已在工程實(shí)際中得到應(yīng)用,效果良好,具有很高的實(shí)用價(jià)值。關(guān)鍵詞:3964R協(xié)議; 單片機(jī); PLC; 信息顯示
中圖分類號(hào):TN911-33文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)18-0025-03
Design of Production Line Information Display System Based on 3964R Protocol
LEI Liang, BAO He-chuan, YANG Ming
(Mechanical and Electrical College, Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)
Abstract: For drawing the attention of the related personel, the information about the status or the malfunction of the production line usually needs to be displayed on the big screen. For this purpose, a system to display the information of the production line was designed, in which a SIEMENS S7-300 PLC is employed as the main controller of the production line, the information data of the production line is stored in its RAM, CP341 module is adopted to send the data serially to the MCU according to 3964R protocol, and after processing the data, the MCU serially sends the internal code of the characters, which need to be displayed, to the big screen. This system has been used in a factory and got a good result. This design has a high practical value.
Keywords: 3964R protocol; MCU; PLC; information display
收稿日期:2010-04-27
可編程邏輯控制器(PLC)以其強(qiáng)大的功能、高可靠性和易用性廣泛應(yīng)用于工業(yè)控制領(lǐng)域,在各行業(yè)都發(fā)揮了重要作用[1-2]。某廠采用西門(mén)子S7300系列PLC作為生產(chǎn)線的主控制器,用于控制整個(gè)生產(chǎn)過(guò)程。PLC內(nèi)部的60個(gè)字節(jié)存儲(chǔ)單元存儲(chǔ)了相關(guān)的生產(chǎn)線狀態(tài)信息,每個(gè)位對(duì)應(yīng)一條信息。現(xiàn)要求開(kāi)發(fā)一套大屏幕顯示系統(tǒng),定時(shí)(0.51 s)讀取上述60個(gè)字節(jié)數(shù)據(jù),當(dāng)某位置1時(shí),則在大屏幕上顯示對(duì)應(yīng)信息。
1 方案分析
根據(jù)項(xiàng)目要求,顯示屏可采用市場(chǎng)現(xiàn)有的LED顯示屏和相應(yīng)的控制卡。但現(xiàn)有的控制卡無(wú)法直接與PLC進(jìn)行通信并處理來(lái)自PLC的數(shù)據(jù),因此需要開(kāi)發(fā)一種通信控制板卡用于獲得并處理PLC中的數(shù)據(jù),以存儲(chǔ)所有信息,并按顯示屏的數(shù)據(jù)格式給顯示屏控制卡發(fā)送需要顯示的信息。其中的關(guān)鍵是如何從PLC的存儲(chǔ)單元中獲得數(shù)據(jù)。下面給出了兩種方案。
1.1 PFOFIBUS方案
有些S7300PLC的CPU模塊上帶有DP接口[3],因此可開(kāi)發(fā)出DP從節(jié)點(diǎn)直接與PLC進(jìn)行通信,而且DP通信擁有較快的數(shù)據(jù)傳輸速度、較長(zhǎng)的通信距離和可靠性[4]。但DP協(xié)議的解析較為復(fù)雜,雖然目前市場(chǎng)上已有多種協(xié)議芯片[5],但從節(jié)點(diǎn)的開(kāi)發(fā)來(lái)說(shuō)仍需較長(zhǎng)的時(shí)間。另外,該方案必須使用帶有DP接口的CPU模塊,若現(xiàn)場(chǎng)PLC不帶有DP接口,則需另購(gòu)DP通信模塊,這便增加了成本。因此該方案不具有通用性。
1.2 3964R方案
西門(mén)子公司的CP341模塊支持適用于點(diǎn)對(duì)點(diǎn)通信的3964R協(xié)議。該協(xié)議在ISO/OSI模型中占據(jù)了數(shù)據(jù)鏈路層和物理層,物理層使用RS 232C,RS 422/485或20 mA TTY連接,采用半雙工方式進(jìn)行通信。該協(xié)議具有靈活性高,可靠性高,實(shí)時(shí)性好等優(yōu)點(diǎn),適用于有干擾的工業(yè)現(xiàn)場(chǎng)[6];該協(xié)議的解析較容易,開(kāi)發(fā)周期也短,因此具有很強(qiáng)的通用性。
1.3 器件選擇
綜合考慮以上兩方案,選擇使用優(yōu)點(diǎn)較為明顯的3964R方案。在器件選擇方面,由于現(xiàn)場(chǎng)通信距離要求達(dá)到10 m,這對(duì)通信速度的要求也不高,因此可選擇帶有RS 232接口的CP341模塊作為PLC一側(cè)的通信接口,因其可靠通信距離為15 m,所以能滿足項(xiàng)目要求。
顯示屏及控制卡選擇深圳勵(lì)研科技有限公司的SCL2008通用異步控制系統(tǒng),它帶有標(biāo)準(zhǔn)RS 232通信接口。
通信控制板卡選擇FREESCALE公司的MC9S08DZ60單片機(jī)作為控制器,具有60 kB的FLASH程序存儲(chǔ)器,4 kB的RAM,2 kB的E2PROM以及兩個(gè)UART[7-8]。有足夠的空間存儲(chǔ)內(nèi)碼形式的漢字信息,可以方便地使用兩個(gè)UART,并通過(guò)MAX 232分別與PLC和顯示屏進(jìn)行通信。
器件選定之后,系統(tǒng)總體結(jié)構(gòu)可確定如圖1所示。在對(duì)CP341進(jìn)行相應(yīng)的組態(tài)和編程之后,關(guān)鍵問(wèn)題即為單片機(jī)3964R接收程序及數(shù)據(jù)處理程序的編寫(xiě)。
圖1 生產(chǎn)線信息顯示系統(tǒng)結(jié)構(gòu)圖
2 3964R數(shù)據(jù)接收程序
關(guān)于3964R協(xié)議的詳細(xì)規(guī)定,文獻(xiàn)[9]中已有詳細(xì)說(shuō)明,在此不再贅述。本文只介紹單片機(jī)數(shù)據(jù)接收程序的編寫(xiě)。
2.1 CP341數(shù)據(jù)發(fā)送過(guò)程
CP341發(fā)送數(shù)據(jù)給通信伙伴的過(guò)程[10]如圖2所示。
圖2 數(shù)據(jù)發(fā)送過(guò)程
2.1.1 建立發(fā)送連接
為了建立連接,CP341首先發(fā)送控制字符STX并開(kāi)始計(jì)時(shí)。若在確認(rèn)延遲時(shí)間(ADT)內(nèi)收到單片機(jī)發(fā)出的肯定應(yīng)答字符DLE,則表示連接成功,CP341進(jìn)入發(fā)送模式。
如果收到NAK,或除DLE及STX以外的任何字符,或在ADT之內(nèi)未收到任何響應(yīng),則CP341按上述步驟重新進(jìn)行連接。在達(dá)到規(guī)定次數(shù)后仍未連接成功,則CP341放棄建立連接,發(fā)送NAK給單片機(jī)。
2.1.2 數(shù)據(jù)發(fā)送
成功建立連接之后,CP341開(kāi)始按指定的參數(shù)(字符格式、波特率等)持續(xù)發(fā)送緩沖區(qū)中的用戶數(shù)據(jù)。單片機(jī)監(jiān)控相鄰兩字節(jié)之間的時(shí)間間隔,該間隔不得超過(guò)字符延遲時(shí)間。
如果在發(fā)送活躍期間接收到單片機(jī)發(fā)送的NAK控制字符,則CP341取消數(shù)據(jù)塊的發(fā)送,重新建立連接。若收到其他字符,則CP341等待字符延遲時(shí)間之后,發(fā)送NAK給單片機(jī),然后重新建立連接,發(fā)送數(shù)據(jù)。
2.1.3 釋放發(fā)送連接
當(dāng)緩沖區(qū)內(nèi)的數(shù)據(jù)發(fā)送完之后,CP341發(fā)送DLE,ETX和BCC作為數(shù)據(jù)塊結(jié)束標(biāo)識(shí),然后等待應(yīng)答字符。若在應(yīng)答延遲時(shí)間之內(nèi)收到單片機(jī)發(fā)送的DLE肯定應(yīng)答,則表示數(shù)據(jù)傳輸無(wú)錯(cuò);若在收到NAK或除DLE之外的其他字符,或一個(gè)損壞的字符,或在應(yīng)答延遲時(shí)間之內(nèi)未收到任何字符,則CP341重新建立連接,發(fā)送數(shù)據(jù)。
2.2 單片機(jī)數(shù)據(jù)接收程序
根據(jù)CP341的數(shù)據(jù)發(fā)送過(guò)程,可做出單片機(jī)數(shù)據(jù)接收程序的流程圖,如圖3所示。
圖3 數(shù)據(jù)接收程序流程
其中,MODE為枚舉類型的全局變量,代表接收程序在接受數(shù)據(jù)過(guò)程中的狀態(tài)。其定義為:
enum STATUS
{
SUCCESS,IDLE,ERROR,END,BUSY
}MODE;
DLE_F為位變量,用于標(biāo)識(shí)接收過(guò)程中是否已經(jīng)收到一個(gè)DLE控制字符,DLE_F=1表示已經(jīng)收到一個(gè)DLE,DLE_F=0表示未收到。該子程序應(yīng)在串口接收中斷中調(diào)用。
3 數(shù)據(jù)處理程序
單片機(jī)接收到來(lái)自PLC的數(shù)據(jù)之后即進(jìn)行處理,以決定需要向顯示屏發(fā)送的信息內(nèi)碼。其處理程序流程如圖4所示。
圖4 數(shù)據(jù)處理程序流程
圖4中i,j為循環(huán)變量。INFO為二維數(shù)組,存儲(chǔ)了所有信息的內(nèi)碼,其定義為:
static const unsigned char INFO[481][N];
其中:N為宏定義,代表每條信息內(nèi)碼字節(jié)數(shù);RCV為數(shù)組,存儲(chǔ)了從PLC發(fā)來(lái)的60 B信息,其定義為:
unsigned char RCV[60];
為提高執(zhí)行效率,程序首先對(duì)接收到的字節(jié)判斷是否為零,若為零則直接跳過(guò)該字節(jié),若非零則找到該字節(jié)中為1的位,即顯示該位對(duì)應(yīng)的信息;若所有的字節(jié)都為零,即沒(méi)有要顯示的信息,則發(fā)送INFO中的最后一條,顯示“無(wú)信息”。
4 單片機(jī)主程序
主程序完成UART初始化、狀態(tài)初始化及各子程序的調(diào)用,流程如圖5所示。大屏幕及控制卡應(yīng)在使用之前對(duì)其初始化,如設(shè)定節(jié)目單,上傳字庫(kù)等,而單片機(jī)只需按規(guī)定的格式給控制卡發(fā)送數(shù)據(jù)即可。
5 工程應(yīng)用效果
根據(jù)這一思路,目前已經(jīng)制作出一套生產(chǎn)線信息顯示系統(tǒng),并且已經(jīng)成功應(yīng)用于工業(yè)現(xiàn)場(chǎng)。系統(tǒng)工作正常,達(dá)到了預(yù)期效果。
圖5 主程序流程
6 結(jié) 語(yǔ)
本系統(tǒng)軟硬件均采用模塊化設(shè)計(jì),使用方便,便于日后的維護(hù)和升級(jí);而對(duì)軟件稍加改造即可應(yīng)用于不同生產(chǎn)線的信息顯示,具有很好的通用性。
參考文獻(xiàn)
[1]郭澤宜.PLC在工業(yè)自動(dòng)化中的應(yīng)用[J].科技資訊,2009(21):86.
[2]趙勇.單片機(jī)與可編程控制器的串行通信及應(yīng)用[J].西安郵電學(xué)院學(xué)報(bào),2005,10(1):35-37.
[3]SIEMENS. S7300 CPU 31xC技術(shù)功能[M].SIENENS,2007.
[4]謝小磊,王柏林.基于89C52的PROFIBUSDP智能從站的設(shè)計(jì)[J].計(jì)量與測(cè)試技術(shù),2005,32(10):910-911.
[5]李永杰.PROFIBUSDP智能從站研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2005.
[6]劉良勇,侯友夫,徐達(dá),等.基于3964R協(xié)議的可靠串行通信的研究[J].自動(dòng)化與儀器儀表,2007(4):63-66.
[7]Freescale Semiconductor. MC9S08DZ60 data sheet[R]. USA: Freescale Semiconductor, 2008.
[8]邵貝貝,龔光華.單片機(jī)認(rèn)識(shí)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2006.
[9]樓華,黃伯洪.西門(mén)子3964R數(shù)據(jù)鏈路層通信協(xié)議的剖析[J].寶鋼技術(shù),1998(1):51-54.
[10]Siemens.CP341 Pointtopoint communication installation and parameter assignment manual[M]. German: Siemens, 2000.