av人摸人人人澡人人超清,日本黄网站色视频免费,香焦伊人,三级av毛片在线播放,自慰在线观看18p,超碰欧美亚洲日韩,午夜激情涩涩网

您現(xiàn)在的位置:首頁 / 汽車用品 / 著名品牌 / 著名品牌_PLC

嵌入式智能人機(jī)界面與PLC的通訊

[ 07-9-4 14:35 ]  太平洋汽車網(wǎng)  
   1、引言

    近年來,“嵌入式”一詞越來越多的被人們提及,嵌入式產(chǎn)品被應(yīng)用到各行各業(yè)。與嵌入式相關(guān)的技術(shù)如嵌入式產(chǎn)品,嵌入式系統(tǒng)的研究等也被列為“十五”家發(fā)展的重點(diǎn)方向。

    嵌入式系統(tǒng)(EmbeddedSystem)被定義為:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可裁剪,適應(yīng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

    隨著工業(yè)自動(dòng)化的發(fā)展,基于PLC,單片機(jī)等設(shè)備的自動(dòng)化系統(tǒng),自動(dòng)化設(shè)備越來越普及,幾乎遍布所有自動(dòng)化領(lǐng)域,與之相應(yīng)的人機(jī)交互系統(tǒng)也應(yīng)運(yùn)而生,并得到同步發(fā)展。基于嵌入式技術(shù)的工業(yè)人機(jī)界面是人機(jī)交互系統(tǒng)中一顆耀眼的明星。高可靠,壽命,體積小,高性能,多線程,多任務(wù),強(qiáng)實(shí)時(shí)等特點(diǎn)使嵌入式工業(yè)人機(jī)界面越來越受到自動(dòng)化系統(tǒng)集成商,自動(dòng)化設(shè)備制造商的青睞。它能夠理想,生動(dòng)地顯示PLC,單片機(jī)等工業(yè)設(shè)備上的數(shù)據(jù)信息,功能強(qiáng)大,使用方便。它作為PLC等控制設(shè)備的上端設(shè)備在用戶和機(jī)器之間架設(shè)了一條橋梁。該產(chǎn)品目前廣泛應(yīng)用在工業(yè)自動(dòng)化系統(tǒng),醫(yī)療,金融等行業(yè)的自動(dòng)化設(shè)備。

    隨著越來越多的工程項(xiàng)目采用了嵌入式人機(jī)界面,相應(yīng)的,用戶對(duì)與嵌入式硬件配套使用的監(jiān)控系統(tǒng)(SupervisoryControlandDataAcquisition,SCADA)等應(yīng)用軟件的需求也在增加。這也正是本文所要討論的問題。這里講的嵌入式監(jiān)控系統(tǒng),其硬件為嵌入式智能人機(jī)界面;其軟件為嵌入式操作系統(tǒng),另加自己開發(fā)的應(yīng)用程序。本文后面主要介紹這個(gè)監(jiān)控應(yīng)用程序,重點(diǎn)介紹應(yīng)用程序中通訊部分的實(shí)現(xiàn)原理。

    當(dāng)今,已發(fā)展有多種嵌入式操作系統(tǒng),如Linux,VxWorks,WinCE.net等,完全可在其上開發(fā)出圖文并茂、界面友好的應(yīng)用,以滿足監(jiān)控系統(tǒng)的種種要求。只是由于嵌入式技術(shù)相對(duì)是一門新興的領(lǐng)先技術(shù),涉足的人相對(duì)還比較少,所以這樣的應(yīng)用目前還比較少。本文介紹的嵌入式監(jiān)控系統(tǒng)算是一個(gè)實(shí)例吧。

    2、系統(tǒng)組成

    我們所開發(fā)的這套嵌入式監(jiān)控系統(tǒng),上位機(jī)是沈陽鷺島資訊科技有限公司開發(fā)的嵌入式智能工業(yè)控制人機(jī)界面(以下簡稱人機(jī)界面)。其嵌入式工業(yè)控制器是以GeodeX86為核心處理器,包括網(wǎng)絡(luò)通訊,數(shù)據(jù)通信,大尺寸觸摸屏及液晶顯示的硬件平臺(tái),在其上運(yùn)行WinCE操作系統(tǒng)。提供20個(gè)通用IO點(diǎn)供用戶使用,物理層支持ProfiBus等現(xiàn)場總線,支持16位真彩TFTLCD顯示,有64MSDRAM內(nèi)存,64MFLASH閃存,據(jù)有USB接口,10/100MEthernet網(wǎng)絡(luò)通訊接口,以及串口,并口,VGA口等通用接口。

    下位機(jī)用日本OMRON公司的PLC,或SIMENSPLC,或施耐德NEZAPLC,或日本三菱公司的PLC,等等當(dāng)前比較流行的PLC,當(dāng)然溫控表,單片機(jī),智能模塊等工業(yè)現(xiàn)場控制設(shè)備也可以。

    控制對(duì)象(比如鍋爐等)的工作由上述控制設(shè)備(各種PLC等)控制;而控制對(duì)象的狀態(tài)則用人機(jī)界面及在其上開發(fā)的應(yīng)用程序進(jìn)行監(jiān)控。

    人機(jī)界面的操作系統(tǒng)采用了微軟的WinCE.net。WinCE.net是為各種嵌入式系統(tǒng)和產(chǎn)品設(shè)計(jì)的一種緊湊,高效,可伸縮的操作系統(tǒng)(OS),主要面向各種嵌入式系統(tǒng)和產(chǎn)品。其多線程、多任務(wù)、完全搶占式的特點(diǎn)是專門針對(duì)資源有限而設(shè)計(jì)的。OEM開發(fā)商可根據(jù)自己硬件組成的特點(diǎn)對(duì)WinCE.net進(jìn)行選擇裁剪,從而配置出穩(wěn)定高效并且是特有的WinCE.net操作系統(tǒng)和相應(yīng)的SDK開發(fā)包。在應(yīng)用上,WinCE.net支持超過1000個(gè)公共MicrosoftWin32API和幾種附加的編程接口,用戶可利用它們來開發(fā)應(yīng)用程序。另外,微軟為開發(fā)WinCE.net應(yīng)用程序的人員提供了與VisualC++類似、支持MFC的MicrosofteMbeddedVisualC++語言。下面我們將介紹一下開發(fā)過程的細(xì)節(jié)問題。

    3、軟件流程

    應(yīng)用程序開發(fā)是在個(gè)人計(jì)算機(jī)上進(jìn)行的。個(gè)人計(jì)算機(jī)的操作系統(tǒng)為WINDOWS2000。應(yīng)用程序的開發(fā)平臺(tái)是MicrosofteMbeddedVisualC++集成開發(fā)環(huán)境。

    在應(yīng)用程序開發(fā)時(shí),還可以利用微軟提供的測試模擬器(Emulator)。有了它可做到,即使沒有人機(jī)界面,也可進(jìn)行程序調(diào)試。

    開發(fā)最終生成的可執(zhí)行文件,可使用MicrosofteMbeddedVisualc++開發(fā)環(huán)境提供的下載功能,通過串口或局域網(wǎng),下載給人機(jī)界面。

    工作時(shí),PLC等工控設(shè)備運(yùn)行它的控制程序,而人機(jī)界面則運(yùn)行這個(gè)下載的可執(zhí)行文件。兩者通過串口進(jìn)行通訊,但通訊的主動(dòng)方為人機(jī)界面。人機(jī)界面依監(jiān)控要求,向PLC等發(fā)送通訊命令,PLC則作相應(yīng)的應(yīng)答。

    人機(jī)界面從PLC上收到應(yīng)答的數(shù)據(jù)后,在觸摸屏上,以圖表、動(dòng)畫,文字等的界面顯現(xiàn)出來,供用戶觀察。還可把這些數(shù)據(jù)進(jìn)行存貯、打印,甚至于向ERP等管理信息系統(tǒng)傳送。

    如須對(duì)PLC或控制對(duì)象進(jìn)行干預(yù),也可在人機(jī)界面的觸摸屏上,通過觸摸鍵或觸摸鼠標(biāo),向PLC發(fā)送命令或數(shù)據(jù),以實(shí)現(xiàn)相應(yīng)的控制。

    這個(gè)應(yīng)用的執(zhí)行流程框圖為:

    圖1執(zhí)行流程框圖

    4、畫面構(gòu)成

    一般的工程監(jiān)控畫面有:文字顯示,生產(chǎn)工藝流程顯示(包括動(dòng)畫,柱狀圖顯示等),報(bào)警,人員操作,趨勢曲線等等。我們的系統(tǒng)架構(gòu)是做一個(gè)基于主對(duì)話框的程序。再將這些不同的畫面用子對(duì)話框表現(xiàn)出來。

    主對(duì)話框負(fù)責(zé)初始化串口,打開串口,啟動(dòng)讀串口線程等;而各子對(duì)話框則定時(shí)或根據(jù)需要向串口發(fā)送各種命令,通過主對(duì)話框的線程讀回命令的應(yīng)答,再在子對(duì)話框中以一定的形式提供給用戶,以供監(jiān)控現(xiàn)場作業(yè)。這其中主要的技術(shù)就是串口通訊。下面我們重點(diǎn)講述通訊的實(shí)現(xiàn)。

    5、通訊實(shí)現(xiàn)

    人機(jī)界面提供的串口是符合通用標(biāo)準(zhǔn)的。WinCE.net下的串口通訊與Windows下的串口通訊原理相同。都是應(yīng)用程序不直接控制硬件,而是通過操作系統(tǒng)提供的設(shè)備驅(qū)動(dòng)程序,來進(jìn)行數(shù)據(jù)傳遞。

    WinCE.net是Win32編程。串口在Win32中是作為文件來進(jìn)行處理的,不是直接對(duì)端口進(jìn)行操作。對(duì)于串行通信,Win32提供了相應(yīng)的文件I/O函數(shù)與通信函數(shù)。

    但是也要注意WinCE.net所能支持的API函數(shù)只是WindowAPI函數(shù)的子集。Windows有的,WinCE.net下不一定能使用。同時(shí),WinCE.net字符集類似于WindowsNT而不同于Windows9x,它是基于Unicode的。這也是開發(fā)程序過程中從WINDOWS轉(zhuǎn)到WinCE.net的程序員遇到問題最多的地方。另外在Windows下常用的一些通訊控件如MSComm等在WinCE.net下就不能正確使用了。

    本監(jiān)控系統(tǒng)采用API函數(shù)實(shí)現(xiàn)串口通訊。以下分幾個(gè)問題介紹串口通訊及整個(gè)系統(tǒng)的實(shí)現(xiàn)。

    5.1打開串口

    首先是打開串口,這是串口通訊的第一步。其代碼為:

    BOOLCMainDlg::OnInitDialog()

    {

    ......

    m_hComm=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);//打開串口的操作,需要注意

    WinCE.net系統(tǒng)與Windows系統(tǒng)表達(dá)方式的細(xì)微不同,WinCE.net需要在串口后加上冒號(hào);

    SetupComm(m_hComm,1024,1024);//初始化串口的輸入,輸出緩沖區(qū)參數(shù);

    SetCommState(m_hComm,&m_dcb);//配置串口參數(shù);m_dcb為設(shè)置好的參數(shù)結(jié)構(gòu);

    ......

    SetCommTimeouts(m_hComm,&timeout);//設(shè)置通訊超時(shí)時(shí)間參數(shù);

    PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);

    //清空輸入,輸出緩沖區(qū)的字符,為開始接受數(shù)據(jù),進(jìn)入監(jiān)控狀態(tài)做好準(zhǔn)備;

    ......

    }

    5.2讀串口線程

    其次是啟動(dòng)讀串口線程,它讓讀串口程序不停地在后臺(tái)運(yùn)行,而不影響前臺(tái)程序的工作。與此有關(guān)的代碼為:

    BOOLCMainDlg::OnInitDialog()

    {

    ......

    ReadFile(m_hComm,inBuffer+iBufLen,INBUFFERLEN-iBufLen,&dwBytes,NULL);//從串口讀數(shù)據(jù);

    iBufLen+=dwBytes;

    for(inti=0;i{

    if(inBuffer[i]=="\r")//以連接的設(shè)備為OMRONPLC為例,其通訊協(xié)議規(guī)定應(yīng)答應(yīng)當(dāng)以"\r"結(jié)尾;

    inBuffer[i]=0;//字符串結(jié)束標(biāo)志;

    switch(m_iDlgType)//m_iDlgType為代表不同對(duì)話框的標(biāo)志變量;

    {

    case子對(duì)話框1標(biāo)志:

    子對(duì)話框1.ProcData(inBuffer,i);//不同對(duì)話框中對(duì)命令應(yīng)答的處理,ProcData為處理函數(shù)名;

    break;

    ......

    }

    ......

    }

 5.3各子對(duì)話框發(fā)送寫命令

    各個(gè)子對(duì)話框根據(jù)需要,采用定時(shí)器的形式,定時(shí)向PLC發(fā)送命令。以O(shè)MRONPLC為例,在發(fā)送命令時(shí),根據(jù)OMRONPLC的通訊協(xié)議,還需對(duì)發(fā)送的命令字符串加校驗(yàn)碼。這些程序代碼為:

    void子對(duì)話框1類::OnTimer(UINTnIDEvent)

    {

    ......

    strcpy(m_szCmd,"@00RR00000001");//OMRONPLC的命令字符串;

    GenXor(m_szCmd,result);//進(jìn)行校驗(yàn)碼計(jì)算,調(diào)用GenXor函數(shù);

    sprintf(szTailer,"%02X*\r",result);//OMRONPLC通訊協(xié)議以“*\r”結(jié)尾;

    strcat(m_szCmd,szTailer);//形成完整的通訊協(xié)議命令字符串;

    WriteFile(m_hComm,m_szCmd,strlen(m_szCmd),&dwWriten,NULL);

    //將命令字符串寫入串口;

    ......

    }

    以下為上面所調(diào)用的計(jì)算校驗(yàn)碼的代碼:

    voidGenXor(LPCSTRstrSource,char&result)//為計(jì)算校驗(yàn)碼的函數(shù),進(jìn)行異或運(yùn)算:

    {

    result=0;//為校驗(yàn)碼賦初值;

    intlen=strlen(strSource);//命令協(xié)議字符串的長度;

    for(inti=0;iresult^=strSource[i];//按位進(jìn)行異或;

    }

    5.4顯示界面處理

    最后,讀線程讀到的數(shù)據(jù),交由對(duì)應(yīng)的子對(duì)話框進(jìn)行處理。要對(duì)這些數(shù)據(jù)進(jìn)行分析,并以動(dòng)畫,柱狀圖,趨勢曲線等表現(xiàn)出來。以所連接的為OMRONPLC為例,其代碼為:

    

    void子對(duì)話框1類::ProcData(char*buffer,intlen)

    {

    ......sscanf(buffer+7,"%04X",&wData);//根據(jù)OMRONPLC的命令規(guī)約,從應(yīng)答中將需要的數(shù)據(jù)取出到變量wData中;

    .......//對(duì)獲得的變量值根據(jù)需要進(jìn)行處理,如以文字或動(dòng)畫等形式在子對(duì)話框中進(jìn)行顯示;

    }

    在進(jìn)行界面處理時(shí),有一些技巧,如動(dòng)畫顯示時(shí),可以用一個(gè)定時(shí)器控制圖片的輪番顯示。(在本系統(tǒng)中動(dòng)畫是通過CbitmapButton這個(gè)控件進(jìn)行顯示的。)

    switch(m_iImage)//m_iImage為定義的動(dòng)畫顯示標(biāo)志;

    {

    case1://顯示第一幅圖片,同時(shí)將動(dòng)畫顯示標(biāo)志置為2;

    CBitmapButton控件變量.LoadBitmaps(圖片標(biāo)志1);

    m_iImage=2;

    break;

    case2://顯示第二幅圖片,同時(shí)將動(dòng)畫顯示標(biāo)志置為1;

    CBitmapButton控件變量.LoadBitmaps(圖片標(biāo)志2);

    m_iImage=1;

    break;

    }

    在顯示實(shí)時(shí)曲線時(shí),采用循環(huán)數(shù)組的方式,在內(nèi)存中開辟一定大小的空間,使讀上來的數(shù)形成一個(gè)循環(huán)數(shù)組,在界面上動(dòng)態(tài)的顯示出來。

    本系統(tǒng)中以20個(gè)模擬量為一個(gè)數(shù)組大小,也就是實(shí)時(shí)趨勢曲線一直顯示20個(gè)點(diǎn)的信息,但因?yàn)槭褂昧搜h(huán)數(shù)組的技術(shù),所以看上去很有動(dòng)感。

    void子對(duì)話框類::循環(huán)數(shù)組函數(shù)(intiValue)//iValue為從命令應(yīng)答中解析出來的有效數(shù)據(jù);

    {

    intindex=(m_iBegin+m_iCount)%20;//計(jì)算循環(huán)數(shù)組的下標(biāo),初始從0開始;

    m_aryValue=iValue;//為循環(huán)數(shù)組賦值;

    m_iCount++;//循環(huán)數(shù)組的個(gè)數(shù)加1;

    if(m_iCount>20)//判斷個(gè)數(shù)是否超過20個(gè),如是,將下一個(gè)數(shù)組下標(biāo)從1開始,依此類推;

    {

    m_iCount=20;

    m_iBegin=(m_iBegin+1)%20;

    }

    ......

    }

    通訊是本系統(tǒng)的關(guān)鍵。我們的實(shí)踐證明,以上四步是實(shí)現(xiàn)整個(gè)監(jiān)控系統(tǒng)基本之要點(diǎn)。

    6、結(jié)論

    總之,本監(jiān)控系統(tǒng)軟件的基本架構(gòu)可以以下面這幅圖直觀的表示出來:

    圖2監(jiān)控系統(tǒng)軟件的基本架構(gòu)

    隨著嵌入式操作系統(tǒng)的興起,各組態(tài)軟件的開發(fā)商也紛紛開發(fā)出了嵌入式版的組態(tài)軟件。但在實(shí)際應(yīng)用中我們發(fā)現(xiàn)有許多企業(yè),他們的生產(chǎn)控制流程比較固定,需要的人機(jī)界面的數(shù)量又比較大,對(duì)他們來說,按這里介紹的方法,針對(duì)企業(yè)自身的生產(chǎn)工藝特點(diǎn)進(jìn)行開發(fā),提供給用戶的是最終的運(yùn)行系統(tǒng),不需要用戶再進(jìn)行組態(tài)的二次開發(fā)。這樣的系統(tǒng)對(duì)這樣的用戶來說,從時(shí)間,價(jià)格或性能上來說都比較適合。本系統(tǒng)在鷺島公司研發(fā)的LEODO嵌入式工業(yè)控制人機(jī)界面上經(jīng)過了測試運(yùn)行,證明其運(yùn)行速度較快,比較穩(wěn)定。效果很好,比較適合工業(yè)現(xiàn)場使用。當(dāng)然LEODO品牌的人機(jī)界面也內(nèi)置了一套簡明實(shí)用,畫面資源豐富的ET組態(tài)軟件,用戶可根據(jù)實(shí)際情況決定自己用高級(jí)語言開發(fā),還是用組態(tài)軟件開發(fā)。

    總之,可以看出,人機(jī)界面利用MicrosofteMbeddedC++開發(fā)應(yīng)用程序,與在Windows系統(tǒng)下用MicrosoftVisualC++開發(fā)程序,有許多相象的地方。借助這個(gè)軟、硬件平臺(tái),多數(shù)用戶完全可以開發(fā)出適合自己需要的應(yīng)用程序。

    本文為太平洋汽車網(wǎng)轉(zhuǎn)載文章,歡迎各家媒體轉(zhuǎn)載。轉(zhuǎn)載時(shí)請注明原出處,如果想轉(zhuǎn)載“太平洋汽車網(wǎng)原創(chuàng)文章”,請點(diǎn)擊鏈接:http://article.pcauto.com.cn
    如果網(wǎng)友需要將本文轉(zhuǎn)載到論壇,請點(diǎn)擊下方按鈕復(fù)制代碼,再在“PCauto論壇”發(fā)貼框里粘貼即可,該方法也同樣適用于其它大部分論壇,非常方便!
每日讀圖
揭秘:比基尼車模的幕后生活
揭秘:比基尼車模的幕后生
皮肉牽動(dòng)4噸重汽車
皮肉牽動(dòng)4噸重汽車
全裸車模與車共舞
全裸車模與車共舞
超辣性感車模
超辣性感車模
明銳1.6升8月28日上市
明銳1.6升8月28日上市
M3低價(jià)沖擊國內(nèi)跑車市場?
M3低價(jià)沖擊國內(nèi)跑車市場?
黑色系奔馳SLK 55 AMG
黑色系奔馳SLK 55 AMG
蓮花Exige Sport240超跑
蓮花Exige Sport240超跑