熱線電話:021-66832988 67668392

基于ARM的DCS專用工業鍵盤研究與實現(二)

來源:上儀銷售網 編輯:上儀銷售網 發布時間:2013-07-14 文章點擊數:154

工業控制現場中的分散控制系統(DCS)需要特定 的DCS操作員鍵盤對其進行控制。本文研究基于 ARM微處理器的DCS專用工業鍵盤,設計了具有 USB2.0通信協議的標準HID類鍵盤接口程序以及具有標準PC鍵盤和DCS功能擴展鍵盤功能的鍵盤任 務處理程序,有效實現了該專用鍵盤。實驗結果表明, 設計合理、系統穩定與可靠,能滿足工業現場環境的需要。

引言

隨著工業控制現場中分散控制系統(DCS)的發 展,需要特定的DCS操作員鍵盤對系統進行控制。該 鍵盤使操作員能對系統的操作更加直觀,操作方法更 加簡捷,以降低對操作員的操作技能要求,進一步減 少誤操作的可能,從而提高整個生產線的自動化能力。 DCS操作員鍵盤正是基于這個目的產生的。該鍵盤在 功能上除了兼容標準PC鍵盤的功能外,增加了 DCS 功能擴展區和用戶自定義擴展區。在該鍵盤按鍵殼體 上印刷按鍵功能,如邏輯開、邏輯關、手動、自動、報警、 輸出步長等等,一旦有按鍵動作,鍵盤立刻響應并將按 鍵編碼發給主機,主機根據接收到的按鍵編碼調用相 應的子函數來完成響應功能。同時該鍵盤支持目前廣 泛流行的USB接口的標準PC鍵盤通訊協議。USB協 議專門為人機交互設備提供了接口描述,即HID設備 類。用戶可以按照HID設備類的協議設計通用鍵盤, 也可以根據自己的需要設計特殊的鍵盤,以滿足不同 的應用場合。USB通信協議的設備一旦接入主機USB 接口 ,主機調用底層驅動自動完成USB設備的枚舉, 實現方便快捷的即插即用。另外該鍵盤可記掛標準 PC鍵盤,即便在DCS操作員鍵盤故障或在高級工程 師操作管理模式下,可使用標準PC鍵盤做進一步的 操作。在基本功能上與標準PC鍵盤保持一致,可相互 控制Capslock狀態。本文描述的正是這樣一個基于 ARM的DCS專用工業鍵盤的研究與實現。

2.1 USB任務處理設計

USB鍵盤是HID類設備的一種,遵循著USB設 備啟動過程。即每次設備接入總線,先進入設備檢測 狀態,總線對設備進行總線復位。其次是設備枚舉過 程,在這里USB設備將被枚舉為標準的HID類鍵 盤。主機通過默認端點0發送SETUP包,得到設備 描述符,然后給設備分配新的地址,分配成功后, 主機將通過新的設備地址向設備依次發送標準USB 請求來獲取設備的配置信息,即獲得設備描述符、配 置描述符、接口描述符、端點描述符、HID描述符 和報表描述符。通過設備的這些描述符,主機就知 道了設備的詳細信息,并根據設備的配置情況對設備 的端點進行操作。這些操作包括初始化端點數目,分 配各端點所需使用的Packet Buffer;初始化所使用的 端點,配置端點的傳輸類型、傳輸方向、Packet Buffer地址和初始狀態。在需要發送數據或接收數據 的時候,使能端點;并在該端點的中斷回調函數中, 處理數據,如果需要則使能下一次傳輸。以上便是實 現USB鍵盤設備的步驟。

USB設備描述符如下:

在實際設計與開發中,由于STM32提供豐富的 USB標準函數庫,充分使用該函數庫會加快開發進 程。下面是一段對IN端點的初始化和使能,以及 IN傳輸的關鍵代碼:

2.2 鍵盤任務處理設計

鍵盤任務處理函數keyboard ()流程圖如圖3所 示。先對按鍵進行掃描,若無按鍵按下,則每隔 10ms掃描一次。若有按鍵按下,記錄下按鍵所處鍵 盤的位置代碼,轉向消抖處理。所按下按鍵若通過 消抖處理,則確認其位置代碼,進入到按鍵處理階 段,將位置代碼轉換為按鍵HID碼并發送。否則釋 放其位置代碼,轉到按鍵掃描處重新掃描。發送完 其HID碼的按鍵再進行消抖處理看釋放否。若按鍵 未釋放則繼續等待,若已釋放則轉向按鍵掃描處重新掃描。

在具體設計中引入狀態轉移分析法和定時器中 斷。將按鍵的所有狀態分為4種。狀態0為按鍵掃 描,狀態1為按鍵消抖處理并確認,狀態2為按鍵鍵 碼轉換并發送,狀態3為等待按鍵釋放狀態。以上的 函數流程實際上是在這4個狀態中轉移, 如圖 4所 示。設置一個狀態標志位key_state來表示按鍵所處 的不同狀態,采用多分支結‘ swich-case,可以很方便的實現。

而定時器中斷是使MCU的TIM2定時器產生 10ms的定時中斷。主程序每隔10ms中斷調用key?board ()函數一次。當無按鍵按下時,key_state二0, 執行case0,即實現了每10ms執行一次鍵盤掃描。若 有按鍵按下,則定位其按下按鍵的位置代碼,并使 key_state二1。當 10ms 后再次調用 keyboard ()函數, 這時key_state二1而進入case1,在case1中對前面所 定位的按鍵位置再次進行確認,若還在,則再次確定 其位置代碼,并使key_state二2。如此時按鍵已經釋 放,說明為假按鍵,則使key_state二0,返回按鍵掃 描。這里巧妙利用了兩次定時'斷的10ms間隔實現 按鍵的消抖處理。若key_state二2, 10ms后再次調用 keyboard (函數時則進入case2,這里將已確認的按 鍵位置代碼轉化為按鍵代碼以及最終的HID碼,建 立鍵盤報表并發送給主機,然后使key_state二!。當下 一個10ms, key_state二!則進入csae!,等待按鍵釋放 狀態,此時再次掃描前面已確定按鍵的位置,若按鍵 已釋放,則key_state 二0,下一個10ms來臨則進入 case0重新按鍵掃描;否則仍然key_state 二!,繼續等 待釋放。這里也巧妙的利用這10ms進行按鍵釋放時 的去抖動處理。

另外在多鍵(含雙鍵)、特殊功能鍵和復合鍵的 實現中,該軟件也設計了比較好的實現方法。譬如多 鍵,設置內部緩存器,在逐行掃描中將每個按下按鍵 在矩陣鍵盤中的位置代碼存入其中。之后的消抖處理 等操作的對象便是緩存器中的按鍵位置代碼值。系統 最多處理的普通鍵數為6個,超過則為溢出。對于特 殊功能鍵,其形式上是單鍵,實際實現的是多鍵的功 能。只要將單鍵在發送前轉換成需要的多鍵HID碼, 即可方便實現。對于復合鍵,理論上是兩個以上按鍵 同時按下所完成的功能,實際情況很難實現真正的 “同時按下”,它們的時間差別可能長達50ms。譬如 對引導鍵SHIFT鍵的設計,需設置專門標志位 Shiftkeyjlag,有 SHIFT 按下則 Shiftkey_£lag二1,否則 為0。在第一次檢測出SHIFT單按鍵時,改變狀態 標志位為1。隨后的按鍵掃描中,若再無其他按鍵按 下,則key_state 二0,直到有其他按鍵按下,key_state 二1。這在軟件中實際上是對狀態0的細化。同理, 在各個狀態中,因為該鍵的特殊性,也有相應的細化 過程。

從以上分析可見,這樣的軟件設計不僅結構清 晰,代碼簡潔,實現便捷,而且使得當無按鍵按下, 鍵盤每10ms掃描一次,當有確定非復合按鍵按下 (即通過消抖處理",則鍵盤響應速度在30ms以內, 如此的響應速度大大提高了鍵盤的靈敏度。

3結束語

DCS系統是目前工業控制領域的核心系統,其 專用鍵盤是提高整個生產線自動化能力的關鍵一環。 該專用鍵盤的設計避免了現有鍵盤電路特殊按鍵實現 復雜、軟硬件成本高的情況,而是研究開發了基于 ARM的DCS專用工業鍵盤,實現了對多達86個按 鍵的控制。采用STM32芯片及有效率的軟件開發大 大提高了產品開發的速度。經過實驗結果與實際應用 證明,該專用鍵盤易用性、可靠性達到了工業要求, 并產生很大的經濟效益。


凡本網注明“來源:上儀銷售網” 的所有文章,
轉載請必須注明來源于上海勇懿儀器儀表有限公司,違者必究。
分享到:

首頁網站簡介儀表產品生產廠商自儀新聞儀表知識行業標準單位換算加入收藏

公司地址:上海市芷江西路788號  郵編:200070  EMAIL:[email protected]  聯系電話:021-56521297  傳真:021-33275179
[email protected]  www.ezocax.live  上海勇懿儀器儀表有限公司.版權所有  滬ICP備10202251號
 
大明帝国登陆 朋友圈卖手表能赚钱吗 彩票系统彩票软件开发 足球指数变化最快的网站 双色球复式玩法 福彩3d预测号码 广西快3福彩基本走势图 老快3历史开奖360彩票 申城棋牌官网 幸运pc蛋蛋走势图 股票涨跌幅度计算公式 360老快3遗漏数据查询 山东十一选五遗漏号码 美国股票指数有哪些 聪明组六组合 股票融资平台可靠吗 中国福利彩票走势图