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