張 宇,于春鵬
(上海船舶運(yùn)輸科學(xué)研究所 艦船自動(dòng)化系統(tǒng)事業(yè)部, 上海 200135)
隨著現(xiàn)代電氣技術(shù)的快速發(fā)展,船上的電氣自動(dòng)化控制產(chǎn)品越來(lái)越多樣化、智能化,對(duì)各設(shè)備的運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè)的要求越來(lái)越高。傳統(tǒng)的遠(yuǎn)程監(jiān)控主要采用點(diǎn)陣液晶顯示器(Liquid Crystal Display, LCD)與單片機(jī)相結(jié)合的方式,其通信接口多采用串口通信,界面顯示的內(nèi)容單一且人機(jī)交互功能較少,而采用LCD屏不僅能顯示豐富的設(shè)備模塊,而且可通過(guò)按鍵進(jìn)行人機(jī)交互,基于ARM(Advanced RISC Machines)芯片通信接口多樣的特點(diǎn),結(jié)合STemWin系統(tǒng)中的界面開(kāi)發(fā)工具,易于實(shí)現(xiàn)豐富的界面顯示。
傳統(tǒng)的遠(yuǎn)程監(jiān)控采用的是分布式現(xiàn)場(chǎng)總線監(jiān)控系統(tǒng),其分布式模塊只負(fù)責(zé)數(shù)據(jù)的采集和上傳,未實(shí)現(xiàn)數(shù)據(jù)共享和顯示功能,本文研究設(shè)計(jì)的分布式遠(yuǎn)程監(jiān)控設(shè)備不僅能實(shí)現(xiàn)分布式數(shù)據(jù)顯示和數(shù)據(jù)共享,而且能通過(guò)以太網(wǎng)的通信方式上傳、保存數(shù)據(jù)。
本文在對(duì)系統(tǒng)功能進(jìn)行分析的基礎(chǔ)上,基于STM32H753芯片和STemWin系統(tǒng),在GUIBuilder圖形化軟件中生成顯示界面程序,豐富界面顯示,減少對(duì)設(shè)計(jì)界面的程序開(kāi)發(fā),提高監(jiān)控設(shè)備的穩(wěn)定性。通過(guò)ARM芯片屏幕驅(qū)動(dòng)外設(shè),可直接驅(qū)動(dòng)顯示屏幕;同時(shí),通過(guò)按鍵實(shí)現(xiàn)人機(jī)交互。本文研究的監(jiān)控模塊在設(shè)計(jì)時(shí)結(jié)合FreeRTOS操作系統(tǒng)的時(shí)間任務(wù)管理機(jī)制,從而實(shí)現(xiàn)對(duì)船舶機(jī)艙系統(tǒng)設(shè)備的遠(yuǎn)程實(shí)時(shí)監(jiān)控。
船用遠(yuǎn)程監(jiān)控系統(tǒng)是指在離開(kāi)駕駛臺(tái)或集控室時(shí),對(duì)機(jī)艙設(shè)備重要的運(yùn)行參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測(cè)和故障診斷并加以顯示的設(shè)備,是船舶自動(dòng)化體系中的重要組成部分。輪機(jī)員可依靠遠(yuǎn)程監(jiān)控系統(tǒng)實(shí)現(xiàn)機(jī)器處所集中控制站周期性無(wú)人值班,很大程度上改善輪機(jī)員的工作環(huán)境,減少其工作時(shí)間。遠(yuǎn)程監(jiān)控系統(tǒng)可實(shí)現(xiàn)故障判斷和聲光報(bào)警功能,同時(shí)提高船舶設(shè)備的穩(wěn)定性和船舶航行的安全性。某雙主機(jī)推進(jìn)的船舶遠(yuǎn)程監(jiān)控系統(tǒng)網(wǎng)絡(luò)原理圖見(jiàn)圖1,遠(yuǎn)程監(jiān)控顯示模塊是系統(tǒng)的核心部件,能體現(xiàn)遠(yuǎn)程監(jiān)控設(shè)備在系統(tǒng)中的關(guān)鍵作用。
圖1 某雙主機(jī)推進(jìn)的船舶遠(yuǎn)程監(jiān)控系統(tǒng)網(wǎng)絡(luò)原理圖
基于本文設(shè)計(jì)的遠(yuǎn)程監(jiān)控顯示模塊,可實(shí)現(xiàn)關(guān)鍵設(shè)備數(shù)據(jù)采集和運(yùn)行參數(shù)顯示功能,以及設(shè)備故障邏輯判斷、聲光報(bào)警和消警功能。表1為遠(yuǎn)程監(jiān)控顯示模塊的基本功能。
表1 遠(yuǎn)程監(jiān)控顯示模塊的基本功能
為實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和顯示功能,此次遠(yuǎn)程監(jiān)控設(shè)備采用的處理器是基于ARM Cortex M7內(nèi)核的處理器,采用6級(jí)流水線,運(yùn)行頻率高達(dá)400 MHz,具有快速可嵌套中斷,同時(shí)芯片集成有各種高性能工業(yè)標(biāo)準(zhǔn)接口和外設(shè)(2個(gè)FDCAN接口、8個(gè)USART接口、6個(gè)SPI接口、1個(gè)LTDC接口和1個(gè)以太網(wǎng)接口等),處理器可直接通過(guò)LTDC驅(qū)動(dòng)LCD屏,并實(shí)現(xiàn)ASCII字符和多模塊顯示等功能。遠(yuǎn)程監(jiān)控設(shè)備由控制核心板、電源板和LCD屏組成,控制核心板通過(guò)并線接口與電源板相連。遠(yuǎn)程監(jiān)控核心板硬件原理圖見(jiàn)圖2,該控制器可提供2路RS485總線通道、2路CAN總線通道、1路以太網(wǎng)通信通道和1路LTDC屏幕顯示通道。
RGB(Red Green Blue)-LCD是TFT(Thin Film Transistor)-LCD的一種,即薄膜晶體管LCD器。TFT-LCD與無(wú)源TN(Twisted Nematic)-LCD和STN(Super Twisted Nematic)-LCD的簡(jiǎn)單矩陣不同,其在LCD屏的每個(gè)像素上都設(shè)置有一個(gè)TFT,可有效克服非選通時(shí)的串?dāng)_,使LCD屏的靜態(tài)特性與掃描線數(shù)無(wú)關(guān),因此能大大提高圖像的質(zhì)量。RGB 屏外接信號(hào)線,其中有24根顏色數(shù)據(jù)線(RGB各占8根,即RGB888格式),這樣可表示最多1 600萬(wàn)色,DE(Data Enable)、VS(Vertical Synchronization)、HS(Horizontal Synchronization)和DCLK(Data Clock)用于控制數(shù)據(jù)傳輸。
圖2 遠(yuǎn)程監(jiān)控核心板硬件原理圖
RGB 屏一般有2種驅(qū)動(dòng)模式,即DE模式和HV(Horizontal Vertical)模式,其中:DE模式采用DE信號(hào)確定有效數(shù)據(jù)(DE為高/低時(shí),數(shù)據(jù)有效);HV模式通過(guò)行同步和場(chǎng)同步表示掃描的行和列。DE 模式和HV 模式的行掃描時(shí)序圖見(jiàn)圖3。
圖3 DE模式和HV模式的行掃描時(shí)序圖
圖3中:HSD 即HS 信號(hào),用于行同步,在DE 模式下不用HS 信號(hào),LCD同樣能正常工作;thpw為水平同步有效信號(hào)脈寬,表示一行數(shù)據(jù)的開(kāi)始;thb為水平后廊,表示從水平有效信號(hào)開(kāi)始,到有效數(shù)據(jù)輸出的像素時(shí)鐘個(gè)數(shù);thfp為水平前廊,表示從一行數(shù)據(jù)結(jié)束,到下一個(gè)水平同步信號(hào)開(kāi)始之前的像素時(shí)鐘個(gè)數(shù);掃描的1行數(shù)據(jù)共輸出480個(gè)像素點(diǎn)數(shù)據(jù),而液晶面板共有272行,這就需進(jìn)行272次行數(shù)據(jù)掃描。從圖3中可看出,DE 模式與HV 模式的時(shí)序基本一樣,DE模式需提供DE 信號(hào)(DEN),而HV 模式無(wú)需DE 信號(hào)。
STM32H753系列芯片都帶有LCD控制器,即LTDC,可直接通過(guò)LTDC外接RGB-LCD 屏,實(shí)現(xiàn)液晶驅(qū)動(dòng)。LTDC控制器主要包含信號(hào)線、圖像處理單元、AXI接口、配置和狀態(tài)寄存器及時(shí)鐘域,其框圖見(jiàn)圖4。
2.2.1 信號(hào)線
LTDC控制器包含RGBLCD驅(qū)動(dòng)所需的所有信號(hào)線,這些信號(hào)線通過(guò)主板LCD接口引出,其信號(hào)線和IO連接關(guān)系說(shuō)明見(jiàn)表2。
LTDC共有24 位數(shù)據(jù)線,支持RGB888格式。
2.2.2 圖像處理單元
該單元由AHB接口獲取顯存中的圖像數(shù)據(jù),經(jīng)過(guò)2層FIFO緩存之后,先經(jīng)過(guò)像素格式轉(zhuǎn)換器(Pixel Format Convertor, PFC)將從2層所選輸入像素格式轉(zhuǎn)換為ARGB888格式,再通過(guò)混合單元將2層數(shù)據(jù)合并,混合得到單層要顯示的數(shù)據(jù),最后經(jīng)過(guò)抖動(dòng)單元處理(可選)并輸出給LCD屏顯示。STM32H753的LTDC共有背景層、第一層和第二層等3層,其中,背景層只能是純色(即單色),第一層和第二層都可用來(lái)顯示信息,混合單元會(huì)將這3層混合起來(lái)顯示。
圖4 LTDC控制器框圖
表2 LTDC信號(hào)線和IO連接關(guān)系說(shuō)明
2.2.3 AXI接口
LTDC 驅(qū)動(dòng) RGB-LCD 時(shí),需有很多內(nèi)存做顯存,比如1個(gè) 480×272像素的屏幕,按一般24位 RGB888模式,1個(gè)像素需要4個(gè)字節(jié)的內(nèi)存,共需510 KB內(nèi)存。STM32 內(nèi)部沒(méi)有這么大內(nèi)存,因此必須借助外部 SDRAM,而 SDRAM 是掛在AXI 總線上的,LTDC的AXI接口就是用來(lái)將顯存數(shù)據(jù)從SDRAM存儲(chǔ)器傳輸?shù)?FIFO中的。
2.2.4 配置和狀態(tài)寄存器
LTDC 的各種配置寄存器和狀態(tài)寄存器用于控制整個(gè) LTDC 的工作參數(shù),主要有各信號(hào)的有效電平、垂直/水平同步時(shí)間參數(shù)、像素格式和數(shù)據(jù)使能等。有效顯示區(qū)域就是RGBLCD 面板的顯示范圍(即分辨率),有效寬度與有效高度的乘積就是 LCD 的分辨率。有效數(shù)據(jù)部分才是屏幕可顯示區(qū)域。
2.2.5 時(shí)鐘域
LTDC 有AXI 時(shí)鐘域(Itdc_aclk)、APB3 時(shí)鐘域(Itdc_plck)和像素時(shí)鐘域(Itdc_ker_ck)等3個(gè)時(shí)鐘域,用于驅(qū)動(dòng)接口讀取存儲(chǔ)器的數(shù)據(jù)到FIFO中,其中:APB3 時(shí)鐘域用于配置寄存器;像素時(shí)鐘域用于生成LCD接口信號(hào)。像素時(shí)鐘域的來(lái)源為外部晶振的頻率(25 MHz),經(jīng)過(guò)DIVM3分頻,輸入鎖相環(huán)進(jìn)行倍頻(DIVN3)和分頻(DIVR3),最終輸出到LTDC中,產(chǎn)生LCD-CK,驅(qū)動(dòng)液晶面板。通過(guò)STM32CubeMX配置時(shí)鐘,設(shè)置屏幕時(shí)鐘為9 MHz(見(jiàn)圖5)。
圖5 LCD-CK時(shí)序配置圖
主板選用STM32H753作為處理器,通過(guò)LTDC接口引腳排線與LCD屏相連。該LCD屏采用的是上海天馬TM043NDH02顯示器,其背光每排有5個(gè)LED燈串聯(lián),每個(gè)燈的電壓為3.2 V,工作電流為20 mA,工作電壓為16 V。通過(guò)升壓芯片LMR62421將5 V電壓升至16 V點(diǎn)亮LCD背光。處理器通過(guò)PB3引腳PWM(Pulse Width Modulation)輸出連接到背光負(fù)極線路,實(shí)現(xiàn)PWM調(diào)光功能。處理器通過(guò)FMC(Flexible Memory Controller)控制外部SDRAM芯片,通過(guò)地址線的映射將地址線上的數(shù)據(jù)傳輸?shù)絃CD屏上顯示。處理器提供的2路USART串口通信接口可接收機(jī)艙設(shè)備的運(yùn)行參數(shù)和狀態(tài)參數(shù),并通過(guò)分布現(xiàn)場(chǎng)總線CAN線的通信實(shí)現(xiàn)各監(jiān)控設(shè)備之間的數(shù)據(jù)共享。機(jī)艙監(jiān)測(cè)數(shù)據(jù)(接口-刪除)通過(guò)串口隔離芯片ADM2682傳輸?shù)教幚砥髦?。遠(yuǎn)程監(jiān)控顯示模塊可通過(guò)ETH(Ethernet)以太網(wǎng)線路將監(jiān)控設(shè)備的數(shù)據(jù)上傳至計(jì)算機(jī)上進(jìn)行儲(chǔ)存和查詢(xún)。處理器與各功能外設(shè)芯片的接線設(shè)計(jì)見(jiàn)圖6。
圖6 處理器與各功能外設(shè)芯片的接線設(shè)計(jì)
軟件設(shè)計(jì)主要分為3部分:
1) 在控制芯片STM32H753上根據(jù)功能需求實(shí)現(xiàn)外設(shè)驅(qū)動(dòng)和參數(shù)配置;
2) 分析監(jiān)控顯示模塊界面上的內(nèi)容,利用移植的STemWin系統(tǒng)進(jìn)行圖形化界面設(shè)計(jì);
3) 在嵌入式系統(tǒng)中對(duì)各任務(wù)功能進(jìn)行組織劃分設(shè)計(jì),實(shí)現(xiàn)系統(tǒng)功能。
本文設(shè)計(jì)的遠(yuǎn)程監(jiān)控模塊通過(guò)STM32CbueMX軟件實(shí)現(xiàn)對(duì)處理器引腳的配置,處理器運(yùn)行驅(qū)動(dòng)時(shí)鐘配置為外部輸入時(shí)鐘頻率25 MHz,通過(guò)芯片內(nèi)部變頻使系統(tǒng)運(yùn)行時(shí)鐘頻率為400 MHz。監(jiān)控模塊的各項(xiàng)功能是在FreeRTOS操作系統(tǒng)中新建的任務(wù)中實(shí)現(xiàn)的(見(jiàn)表3)。
表3 程序功能和參數(shù)配置對(duì)照
機(jī)艙監(jiān)控的設(shè)備包括主機(jī)、輔機(jī)、軸系、舵角、風(fēng)機(jī)和不間斷電源(Uninterruptible Power Supply, UPS)等。機(jī)艙設(shè)備的運(yùn)行參數(shù)需明確體現(xiàn)設(shè)備的狀態(tài)和屬性,因此顯示界面包括設(shè)備的狀態(tài)測(cè)點(diǎn)名稱(chēng)、單位、實(shí)時(shí)數(shù)據(jù)和測(cè)點(diǎn)狀態(tài)。為制作UI(User Interface)顯示的界面,需移植STemWin,主要包含2部分:
1) 移植GUI(Graphical User Interface)函數(shù)庫(kù)文件,主要實(shí)現(xiàn)GUI圖形界面的底層驅(qū)動(dòng);
2) 移植GUI圖形驅(qū)動(dòng)文件,申請(qǐng)圖形界面所需的內(nèi)存,使GUI圖形顯示函數(shù)與LCD繪圖函數(shù)相關(guān)聯(lián)。
StemWin中包含GUIBuilder圖形界面工具,可使用這款軟件,根據(jù)實(shí)際顯示尺寸和內(nèi)容設(shè)計(jì)出所需的顯示界面,將軟件導(dǎo)出的C程序添加到工程中即可實(shí)現(xiàn)屏幕顯示界面,減少對(duì)圖形界面的程序開(kāi)發(fā)。遠(yuǎn)程監(jiān)控顯示器模塊實(shí)物圖見(jiàn)圖7。
圖7 遠(yuǎn)程監(jiān)控顯示器模塊實(shí)物圖
主程序系統(tǒng)任務(wù)是控制器軟件的核心,實(shí)現(xiàn)對(duì)各控制對(duì)象控制功能的邏輯運(yùn)算。程序中主要包含串口通信數(shù)據(jù)采集任務(wù)、CAN通信數(shù)據(jù)交互任務(wù)、LCD圖形界面顯示任務(wù)、人機(jī)交互任務(wù)和以太網(wǎng)數(shù)據(jù)上傳任務(wù)。傳統(tǒng)的單片機(jī)采用裸機(jī)編程的方式,主函數(shù)在一個(gè)大循環(huán)中完成對(duì)所有任務(wù)的處理,通過(guò)中斷進(jìn)行故障處理。裸機(jī)編程的系統(tǒng)實(shí)時(shí)性較差,系統(tǒng)中各任務(wù)都是按順序運(yùn)行的,緊急任務(wù)也無(wú)法進(jìn)行調(diào)度,只有在前面的任務(wù)完成之后才可進(jìn)行。監(jiān)控顯示模塊的功能需求是及時(shí)獲取數(shù)據(jù)并顯示,若因相關(guān)任務(wù)影響數(shù)據(jù)的獲取,可能導(dǎo)致顯示的數(shù)據(jù)滯后于實(shí)際值。
本文研究的遠(yuǎn)程監(jiān)控模塊主程序利用FreeRTOS的任務(wù)調(diào)度進(jìn)行任務(wù)功能切換,通過(guò)定時(shí)切換任務(wù)的方式實(shí)現(xiàn)多任務(wù)交替運(yùn)行,使主程序代碼更簡(jiǎn)潔。不同功能在不同任務(wù)中實(shí)現(xiàn),功能變更僅需通過(guò)更改各類(lèi)功能的子函數(shù)即可實(shí)現(xiàn),牽扯面小,易于維護(hù)。FreeRTOS多任務(wù)系統(tǒng)采用時(shí)間片輪詢(xún)機(jī)制和優(yōu)先級(jí)搶占機(jī)制,將主函數(shù)任務(wù)分解為多項(xiàng)小任務(wù)進(jìn)行處理。主函數(shù)中的小任務(wù)是并發(fā)處理的,并不是同一時(shí)刻執(zhí)行多項(xiàng)任務(wù),只是因?yàn)槊宽?xiàng)任務(wù)執(zhí)行的時(shí)間很短,導(dǎo)致外部表現(xiàn)為同一時(shí)刻執(zhí)行多項(xiàng)任務(wù)。操作系統(tǒng)通過(guò)任務(wù)調(diào)度器的搶占式機(jī)制使優(yōu)先級(jí)高的任務(wù)先得到處理,能解決多任務(wù)運(yùn)行順序的問(wèn)題,實(shí)際主程序多任務(wù)運(yùn)行過(guò)程見(jiàn)圖8。
圖8 主程序多任務(wù)運(yùn)行過(guò)程
該遠(yuǎn)程監(jiān)控顯示模塊已在某雙主機(jī)推進(jìn)的實(shí)船上得到應(yīng)用。機(jī)艙設(shè)備運(yùn)行參數(shù)顯示刷新率頻率為10 Hz,故障復(fù)位和人機(jī)交互的延時(shí)時(shí)間為100 ms,網(wǎng)絡(luò)數(shù)據(jù)通信傳輸正常。實(shí)船監(jiān)控模塊運(yùn)行狀態(tài)穩(wěn)定,對(duì)后期監(jiān)測(cè)控制系統(tǒng)的開(kāi)發(fā)有參考作用,能提高軟件的復(fù)用性和可靠性。
本文詳細(xì)闡述了遠(yuǎn)程監(jiān)控模塊的基本原理,通過(guò)采用StemWin系統(tǒng)中的圖形界面開(kāi)發(fā)工具,能大幅度縮短圖形界面開(kāi)發(fā)時(shí)間,快速實(shí)現(xiàn)豐富多樣的顯示界面,這對(duì)于開(kāi)發(fā)設(shè)計(jì)個(gè)性化界面而言有很大優(yōu)勢(shì)。同時(shí),結(jié)合FreeRTOS操作系統(tǒng)實(shí)現(xiàn)了顯示器多任務(wù)管理功能,提高了控制器的利用率。為提高屏幕數(shù)據(jù)顯示和人機(jī)交互的穩(wěn)定性及多樣性,仍需對(duì)控制軟件進(jìn)行優(yōu)化和改良。