嵌入式智能人機界面與PLC的通訊
2003/11/24 0:00:00
摘要:介紹以嵌入式智能工業控制人機界面為硬件平臺,以嵌入式操作系統WinCE.net為應用程序載體,在其上開發的一套嵌入式監控系統,給出了監控系統的實現架構,通訊原理,以及人機交互界面的實現方法。 關鍵詞:嵌入式,人機界面,WinCE.net,監控系統,通訊 Abstract:This paper introduces a set of supervisory control and data acquisition,SCADA system .In system, hardware is embedded industrial HMI, operation system is WinCE.net.This paper describes the primary frame,commucication priciple,and some programme tips. Key words:Embedded;HMI;WinCE.net;SCADA ;Communication 1 引言 近年來,“嵌入式”一詞越來越多的被人們提及,嵌入式產品被應用到各行各業。與嵌入式相關的技術如嵌入式產品,嵌入式系統的研究等也被列為“十五”國家發展的重點方向。 嵌入式系統 (Embedded System)被定義為:以應用為中心,以計算機技術為基礎,軟件硬件可裁剪,適應對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。 隨著工業自動化的發展,基于PLC,單片機等設備的自動化系統,自動化設備越來越普及,幾乎遍布所有自動化領域,與之相應的人機交互系統也應運而生,并得到同步發展。基于嵌入式技術的工業人機界面是人機交互系統中一顆耀眼的明星。高可靠,長壽命,體積小,高性能,多線程,多任務,強實時等特點使嵌入式工業人機界面越來越受到自動化系統集成商,自動化設備制造商的青睞。它能夠理想,生動地顯示PLC,單片機等工業設備上的數據信息,功能強大,使用方便。它作為PLC等控制設備的上端設備在用戶和機器之間架設了一條橋梁。該產品目前廣泛應用在工業自動化系統,醫療,金融等行業的自動化設備。 隨著越來越多的工程項目采用了嵌入式人機界面,相應的,用戶對與嵌入式硬件配套使用的監控系統(Supervisory Control and Data Acquisition,SCADA)等應用軟件的需求也在增加。這也正是本文所要討論的問題。這里講的嵌入式監控系統,其硬件為嵌入式智能人機界面;其軟件為嵌入式操作系統,另加自己開發的應用程序。本文后面主要介紹這個監控應用程序,重點介紹應用程序中通訊部分的實現原理。 當今,已發展有多種嵌入式操作系統,如Linux, VxWorks,WinCE.net等,完全可在其上開發出圖文并茂、界面友好的應用,以滿足監控系統的種種要求。只是由于嵌入式技術相對是一門新興的領先技術,涉足的人相對還比較少,所以這樣的應用目前還比較少。本文介紹的嵌入式監控系統算是一個實例吧。 2 系統組成 我們所開發的這套嵌入式監控系統,上位機是沈陽鷺島資訊科技有限公司開發的嵌入式智能工業控制人機界面(以下簡稱人機界面)。其嵌入式工業控制器是以SA1110 (Strong Arm 1110)為核心處理器,包括網絡通訊,數據通信,大尺寸觸摸屏及液晶顯示的硬件平臺,在其上運行 WinCE操作系統。提供20個通用IO點供用戶使用,物理層支持ProfiBus等現場總線,支持16位真彩TFT LCD顯示,有64M SDRAM內存,32M FLASH閃存,據有USB接口,10/100M Ethernet網絡通訊接口,以及串口,并口,VGA口等通用接口。 下位機用日本OMRON公司的PLC,或SIMENS PLC,或施耐德NEZA PLC,或日本三菱公司的 PLC,當然溫控表,單片機等工業現場控制設備也可以。 控制對象(比如鍋爐等)的工作由上述控制設備(各種PLC等)控制;而控制對象的狀態則用人機界面及在其上開發的應用程序進行監控。 人機界面的操作系統采用了微軟的WinCE.net。WinCE.net是為各種嵌入式系統和產品設計的一種緊湊,高效,可伸縮的操作系統(OS),主要面向各種嵌入式系統和產品。其多線程、多任務、完全搶占式的特點是專門針對資源有限而設計的。OEM開發商可根據自己硬件組成的特點對WinCE.net進行選擇裁剪,從而配置出穩定高效并且是特有的WinCE.net操作系統和相應的SDK開發包。在應用上,WinCE.net支持超過1000個公共Microsoft Win32 API和幾種附加的編程接口,用戶可利用它們來開發應用程序。另外,微軟為開發WinCE.net應用程序的人員提供了與Visual C++類似、支持MFC的Microsoft eMbedded Visual C++語言。下面我們將介紹一下開發過程的細節問題。 3. 軟件流程 應用程序開發是在個人計算機上進行的。個人計算機的操作系統為WINDOWS 2000。應用程序的開發平臺是Microsoft eMbedded Visual C++集成開發環境。 在應用程序開發時,還可以利用微軟提供的測試模擬器(Emulator)。有了它可做到,即使沒有人機界面,也可進行程序調試。 開發最終生成的可執行文件,可使用Microsoft eMbedded Visual c++開發環境提供的下載功能,通過串口或局域網,下載給人機界面。 工作時,PLC等工控設備運行它的控制程序,而人機界面則運行這個下載的可執行文件。兩者通過串口進行通訊,但通訊的主動方為人機界面。人機界面依監控要求,向PLC等發送通訊命令,PLC則作相應的應答。 人機界面從PLC上收到應答的數據后,在觸摸屏上,以圖表、動畫的界面顯現出來,供用戶觀察。還可把這些數據進行存貯、打印,甚至于向ERP等管理信息系統傳送。 如須對PLC或控制對象進行干預,也可在人機界面的觸摸屏上,通過觸摸鍵或觸摸鼠標,向PLC發送命令或數據,以實現相應的控制。 

4 畫面構成 一般的工程監控畫面有:文字顯示,生產工藝流程顯示(包括動畫,柱狀圖顯示等),報警,人員操作,趨勢曲線等等。我們的系統架構是做一個基于主對話框的程序。再將這些不同的畫面用子對話框表現出來。 主對話框負責初始化串口,打開串口,啟動讀串口線程等;而各子對話框則定時或根據需要向串口發送各種命令,通過主對話框的線程讀回命令的應答,再在子對話框中以一定的形式提供給用戶,以供監控現場作業。這其中主要的技術就是串口通訊。下面我們重點講述通訊的實現。 5.通訊實現 人機界面提供的串口是符合通用標準的。WinCE.net下的串口通訊與Windows下的串口通訊原理相同。都是應用程序不直接控制硬件,而是通過操作系統提供的設備驅動程序,來進行數據傳遞。 WinCE.net 是Win 32編程。串口在Win 32中是作為文件來進行處理的,不是直接對端口進行操作。對于串行通信,Win 32 提供了相應的文件I/O函數與通信函數。 但是也要注意WinCE.net所能支持的API函數只是Window API函數的子集。Windows有的,WinCE.net下不一定能使用。同時,WinCE.net字符集類似于Windows NT而不同于Windows 9x,它是基于Unicode的。這也是開發程序過程中從WINDOWS轉到WinCE.net的程序員遇到問題最多的地方。另外在Windows下常用的一些通訊控件如MSComm等在WinCE.net下就不能正確使用了。 本監控系統采用API函數實現串口通訊。以下分幾個問題介紹串口通訊及整個系統的實現。 5.1 打開串口 首先是打開串口,這是串口通訊的第一步。其代碼為: BOOL CMainDlg::OnInitDialog() { 。。。。。。 m_hComm=CreateFile(_T("COM1:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0); //打開串口的操作,需要注意 WinCE.net系統與Windows系統表達方式的細微不同,WinCE.net需要在串口后加上冒號; SetupComm(m_hComm,1024,1024); //初始化串口的輸入,輸出緩沖區參數; SetCommState(m_hComm,&m_dcb) ; //配置串口參數;m_dcb為設置好的參數結構; 。。。。。。 SetCommTimeouts(m_hComm,&timeout); //設置通訊超時時間參數; PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR); //清空輸入,輸出緩沖區的字符,為開始接受數據,進入監控狀態做好準備; 。。。。。。 } 5.2讀串口線程 其次是啟動讀串口線程,它讓讀串口程序不停地在后臺運行,而不影響前臺程序的工作。與此有關的代碼為: BOOL CMainDlg::OnInitDialog() { 。。。。。。 ReadFile(m_hComm,inBuffer+iBufLen,INBUFFERLEN-iBufLen,&dwBytes,NULL); //從串口讀數據; iBufLen+=dwBytes; for(int i=0;i\r) //以連接的設備為OMRON PLC為例,其通訊協議規定應答應當以\r結尾; inBuffer[i]=0; //字符串結束標志; switch(m_iDlgType) // m_iDlgType為代表不同對話框的標志變量; { case 子對話框1標志: 子對話框1.ProcData(inBuffer,i); //不同對話框中對命令應答的處理,ProcData為處理函數名; break; 。。。。。。 } 。。。。。。 } 5.3各子對話框發送寫命令 各個子對話框根據需要,采用定時器的形式,定時向PLC發送命令。以OMRON PLC為例,在發送命令時,根據OMRON PLC的通訊協議,還需對發送的命令字符串加校驗碼。這些程序代碼為: void 子對話框1類::OnTimer(UINT nIDEvent) { 。。。。。。 strcpy(m_szCmd,"@00RR00000001"); //OMRON PLC的命令字符串; GenXor(m_szCmd,result); //進行校驗碼計算,調用 GenXor 函數; sprintf(szTailer,"%02X*\r",result); //OMRON PLC通訊協議以“*\r”結尾; strcat(m_szCmd,szTailer); //形成完整的通訊協議命令字符串; WriteFile(m_hComm, m


提交
查看更多評論
其他資訊
PLC一體機之EK溫度修正使用技巧
S7-300CPU存儲器介紹及存儲卡使用
0.05級超高精度互感器
DC-DC轉換器(電源模塊)應用指南——外接濾波電容選配
施羅德最小流量閥的應用范圍及優點

投訴建議