亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于串口的心跳監(jiān)聽設(shè)計(jì)及其在QNX中的實(shí)現(xiàn)

        2019-08-24 03:42:40李煦侃
        自動(dòng)化儀表 2019年8期
        關(guān)鍵詞:信號(hào)系統(tǒng)

        李煦侃

        (1.中國(guó)自動(dòng)化學(xué)會(huì)發(fā)電自動(dòng)化專業(yè)委員會(huì),北京 100000;2.浙江浙能興源節(jié)能科技有限公司,浙江 杭州 310013)

        0 引言

        隨著信息化技術(shù)的不斷發(fā)展和普及,許多核心業(yè)務(wù)系統(tǒng)構(gòu)建在信息系統(tǒng)上,對(duì)信息系統(tǒng)的安全及穩(wěn)定性提出了更高的要求。這些業(yè)務(wù)系統(tǒng)包括一系列互相聯(lián)絡(luò)的應(yīng)用,催生了大量的應(yīng)用間相互交流的技術(shù)需求。許多應(yīng)用需要通過發(fā)送消息,將目前狀態(tài)或需要完成的工作告知另一個(gè)應(yīng)用。

        應(yīng)用間互相發(fā)送消息的方式有許多種,一般可以分為兩大類別:采用時(shí)間同步方式發(fā)送消息的稱為同步消息傳遞方式,采用時(shí)間不同步方式發(fā)送消息的稱為異步消息傳遞方式[1]。其中,同步消息傳遞方式要求收發(fā)雙方的運(yùn)行步調(diào)嚴(yán)格匹配,一般情況下較難達(dá)到。因此,異步消息傳遞方式的應(yīng)用范圍更為廣泛[2]。

        心跳監(jiān)聽是一種非常重要的異步消息傳遞方式,是在實(shí)現(xiàn)高可用性和高可靠性的同時(shí),保證系統(tǒng)應(yīng)用正常運(yùn)行和服務(wù)不中斷的關(guān)鍵技術(shù)[3]。為及時(shí)掌握應(yīng)用的實(shí)時(shí)運(yùn)行狀態(tài)、及時(shí)發(fā)現(xiàn)偶發(fā)異常情況、在發(fā)生故障時(shí)及時(shí)處理,心跳監(jiān)聽技術(shù)在消除局部故障、提高全系統(tǒng)可靠性上發(fā)揮越來越重要的作用。因此,研究如何實(shí)現(xiàn)心跳監(jiān)聽具有非常重要的意義。

        QNX操作系統(tǒng)是一種十分重要的分布式實(shí)時(shí)操作系統(tǒng)。本文主要基于該系統(tǒng)進(jìn)行研究。

        1 心跳監(jiān)聽和串口

        1.1 心跳監(jiān)聽

        心跳監(jiān)聽,通常指的是在任意兩個(gè)有聯(lián)系的系統(tǒng)(互相稱為主系統(tǒng)和備用系統(tǒng))之間,相互按照約定的時(shí)間間隔發(fā)送心跳信號(hào),通過能否收到心跳信號(hào)、收到心跳信號(hào)情況,判斷對(duì)方系統(tǒng)健康狀況。在主備系統(tǒng)環(huán)境中,當(dāng)處于備用角色的系統(tǒng)接收到心跳信號(hào)并核對(duì)正確,表示處于主角色的系統(tǒng)運(yùn)行正常;當(dāng)處于備用角色的系統(tǒng)連續(xù)若干次(可根據(jù)需求自定義)未收到心跳信號(hào),或者收到的心跳信號(hào)錯(cuò)誤,則備用系統(tǒng)判斷主系統(tǒng)異常,并切換為主系統(tǒng),避免失效的主系統(tǒng)所執(zhí)行的任務(wù)中斷,以提高整體系統(tǒng)的可靠性[4]。

        為研究并實(shí)現(xiàn)心跳監(jiān)聽的功能,考慮到系統(tǒng)的通用性,可通過串口等標(biāo)準(zhǔn)通信接口來傳遞心跳信號(hào)。此外,還可以在傳遞心跳信號(hào)的同時(shí)傳遞其他相關(guān)信息,既提高了硬件使用的效率,又降低了心跳監(jiān)聽技術(shù)的實(shí)現(xiàn)成本。

        1.2 串口

        串口即串行通信接口,一般包括RS-232-C、RS-422、RS-485、USB等。不同的電氣標(biāo)準(zhǔn),所采用的通信協(xié)議也有所區(qū)別。其中RS-232-C標(biāo)準(zhǔn)提出時(shí)間較早,應(yīng)用較為廣泛,是目前常用的一種串行通信接口。其全名為“數(shù)據(jù)終端設(shè)備(data terminal eqipment,DTE)和數(shù)據(jù)通信設(shè)備(data communication eqipment,DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”[5],又稱標(biāo)準(zhǔn)串口。RS-232-C接口標(biāo)準(zhǔn)初期一般使用22線制,采用25芯D型插頭座;后進(jìn)行了簡(jiǎn)化,可使用3線制(包括TX、RX、COM),采用9芯D型插座,使用較為簡(jiǎn)便。

        本文以RS-232-C接口為應(yīng)用間通信接口,在此基礎(chǔ)上介紹心跳監(jiān)聽的設(shè)計(jì)方法,并給出其在QNX操作系統(tǒng)中的實(shí)現(xiàn)實(shí)例。

        2 心跳監(jiān)聽的原理

        一般來說,可在主系統(tǒng)和備用系統(tǒng)或任意兩個(gè)有聯(lián)系的系統(tǒng)的應(yīng)用之間,通過串口,對(duì)獨(dú)立心跳信號(hào)的周期性收發(fā)及處理,實(shí)現(xiàn)基本的心跳監(jiān)聽。因此,心跳監(jiān)聽的實(shí)現(xiàn)過程主要包括心跳信號(hào)發(fā)送、心跳信號(hào)接收與處理兩部分。負(fù)責(zé)心跳信號(hào)發(fā)送的為發(fā)送方,負(fù)責(zé)心跳信號(hào)接收與處理的為接收方。為實(shí)現(xiàn)心跳監(jiān)聽的功能,一般發(fā)送方同時(shí)也是接收方。

        2.1 心跳信號(hào)發(fā)送

        心跳信號(hào)的發(fā)送由發(fā)送方完成。發(fā)送方如何發(fā)送心跳信號(hào),需要根據(jù)整體系統(tǒng)的需求進(jìn)行設(shè)計(jì),主要包括心跳消息、心跳周期、異常處理等。

        心跳消息是系統(tǒng)約定的文本、數(shù)字或其他可為系統(tǒng)識(shí)別的數(shù)據(jù)類型。根據(jù)需要,也可定義多組心跳消息,以實(shí)現(xiàn)不同的功能。

        心跳周期又稱心跳頻率,用于控制心跳信號(hào)的發(fā)送頻率,需要根據(jù)系統(tǒng)所執(zhí)行的工作和系統(tǒng)處理速度確定。若系統(tǒng)所執(zhí)行的工作時(shí)間要求高,則心跳頻率要提高;若系統(tǒng)處理速度相對(duì)較慢,則心跳頻率要相應(yīng)降低,不得影響系統(tǒng)正常運(yùn)行。心跳頻率可采用定時(shí)器控制[6]。

        異常處理即心跳信號(hào)發(fā)送錯(cuò)誤時(shí)的處理措施,可按照系統(tǒng)需求定義。

        2.2 心跳信號(hào)接收與處理

        心跳信號(hào)的接收與處理由接收方完成。接收方如何發(fā)送心跳信號(hào),同樣需要根據(jù)整體系統(tǒng)的需求進(jìn)行設(shè)計(jì),主要包括心跳消息、心跳周期、異常處理等。

        接收方的心跳消息、心跳周期需要和發(fā)送方一致。

        異常處理是指在接收不到心跳信號(hào)、接收到異常心跳信號(hào)或接收到特定心跳信號(hào)時(shí)的處理措施。一般在接收不到心跳信號(hào)或接收到異常心跳信號(hào)時(shí),可按照對(duì)方系統(tǒng)故障處理;在接收到特定心跳信號(hào)時(shí),可按照約定方式處理,以實(shí)現(xiàn)系統(tǒng)特殊功能。在接收心跳信息時(shí),應(yīng)設(shè)置心跳狀態(tài),并記錄有關(guān)數(shù)據(jù)。

        3 QNX操作系統(tǒng)及串口通信的實(shí)現(xiàn)

        3.1 QNX操作系統(tǒng)簡(jiǎn)介

        QNX操作系統(tǒng)是使用十分廣泛的實(shí)時(shí)操作系統(tǒng)(real-time operation system,RTOS)[7],已有39年的歷史。QNX是一個(gè)微內(nèi)核實(shí)時(shí)平臺(tái),可使用QNX Momentics對(duì)目標(biāo)系統(tǒng)在Windows等平臺(tái)下進(jìn)行圖形可視化開發(fā),廣泛應(yīng)用于X86、PowerPC、MIPS等眾多硬件環(huán)境。遵循POSIX基本標(biāo)準(zhǔn),不論是從其他平臺(tái)移植到QNX平臺(tái)、在不同硬件環(huán)境的QNX平臺(tái)之間移植,還是從QNX平臺(tái)移植到其他平臺(tái),都十分方便[8],且性能強(qiáng)大、具有良好的實(shí)時(shí)性。

        操作系統(tǒng)的實(shí)時(shí)性,是指確保時(shí)鐘信號(hào)能夠準(zhǔn)確地定時(shí),各處的時(shí)鐘能夠達(dá)到一致,QNX操作系統(tǒng)在不同的場(chǎng)合可達(dá)到微秒級(jí)。QNX操作系統(tǒng)基于優(yōu)先級(jí)搶占式調(diào)度策略[9],區(qū)別于Windows等分時(shí)操作系統(tǒng)采用的時(shí)間片管理方式。QNX操作系統(tǒng)中高優(yōu)先級(jí)的任務(wù)一旦就緒,即可立即占用CPU資源。同優(yōu)先級(jí)的任務(wù)按照時(shí)間片方式管理(時(shí)間片可自定義),可在限定時(shí)間內(nèi)對(duì)外來事件作出反應(yīng)。

        3.2 基于QNX的串口通信構(gòu)建

        QNX操作系統(tǒng)在實(shí)現(xiàn)串口通信時(shí),與Windows等分時(shí)操作系統(tǒng)不同。QNX操作系統(tǒng)在啟動(dòng)時(shí),需要加載一個(gè)包含操作系統(tǒng)、可執(zhí)行程序以及任何與有關(guān)數(shù)據(jù)的文件[10]在內(nèi)的系統(tǒng)映像文件。QNX的系統(tǒng)映像文件需要通過編寫包括啟動(dòng)腳本、啟動(dòng)引導(dǎo)腳本和文件列表三個(gè)部分的Build file文本后,由內(nèi)置的mkifs工具編譯生成。通過加載系統(tǒng)映像文件,QNX操作系統(tǒng)用啟動(dòng)腳本中的參數(shù)注冊(cè)硬件資源、配置硬件參數(shù)[11],QNX的串口就在此時(shí)進(jìn)行配置。

        3.3 QNX串口通信的特點(diǎn)及實(shí)現(xiàn)方法

        QNX對(duì)硬件的訪問非常簡(jiǎn)便。對(duì)用戶而言,對(duì)硬件的操作即對(duì)文件的操作。硬件文件存儲(chǔ)在QNX操作系統(tǒng)的“/dev”目錄。QNX通過對(duì)硬件資源的虛擬,極大地方便了用戶,簡(jiǎn)化了應(yīng)用開發(fā)。QNX對(duì)設(shè)備文件的訪問可通過內(nèi)置標(biāo)準(zhǔn)化函數(shù)實(shí)現(xiàn)。

        串口通信要求雙方的速度、消息格式一致,速度參數(shù)主要是波特率,消息格式主要包括數(shù)據(jù)位、停止位及校驗(yàn)位等。在QNX操作系統(tǒng)中,這些參數(shù)包含在“termios.h”頭文件中,可通過位運(yùn)算(置位、清零等)設(shè)置這些參數(shù)。

        QNX通過對(duì)串口文件的訪問實(shí)現(xiàn)對(duì)串口的操作,串口文件命名規(guī)則為“ser+編號(hào)”,例如“/dev/ser0”。操作串口0的函數(shù)及示例如下。

        ①打開串口0。

        int fd=open (“/dev/ser0”,O_RDWR);

        ②設(shè)置串口。

        //設(shè)置串口波特率

        speed_t ispeed=19800;

        speed_t ospeed=19800;

        cfsetispeed (&termios_p,ispeed);

        cfsetospeed (&termios_p,ospeed);

        //設(shè)置串口變量參數(shù)

        Termios_p·c_iflag&= (IXOFF|IXON);

        Termios_p·c_oflag&= (OPOST);

        Termios_p·c_lflag&=(ECHONL|ICANON|IEXTEN);

        ③接收數(shù)據(jù)。

        intsizeofReadbyte=read (fd,buffer,sizeof (buffer));

        ④發(fā)送數(shù)據(jù)。

        int sizeofWritebyte=write (fd,buffer,sizeof (buffer));

        ⑤關(guān)閉串口。

        close (fd);

        QNX操作系統(tǒng)的串口通信流程如圖1所示。

        圖1 串口通信流程圖Fig.1 Serial communication flowchart

        4 QNX操作系統(tǒng)的心跳監(jiān)聽實(shí)現(xiàn)

        4.1 心跳監(jiān)聽模塊

        在基于QNX操作系統(tǒng)串口通信的心跳監(jiān)聽系統(tǒng)中,包含心跳發(fā)送模塊、心跳接收與處理模塊。兩個(gè)模塊協(xié)同工作,組成一個(gè)有機(jī)的整體。

        4.1.1 心跳發(fā)送模塊

        心跳發(fā)送模塊按照心跳頻率持續(xù)向串口寫預(yù)定義的心跳消息。在發(fā)送數(shù)據(jù)的同時(shí),必須保證每次發(fā)送成功,并做好異常處理,記錄日志。相應(yīng)地,發(fā)送異常時(shí)需要具備一定的故障診斷能力。

        心跳發(fā)送模塊工作流程如圖2所示。

        圖2 心跳發(fā)送模塊工作流程圖Fig.2 Working flowchart of heartbeat sending module

        4.1.2 心跳接收與處理模塊

        心跳接收與處理模塊持續(xù)嘗試接收數(shù)據(jù),一旦接收到數(shù)據(jù),就和預(yù)定義的數(shù)據(jù)比較。若結(jié)果一致,就判定接收到心跳信號(hào);若超過規(guī)定的時(shí)間未接收到任何數(shù)據(jù),則執(zhí)行一個(gè)預(yù)定的任務(wù),比如將備站切為主站。

        同樣地,心跳接收與處理模塊需要具備一定的故障診斷能力,及時(shí)做好異常處理,記錄日志。

        心跳接收與處理模塊工作流程如圖3所示。

        圖3 心跳接收與處理模塊工作流程圖Fig.3 Working flowchart of heartbeat receiving and processing module

        4.2 心跳協(xié)調(diào)定時(shí)器

        在QNX操作系統(tǒng)串口通信的心跳監(jiān)聽系統(tǒng)中,心跳信息的發(fā)送、接收與處理都需要定時(shí)器來協(xié)調(diào)[12],可采用QNX操作系統(tǒng)提供的定時(shí)器實(shí)現(xiàn)。以下給出一個(gè)實(shí)例。

        main()

        {

        ……

        event.sigev_code = MY_PULSE_CODE;

        timer_settime(timer_id,0,&itime,NULL);

        //每隔3.5 s收到一個(gè)脈沖(itime.it_value)

        //每隔3.5 s收到另一個(gè)脈沖(itime.it_interval)

        for (;;)

        {

        rcvid = MsgReceive(chid,&msg,sizeof(msg),NULL);

        if (rcvid == 0)

        {

        //we got a pulse

        if (msg.pulse.code == MY_PULSE_CODE)

        {

        printf("從計(jì)時(shí)器得到一個(gè)脈沖信號(hào) ");

        ……

        }

        //else other pulses ...

        }

        //else other messages ...

        }

        ……

        }

        每收到一次脈沖,心跳協(xié)調(diào)定時(shí)器就完成一次計(jì)時(shí),以實(shí)現(xiàn)心跳信號(hào)發(fā)送、接收和處理的調(diào)度。

        4.3 心跳監(jiān)聽的驗(yàn)證

        為驗(yàn)證心跳監(jiān)聽的實(shí)現(xiàn),搭建了試驗(yàn)平臺(tái)。該平臺(tái)包括2套系統(tǒng)。每套系統(tǒng)均包含一顆獨(dú)立的CPU,可運(yùn)行QNX操作系統(tǒng)。系統(tǒng)間用一根RS-232-C連接線互相連接。心跳監(jiān)聽試驗(yàn)平臺(tái)流程如圖4所示。

        圖4 心跳監(jiān)聽試驗(yàn)平臺(tái)流程圖Fig.4 Flowchart of heartbeat monitoring

        通過將心跳監(jiān)聽程序編譯入兩套系統(tǒng)的QNX系統(tǒng)映像文件,使心跳監(jiān)聽程序隨QNX操作系統(tǒng)啟動(dòng)。心跳監(jiān)聽程序啟動(dòng)后,系統(tǒng)開始從RS-232-C接口接收心跳信號(hào)。若未收到信號(hào),置為主系統(tǒng);反之,則置為從系統(tǒng)。主從系統(tǒng)確定后,主系統(tǒng)不斷發(fā)送心跳信號(hào),從系統(tǒng)不斷接收心跳信號(hào)。當(dāng)從系統(tǒng)連續(xù)若干次接收不到心跳系統(tǒng)時(shí),則自動(dòng)切換為主系統(tǒng),并向主系統(tǒng)發(fā)送重置信號(hào)。

        5 結(jié)束語

        當(dāng)前條件下,各種業(yè)務(wù)系統(tǒng)對(duì)信息系統(tǒng)的依賴與日俱增,信息系統(tǒng)能否實(shí)現(xiàn)全時(shí)段無故障工作已經(jīng)受到廣泛關(guān)注。心跳監(jiān)聽技術(shù)實(shí)現(xiàn)的成本較低,在提高整體的系統(tǒng)安全、可靠性方面效果較好。

        本文主要討論了基于串口通信的心跳監(jiān)聽方法,并在QNX操作系統(tǒng)中,通過串口實(shí)現(xiàn)了基本的心跳監(jiān)聽,給出了部分實(shí)例。相關(guān)工程技術(shù)人員在實(shí)際應(yīng)用中,可以在此基礎(chǔ)上結(jié)合具體情況,設(shè)計(jì)應(yīng)急措施和恢復(fù)處理程序,從而盡可能提高整體系統(tǒng)的應(yīng)急處理能力和可靠性,或利用心跳監(jiān)聽系統(tǒng)實(shí)現(xiàn)所需的特定功能。

        猜你喜歡
        信號(hào)系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        信號(hào)
        鴨綠江(2021年35期)2021-04-19 12:24:18
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        完形填空二則
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        孩子停止長(zhǎng)個(gè)的信號(hào)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        基于LabVIEW的力加載信號(hào)采集與PID控制
        亚洲综合偷自成人网第页色| 香蕉国产人午夜视频在线观看| 最新永久免费AV网站| 亚洲乱码av一区二区蜜桃av| 久久国产人妻一区二区| 欧美孕妇xxxx做受欧美88| 甲状腺囊实性结节三级| 久久国产精品国产精品日韩区| 人妻av一区二区三区高| 国内精品国产三级国产| 岛国av无码免费无禁网站| 国产a v无码专区亚洲av| 尤物yw午夜国产精品视频| 亚洲av手机在线播放| 久久国产精品偷任你爽任你| 人妻激情另类乱人伦人妻| 欧洲熟妇色xxxx欧美老妇多毛网站| 99JK无码免费| 青青草视频在线播放观看| 成年免费a级毛片免费看无码| 欧美亚洲日韩国产人成在线播放 | 亚洲精品乱码久久久久99| 今井夏帆在线中文字幕| 亚洲精品蜜夜内射| 亚洲成在人线av| 偷拍激情视频一区二区| 福利视频一区二区三区| 亚洲精品无码久久久久牙蜜区| 亚洲国产成人精品福利在线观看| 国产午夜在线观看视频| 亚洲va中文字幕无码一二三区| 国产乱人伦av在线a| 国产精品亚洲综合天堂夜夜| 亚洲精品国产av日韩专区| 亚洲日韩久久综合中文字幕| 日本japanese少妇高清| 亚洲女同成av人片在线观看| 一个人午夜观看在线中文字幕| 又色又爽又黄高潮的免费视频| 精品国产一区二区三区19| 中文字幕精品亚洲一区二区三区|