999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多線程的人機交互式控制系統軟件的設計

2014-04-29 21:50:41蘇娟郝欣偉李志超
文化產業 2014年6期

蘇娟 郝欣偉 李志超

摘要:基于多線程和模塊化的設計思想,以abview為開發平臺,實現了人機交互式控制系統軟件的設計開發。本方案的設計難點是基于Labview開發平臺的人機交互式控制軟件的架構設計以及高實時性和可靠性的多線程協同工作模式的實現。本方案具有人機交互界面友好、開發周期短、穩定可靠、控制準確度高等特點,極大地提高了控制系統的開發效率和自動化程度。

關鍵詞:多線程;人機交互式控制;Labview;

中圖分類號:A06-029文獻標識碼:A文章編號:1674-3520(2014)-06-00259-021、前言

人機交互式控制模式是指操作人員通過終端設備輸入信息和操作命令,系統接到后立即處理,并通過終端設備顯示處理結果,操作人員根據處理結果進一步輸入信息和操作命令。系統與操作人員以人機對話的方式一問一答,直至最終獲得理想的結果,這種方式與傳統的非交互式處理相比,具有靈活、直觀、便于控制的優點,在工業控制領域越來越廣泛地采用。

而傳統的基于Keil平臺狀態機的開發模式和基于Vxworks平臺多任務的開發模式都不能很好地滿足人交互式控制系統軟件的開發要求。Labview是一種基于圖形化數據流的編程語言,為人機交互式控制軟件的設計開發提供了嶄新的平臺。它使用圖形語言(如各種圖標、圖形符號、連線等)以框圖的形式編寫程序,在提供強大功能的同時保證了系統的靈活性。

2、軟件結構設計

2.1Labview多線程運行機制介紹

Labview的運行機制是一種協作式的多線程并行運行機制,當同等優先級線程被執行時,時間片循環排序為每個線程分配了同等的處理器時間。在一個線程用完了可用的時間片,操作系統自動地停止處理該線程,開始執行隊列中下一個線程。這種混合了搶占式和時間片輪轉式的任務排序能夠保證多任務的并行實時處理。

基于Labview多線程并行執行,分割時間片占用CPU資源的運行機制,根據軟件需求,將該軟件分為主程序MAIN.VI和它所調用的各子程序組成。主程序采用面向數據流的結構化設計思路,分為若干個線程并行執行,每個線程由一個while循環構成。不同線程的優先級不同,通過在循環空閑時段調用“等待到下一個整數倍毫秒”函數和隊列的使用來調節CPU資源占有線程時間和數據的讀寫速度,從而達到不同優先級線程并行執行的效果。

2.2線程間通訊方式

其他線程之間的數據交互通過隊列、局部變量及VI服務器引用進行。通過局部變量進行數據交互多用于數據更新頻率低,數據結構簡單的控件的值屬性改變,主要包括CAN總線初始化標志位、流程參數(標量)等;為了避免內存的消耗和數據競爭,保證數據不丟失,指令響應的及時準確,采用隊列來進行不同線程之間的數據傳遞;而人機交互界面上控件的動畫實時顯示則采用VI服務器引用來與運動控制子VI進行信息交互。

3、CAN協議層的實現

CAN總線協議層基于已在各型號中廣泛使用的雙通道切換通信原理,基于Labview語言,總線接收采用查詢方式實現,開啟獨立2個線程,由當前工作通道來決定哪個線程處于工作狀態,而備用通道工作線程處于空閑狀態。當數據接收高峰時段,相鄰兩次接收時間間隔小于1ms,當數據接收空閑時段,相鄰兩次查詢延時設置為10ms,讓出CPU資源,保證了其他線程執行的實時性。

CAN總線發送采用FIFO隊列模式,當不同的線程在相臨時間間隔內均需發送數據時,僅需將所要發送的數據放入發送隊列。而在數據發送線程中,以查詢方式讀取隊列緩沖區內的數據,當發送函數返回值為1時,代表本次發送成功,此時才從隊列中取出下一個待發送數據;若發送失敗,則通過備用通道向總線各節點發送切換幀,告之各節點切換CAN工作通道,并將未發送成功數據重新發送。當總線切換3次均為發送成功,則在人機交互界面彈出報警對話框,告之操作者總線通訊失敗。

如應用局部變量實現線程間數據交互,如果查詢速度大于局部變量的速度,則會多次重復讀取同一數據;如果查詢速度小于局部變量的改變速度,則會導致數據遺漏。

4、過程控制的實現

控制功能的實現是本設計的重點和難點。怎樣實現控制流程執行時在各個狀態中靈活切換并能及時有效響應“停止”按鍵,不出現死循環或響應不及時現象?通過大量實驗,最終確定使用“生產者——消費者”+“狀態機”的設計模式來實現人機指令觸發響應和控制狀態的靈活切換。

4.1生產者——消費者設計

“生產者——消費者”設計模式是事件處理器和隊列消息處理器相結合構成的復合設計模式。生產者是指令的提供方,產生指令,并將指令放入隊列,由事件結構+while循環組成;消費者是指令的消費方,依次從隊列中取出指令,由while循環+條件結構處理。生產者和消費者之間存在一個指令緩沖區,通過隊列來實現。例如當“推進”指令按下,“推進”指令入隊列,在消費者循環中指令出隊列并執行相應流程,當推進過程中“停止”按下,則清空隊列,并執行“停止”入隊列最前端,這樣在消費者循環中就能及時切換并執行停止流程。

具體程序結構框圖如圖1所示。

5.1狀態機設計

在消費者循環中,采用“狀態機”的設計模式來實現某個事件中各個狀態的切換,主要采用“while循環+條件分支”結構,并利用移位寄存器來傳遞狀態。在程序執行完任一狀態時,對狀態變量賦值并存儲于移位寄存器中,實現將下一個狀態傳遞到下一次循環判斷中。下一次執行while循環進行狀態判斷時,通過條件結構對移位寄存器中存儲的狀態進行判斷,來執行相應的狀態。這樣,就實現了動態實時地改變程序執行順序,以適應多種控制情況的目的。具體結構圖如圖2所示。

當控制過程復雜時,在消費者循環中需要運行多層狀態機,即每一個狀態中又包含若干個子狀態。這樣,在程序實現時就需要調用多層條件結構,每一層條件結構都需要有對應的移位寄存器用來判斷本次循環條件執行的分支。如圖3所示。這樣,就造成了程序層次過多,可讀性維護性差的弊端。因此,我們可分析將每一層狀態機都封裝為一個函數功能模塊,而此VI的輸入輸出參數設為本次執行的狀態和下一次要執行的狀態。

以對中控制為例,對中的控制過程復雜,存在多個控制狀態,狀態切換圖如圖4所示。如對中控制過程分為“左右粗對中”、“上下粗對中”、“左右平行”、“左右對中”、“上下平行”、“上下對中”6個順序執行階段,每個控制階段中多次對油缸進行控制,油缸有上下左右四個運動方向。油缸控制存在11種狀態切換,所以將油缸控制編寫為controlMotor.vi模塊,此VI的輸入輸出參數為本次油缸執行狀態、和下次油缸執行狀態。每次調用controlMotor.vi時只執行一種狀態,通過外層循環的移位寄存器改變狀態值來實現狀態切換,這樣簡化了程序結構,也避免了與主VI無法實時進行數據交互的問題。程序框圖如圖5所示。

10、仿真及桌面聯調

各項控制功能調試:水平裝填車電控系統在實際大型試驗應用中,能夠正確執行自動對中、抓彈、放彈、裝填、退彈等控制功能,能夠實時響應停止操作,并能夠正確恢復繼續執行,各故障狀態能夠及時準確報警。

CAN總線通信功能及性能:總線上各節點給控制單元發送數據,當總線負載率為100%時,CAN數據接收線程仍能夠正常接收數據,未出現丟數現象;水平裝填車電控系統信息傳輸的正確性、協調性,即水平裝填車電控系統內部各設備間軟件接口正確,所有指令、數據收發正確。在運行期間CPU為43%內存使用為256M,遠遠低于系統總內存。在執行控制流程或用戶對人機交互界面進行操作時,數據處理能夠正常收發,未出現丟數死機等異常現象。

11、程序設計時應注意的問題

11.1多線程的同步執行

多線程的同步執行,應合理分配CPU資源,優先級高的線程。如總線數據接收線程,應避免使用延時函數,以保證數據接收的及時性。總線數據存儲線程應根據數據接收的最小周期來設定循環的周期,做到不占用過多的CPU資源,保證其他線程的執行,又不會出現數據存儲遺漏。

11.2內存泄漏的避免

程序中打開了某些資源(文件、引用等),在程序退出之前,不論是否有異常出現,都一定要把資源關閉。若打開的資源不關閉,則一直駐留在內存中。但程序關閉后再無法訪問這些資源,這就造成了內存泄漏。不論在過程中是否有錯,打開的文件都應當在程序結束前被關閉。

11.3狀態機的使用

狀態機的應用重點是移位寄存器的靈活使用,移位寄存器會動態地將狀態變量存在一個內置的緩沖區中,不能通過局部變量或全局變量在其他線程中賦值來更改狀態執行步驟。

11.4文件存儲過大問題

用TDMS文件將總線數據存儲在硬盤中,存儲數據線程的執行周期如果過小,會造成存儲數據文件過大,存儲數據索引文件過大的問題,會大大影響硬盤存儲數據效率。所以,存儲數據線程的周期要根據數據產生周期而定,當數據以1幀/ms的速率進行入隊列操作時,數據存儲的周期要大于等于1s。

12結束語

本文的創新點在于多線程協同工作的設計思想,以及處理人機交互式控制的編程框架。以Labview2011為集成開發環境,以水平裝填車控制系統軟件為例,對多功能控制系統進行了設計。實驗表明,各功能模塊運行良好,對外界觸發響應及時,線程間數據交互準確無誤。程序中使用動態設計,程序方便修改,具有較大的靈活性。很好地保證了系統的可視化操作和應用實施的通用性。

參考文獻:

[1]Labview寶典/陳樹學,劉萱編著.—北京:電子工業出版社,2011.3

[2]我和Labview:一個NI工程師的十年編程經驗/阮奇楨編著.—北京:北京航空航天大學出版社,2009.9

主站蜘蛛池模板: 久久久亚洲色| 国产精品视频999| 亚洲AⅤ永久无码精品毛片| 国产午夜一级淫片| 国产va免费精品观看| 国产一区二区三区免费观看| 久久无码av三级| 中文字幕啪啪| 欧美亚洲日韩中文| 亚洲欧美成人网| 免费无码AV片在线观看国产| 无遮挡国产高潮视频免费观看| 久久免费视频播放| 色婷婷亚洲综合五月| 欧美成人一区午夜福利在线| 成人福利在线观看| 精品免费在线视频| 国产香蕉在线| 久青草网站| 全部毛片免费看| 三级国产在线观看| 亚洲国产精品不卡在线| 欧美日韩国产在线观看一区二区三区| 久久久久亚洲av成人网人人软件| 婷婷99视频精品全部在线观看| 人妻中文字幕无码久久一区| 日本午夜视频在线观看| 日韩午夜福利在线观看| 国产精品短篇二区| 永久成人无码激情视频免费| 一区二区三区四区在线| 四虎AV麻豆| 中日无码在线观看| 亚洲综合婷婷激情| 国产99精品视频| 理论片一区| 尤物国产在线| 亚洲三级色| 亚洲高清资源| 激情综合婷婷丁香五月尤物 | 一级毛片免费不卡在线| 伊人查蕉在线观看国产精品| 日韩高清欧美| 亚洲伊人久久精品影院| 一级片免费网站| 亚洲天堂视频网| 国产精女同一区二区三区久| 国产亚洲欧美日韩在线一区| av午夜福利一片免费看| 亚洲综合色区在线播放2019| 欧美特黄一级大黄录像| 欧美中文字幕在线二区| 好紧好深好大乳无码中文字幕| 无码av免费不卡在线观看| 国产精品亚洲欧美日韩久久| 在线欧美日韩国产| 午夜福利在线观看入口| 欧美在线视频a| 欧美成在线视频| 中文字幕在线观看日本| 真实国产乱子伦视频| 日本不卡视频在线| 国产91在线|中文| 青青操国产视频| 人禽伦免费交视频网页播放| 亚洲毛片在线看| 激情無極限的亚洲一区免费| 欧美精品一二三区| 成人免费午夜视频| 免费一级毛片在线播放傲雪网| 亚洲中文字幕手机在线第一页| 国产亚洲欧美日韩在线一区| 国产激情无码一区二区APP | 午夜在线不卡| 性69交片免费看| 亚洲色无码专线精品观看| 亚洲av色吊丝无码| 精品久久久久久成人AV| 亚洲中文精品久久久久久不卡| 国产亚洲视频播放9000| 婷婷六月综合| 久99久热只有精品国产15|