,,,
(海軍工程大學(xué) 船舶與動力學(xué)院,武漢 430033)
集中控制系統(tǒng)是艦船自動化領(lǐng)域的一個重要組成部分。目前模擬艦艇上的集中控制系統(tǒng)的技術(shù)方案多種多樣,文中采用PLC工業(yè)控制網(wǎng)絡(luò),利用PLC與外設(shè)的串口通訊和邏輯量控制來實現(xiàn)控制功能,并著重介紹PLC與單片機串行通信的設(shè)計,具有經(jīng)濟性能好、硬件電路結(jié)構(gòu)簡單、工作安全可靠性高的特點。
針對集中控制系統(tǒng)的要求,它包含大量的控制開關(guān)和相對應(yīng)的指示燈以及顯示潛艇狀態(tài)的四塊指針儀表,PLC可以對大量的邏輯量輸入輸出進行控制,同時可以通過串口通訊與驅(qū)動儀表的單片機之間的信息傳遞[1]。
整個網(wǎng)絡(luò)的主要設(shè)備為:一臺OMRON CJ1M CPU13 PLC、一臺微型機作為軟件設(shè)計和監(jiān)控平臺、網(wǎng)絡(luò)交換機、RS-232電纜。
PLC通訊口出來的總線分別通過RS-232電纜和以太網(wǎng)和控制系統(tǒng)的驅(qū)動儀表的單片機以及計算機通訊[2]。PLC與控制系統(tǒng)儀表之間通過RS-232總線進行協(xié)議通訊[3],PLC和計算機終端通過以太網(wǎng)進行通訊。
驅(qū)動儀表的單片機主要由MAX232CPE模塊接收和發(fā)送由串口輸入的信號;AT89C52PI、82C55A模塊初始化通信端口和編寫程序;M-S X12017模塊接收8255輸出的數(shù)據(jù)并控制儀表轉(zhuǎn)動。
在OMRON CJ1M PLC網(wǎng)絡(luò)通訊中,由于只有一個通訊口,波特率只支持9 600 b,因此波特率設(shè)置為9 600 b。主程序流程圖見圖1。RS-232通信程序流程圖見圖2。
圖1 主程序流程
圖2 RS-232通信程序流程
用Visual C++語言實現(xiàn)儀表驅(qū)動,程序主要分為兩部分,在第一部分中定義由8255輸出的數(shù)據(jù)類型和寄存地址,初始化單片機接收的數(shù)據(jù)并設(shè)置串口通信協(xié)議;第二部分為單片機主程序即儀表指針正、反轉(zhuǎn)的控制及指針指示數(shù)據(jù)的反饋校對控制。在應(yīng)用過程中指針指示數(shù)據(jù)的準(zhǔn)確性是極為關(guān)鍵的,這部分程序中主要引用了數(shù)據(jù)寄存器SBUF,單片機將目標(biāo)數(shù)據(jù)存放在SBUF寄存器中,儀表指針?biāo)甘镜妮敵鰯?shù)據(jù)也反饋到SBUF中與目標(biāo)值進行比較,如果數(shù)值相同,則中指程序,清空SBUF寄存器,如果數(shù)值不同,則根據(jù)比較結(jié)果的大(小)自動加(減)一,知道數(shù)據(jù)相同,完成輸出。由于篇幅原因,以下只介紹初始化和通信部分的程序:
#define COM8255_1 XBYTE[0x8003]
#define PA8255_1 XBYTE[0x8000]
#define PB8255_1 XBYTE[0x8001]
#define PC8255_1 XBYTE[0x8002]
//定義8255輸出端口及地址PA為8000H,PB為8001H,PC為8002H,全輸出為8003H
uchar rece_data[25];
uchar r_in=0,rr;
uchar data0=0xff,data1=0xff;
//向8255先后輸入0和1啟動8255
int num[8]={0},mynum0=0,mynum1=0,mynum2=0,mynum3=0,mynum4=0,mynum5=0,
mynum6=0,mynum7=0;
bit flag=1,cr=0;
//數(shù)據(jù)初始化
void check_num(void);
void init_8255(void)
{
COM8255_1=0x80;;
}
//初始化8255
void init_com(void) //設(shè)置串口通訊協(xié)議
{
TMOD=TMOD|0x20;
TL1=0xfd; //設(shè)置9600bit/s
TH1=0xfd;
PCON=0x00; //SMOD=0
TR1=1; //奇校驗
EA=1; //8數(shù)據(jù)位
ES=1; //設(shè)定1個停止位
SCON=0x50; //選擇串行方式
}
本設(shè)計是通過PLC向驅(qū)動儀表的單片機寫入脈沖指令來控制儀表。
1) 數(shù)據(jù)傳遞格式
從RS-232傳輸來看,CJ1M PLC只是傳送文字碼,所以確定以下寫入單片機的數(shù)據(jù)格式:
“@” +“F”或“S”+數(shù)據(jù)字符串+ “!
起始字頭+ 標(biāo) 志 + 數(shù) 據(jù) +結(jié)束標(biāo)志
按照要求設(shè)置PLC上位機鏈接端口欄內(nèi)的通信設(shè)置的波特率和格式,通信模式以及傳遞信息的初始碼和結(jié)束碼,見圖4。
圖3 PLC上位機鏈接端口設(shè)置
系統(tǒng)儀表部分包含3個儀表4個指針,上位機向驅(qū)動儀表的單片機寫數(shù)據(jù),將4個指針分為兩組,故分組發(fā)送指令:
第一組數(shù)據(jù):標(biāo)志為F(46H)
第二組數(shù)據(jù):標(biāo)志為S(53H)
數(shù)據(jù):脈沖指令,絕對位置脈沖,由高位向低位順序發(fā)送。(5個字節(jié),5個ASCII碼)
例如:1234 發(fā)送字節(jié)為“+”“1”“2”“3”“4”
-1234發(fā)送字節(jié)為“-”“1”“2”“3”“4”
2) 軟件調(diào)試
CX-Programmer軟件是專門用來進行OMRON系列PLC編程、調(diào)試、診斷和監(jiān)控的,它具有制作程序、對可編成控制器CPU的寫入/讀出、監(jiān)視、調(diào)試等功能。
由于儀表指針是通過PLC向單片機傳遞脈沖量而實現(xiàn)轉(zhuǎn)動的,要保證儀表“零位”在脈沖“0”左右有限區(qū)間內(nèi),因此,在調(diào)試過程中,將要發(fā)送到單片機的脈沖量強制設(shè)置在數(shù)據(jù)寄存器D000-D005(共6個字節(jié)的ASCII碼)中,通過CX-Programmer的串行通信(發(fā)送)指令傳遞到單片機中以調(diào)試儀表指針的狀態(tài)。
數(shù)據(jù)傳送程序如下:
LD P-On
TXD(236) D0 D200 6
END
其中TXD(236)指令為串口通信發(fā)送指令,它有三個參數(shù),第一個為原起始字,第二個為控制字,第三個為字節(jié)數(shù),程序表示把從D0開始到D5的六個字節(jié)通過串口傳送。
本模擬系統(tǒng)絕大多數(shù)控制是采用邏輯量的控制,根據(jù)開關(guān)量輸入160點,開關(guān)量輸出252點,考慮到I/O留10%的余量。因此確定采用CJ1M CPU13可帶640點的PLC。
本模擬系統(tǒng)的主要特點是連鎖關(guān)系多而復(fù)雜,尤為關(guān)鍵的是操縱潛艇是不允許有一點錯誤出現(xiàn)的。舉例說明:兩個相同的開關(guān)打開的順序不同,在信號顯示區(qū)會顯示截然不同的結(jié)果,有的開關(guān)命令會在某些操縱進行中不能執(zhí)行。所以在設(shè)計系統(tǒng)過程中不僅要考慮到正確執(zhí)行操縱者輸入的指令,而且要考慮如何拒絕執(zhí)行操縱者輸入的誤操作指令,即讓操作者知道此次操作是錯誤的,達到糾錯的目的,從而使受訓(xùn)學(xué)員進一步了解系統(tǒng)。所以在系統(tǒng)邏輯量控制中使用大量的工作位來記錄不能保持狀態(tài)的開關(guān)以及延時指令(TIM)實現(xiàn)指示燈延時開關(guān),部分程序內(nèi)容舉例如下:
LD 0.12 (打開開關(guān)A)
SET w0.00 (記錄開關(guān)A打開的狀態(tài))
LD 0.11 (關(guān)閉開關(guān)A)
AND w0.00
TIM 0015 #30 (延時30秒)
LD T0015
AND 1.01 (打開開關(guān)B)
SET 12.15 (打開指示燈C)
RSET w0.00 (清除打開開關(guān)A狀態(tài)的記錄)
結(jié)合對集中控制系統(tǒng)的要求,提出一種相對簡單且易于實現(xiàn)、編程容易且功能全面的集中控制系統(tǒng)設(shè)計及實施方案。系統(tǒng)采用一臺OMRON CJ1M CPU13 PLC與一臺計算機構(gòu)成集中控制系統(tǒng)的基本框架,通過以太網(wǎng)實現(xiàn)PLC與上位機通信并分別利用串行通訊和邏輯量控制實現(xiàn)了對各個被控系統(tǒng)的控制,該方案目前已經(jīng)在實驗室環(huán)境下完成了系統(tǒng)的設(shè)計以及調(diào)試。
[1] 吳 震.中小型船舶主機遙控系統(tǒng)中PLC的應(yīng)用[J].廣東造船,2001(3):26-29.
[2] 郭宗仁.可編程序控制器應(yīng)用系統(tǒng)設(shè)計及通信網(wǎng)絡(luò)技術(shù)[M].,北京:人民郵電出版社,2000.
[3] 范逸之,廖錦棋.Visual Basic.NET 自動化系統(tǒng)監(jiān)控——RS-232串行通信[M].北京:清華大學(xué)出版社,2006.