搜索關(guān)鍵詞:熱電偶,熱電阻,雙金屬溫度計(jì),壓力表,壓力變送器,磁翻板液位計(jì)
工業(yè)控制現(xiàn)場(chǎng)中的分散控制系統(tǒng)(DCS)需要特定 的DCS操作員鍵盤(pán)對(duì)其進(jìn)行控制。本文研究基于 ARM微處理器的DCS工業(yè)鍵盤(pán),設(shè)計(jì)了具有 USB2.0通信協(xié)議的標(biāo)準(zhǔn)HID類鍵盤(pán)接口程序以及具有標(biāo)準(zhǔn)PC鍵盤(pán)和DCS功能擴(kuò)展鍵盤(pán)功能的鍵盤(pán)任 務(wù)處理程序,有效實(shí)現(xiàn)了該鍵盤(pán)。實(shí)驗(yàn)結(jié)果表明, 設(shè)計(jì)合理、系統(tǒng)穩(wěn)定與可靠,能滿足工業(yè)現(xiàn)場(chǎng)環(huán)境的需要。
引言
隨著工業(yè)控制現(xiàn)場(chǎng)中分散控制系統(tǒng)(DCS)的發(fā) 展,需要特定的DCS操作員鍵盤(pán)對(duì)系統(tǒng)進(jìn)行控制。該 鍵盤(pán)使操作員能對(duì)系統(tǒng)的操作更加直觀,操作方法更 加簡(jiǎn)捷,以降低對(duì)操作員的操作技能要求,進(jìn)一步減 少誤操作的可能,從而提高整個(gè)生產(chǎn)線的自動(dòng)化能力。 DCS操作員鍵盤(pán)正是基于這個(gè)目的產(chǎn)生的。該鍵盤(pán)在 功能上除了兼容標(biāo)準(zhǔn)PC鍵盤(pán)的功能外,增加了 DCS 功能擴(kuò)展區(qū)和用戶自定義擴(kuò)展區(qū)。在該鍵盤(pán)按鍵殼體 上印刷按鍵功能,如邏輯開(kāi)、邏輯關(guān)、手動(dòng)、自動(dòng)、報(bào)警、 輸出步長(zhǎng)等等,一旦有按鍵動(dòng)作,鍵盤(pán)立刻響應(yīng)并將按 鍵編碼發(fā)給主機(jī),主機(jī)根據(jù)接收到的按鍵編碼調(diào)用相 應(yīng)的子函數(shù)來(lái)完成響應(yīng)功能。同時(shí)該鍵盤(pán)支持目前廣 泛流行的USB接口的標(biāo)準(zhǔn)PC鍵盤(pán)通訊協(xié)議。USB協(xié) 議專門為人機(jī)交互設(shè)備提供了接口描述,即HID設(shè)備 類。用戶可以按照HID設(shè)備類的協(xié)議設(shè)計(jì)通用鍵盤(pán), 也可以根據(jù)自己的需要設(shè)計(jì)特殊的鍵盤(pán),以滿足不同 的應(yīng)用場(chǎng)合。USB通信協(xié)議的設(shè)備一旦接入主機(jī)USB 接口 ,主機(jī)調(diào)用底層驅(qū)動(dòng)自動(dòng)完成USB設(shè)備的枚舉, 實(shí)現(xiàn)方便快捷的即插即用。另外該鍵盤(pán)可記掛標(biāo)準(zhǔn) PC鍵盤(pán),即便在DCS操作員鍵盤(pán)故障或在工程 師操作管理模式下,可使用標(biāo)準(zhǔn)PC鍵盤(pán)做進(jìn)一步的 操作。在基本功能上與標(biāo)準(zhǔn)PC鍵盤(pán)保持一致,可相互 控制Capslock狀態(tài)。本文描述的正是這樣一個(gè)基于 ARM的DCS工業(yè)鍵盤(pán)的研究與實(shí)現(xiàn)。
2.1USB任務(wù)處理設(shè)計(jì)
USB鍵盤(pán)是HID類設(shè)備的一種,遵循著USB設(shè) 備啟動(dòng)過(guò)程。即每次設(shè)備接入總線,*入設(shè)備檢測(cè) 狀態(tài),總線對(duì)設(shè)備進(jìn)行總線復(fù)位。其次是設(shè)備枚舉過(guò) 程,在這里USB設(shè)備將被枚舉為標(biāo)準(zhǔn)的HID類鍵 盤(pán)。主機(jī)通過(guò)默認(rèn)端點(diǎn)0發(fā)送SETUP包,得到設(shè)備 描述符,然后給設(shè)備分配新的地址,分配成功后, 主機(jī)將通過(guò)新的設(shè)備地址向設(shè)備依次發(fā)送標(biāo)準(zhǔn)USB 請(qǐng)求來(lái)獲取設(shè)備的配置信息,即獲得設(shè)備描述符、配 置描述符、接口描述符、端點(diǎn)描述符、HID描述符 和報(bào)表描述符。通過(guò)設(shè)備的這些描述符,主機(jī)就知 道了設(shè)備的詳細(xì)信息,并根據(jù)設(shè)備的配置情況對(duì)設(shè)備 的端點(diǎn)進(jìn)行操作。這些操作包括初始化端點(diǎn)數(shù)目,分 配各端點(diǎn)所需使用的Packet Buffer;初始化所使用的 端點(diǎn),配置端點(diǎn)的傳輸類型、傳輸方向、Packet Buffer地址和初始狀態(tài)。在需要發(fā)送數(shù)據(jù)或接收數(shù)據(jù) 的時(shí)候,使能端點(diǎn);并在該端點(diǎn)的中斷回調(diào)函數(shù)中, 處理數(shù)據(jù),如果需要?jiǎng)t使能下一次傳輸。以上便是實(shí) 現(xiàn)USB鍵盤(pán)設(shè)備的步驟。
USB設(shè)備描述符如下:
在實(shí)際設(shè)計(jì)與開(kāi)發(fā)中,由于STM32提供豐富的 USB標(biāo)準(zhǔn)函數(shù)庫(kù),充分使用該函數(shù)庫(kù)會(huì)加快開(kāi)發(fā)進(jìn) 程。下面是一段對(duì)IN端點(diǎn)的初始化和使能,以及 IN傳輸?shù)年P(guān)鍵代碼:
2.2鍵盤(pán)任務(wù)處理設(shè)計(jì)
鍵盤(pán)任務(wù)處理函數(shù)keyboard ()流程圖如圖3所 示。先對(duì)按鍵進(jìn)行掃描,若無(wú)按鍵按下,則每隔 10ms掃描一次。若有按鍵按下,記錄下按鍵所處鍵 盤(pán)的位置代碼,轉(zhuǎn)向消抖處理。所按下按鍵若通過(guò) 消抖處理,則確認(rèn)其位置代碼,進(jìn)入到按鍵處理階 段,將位置代碼轉(zhuǎn)換為按鍵HID碼并發(fā)送。否則釋 放其位置代碼,轉(zhuǎn)到按鍵掃描處重新掃描。發(fā)送完 其HID碼的按鍵再進(jìn)行消抖處理看釋放否。若按鍵 未釋放則繼續(xù)等待,若已釋放則轉(zhuǎn)向按鍵掃描處重新掃描。
在具體設(shè)計(jì)中引入狀態(tài)轉(zhuǎn)移分析法和定時(shí)器中 斷。將按鍵的所有狀態(tài)分為4種。狀態(tài)0為按鍵掃 描,狀態(tài)1為按鍵消抖處理并確認(rèn),狀態(tài)2為按鍵鍵 碼轉(zhuǎn)換并發(fā)送,狀態(tài)3為等待按鍵釋放狀態(tài)。以上的 函數(shù)流程實(shí)際上是在這4個(gè)狀態(tài)中轉(zhuǎn)移, 如圖 4所 示。設(shè)置一個(gè)狀態(tài)標(biāo)志位key_state來(lái)表示按鍵所處 的不同狀態(tài),采用多分支結(jié)‘ swich-case,可以很方便的實(shí)現(xiàn)。
而定時(shí)器中斷是使MCU的TIM2定時(shí)器產(chǎn)生 10ms的定時(shí)中斷。主程序每隔10ms中斷調(diào)用key¬board ()函數(shù)一次。當(dāng)無(wú)按鍵按下時(shí),key_state二0, 執(zhí)行case0,即實(shí)現(xiàn)了每10ms執(zhí)行一次鍵盤(pán)掃描。若 有按鍵按下,則定位其按下按鍵的位置代碼,并使 key_state二1。當(dāng) 10ms 后再次調(diào)用 keyboard ()函數(shù), 這時(shí)key_state二1而進(jìn)入case1,在case1中對(duì)前面所 定位的按鍵位置再次進(jìn)行確認(rèn),若還在,則再次確定 其位置代碼,并使key_state二2。如此時(shí)按鍵已經(jīng)釋 放,說(shuō)明為假按鍵,則使key_state二0,返回按鍵掃 描。這里巧妙利用了兩次定時(shí)'斷的10ms間隔實(shí)現(xiàn) 按鍵的消抖處理。若key_state二2, 10ms后再次調(diào)用 keyboard (函數(shù)時(shí)則進(jìn)入case2,這里將已確認(rèn)的按 鍵位置代碼轉(zhuǎn)化為按鍵代碼以及zui終的HID碼,建 立鍵盤(pán)報(bào)表并發(fā)送給主機(jī),然后使key_state二!。當(dāng)下 一個(gè)10ms, key_state二!則進(jìn)入csae!,等待按鍵釋放 狀態(tài),此時(shí)再次掃描前面已確定按鍵的位置,若按鍵 已釋放,則key_state 二0,下一個(gè)10ms來(lái)臨則進(jìn)入 case0重新按鍵掃描;否則仍然key_state 二!,繼續(xù)等 待釋放。這里也巧妙的利用這10ms進(jìn)行按鍵釋放時(shí) 的去抖動(dòng)處理。
另外在多鍵(含雙鍵)、特殊功能鍵和復(fù)合鍵的 實(shí)現(xiàn)中,該軟件也設(shè)計(jì)了比較好的實(shí)現(xiàn)方法。譬如多 鍵,設(shè)置內(nèi)部緩存器,在逐行掃描中將每個(gè)按下按鍵 在矩陣鍵盤(pán)中的位置代碼存入其中。之后的消抖處理 等操作的對(duì)象便是緩存器中的按鍵位置代碼值。系統(tǒng) zui多處理的普通鍵數(shù)為6個(gè),超過(guò)則為溢出。對(duì)于特 殊功能鍵,其形式上是單鍵,實(shí)際實(shí)現(xiàn)的是多鍵的功 能。只要將單鍵在發(fā)送前轉(zhuǎn)換成需要的多鍵HID碼, 即可方便實(shí)現(xiàn)。對(duì)于復(fù)合鍵,理論上是兩個(gè)以上按鍵 同時(shí)按下所完成的功能,實(shí)際情況很難實(shí)現(xiàn)真正的 “同時(shí)按下”,它們的時(shí)間差別可能長(zhǎng)達(dá)50ms。譬如 對(duì)引導(dǎo)鍵SHIFT鍵的設(shè)計(jì),需設(shè)置專門標(biāo)志位 Shiftkeyjlag,有 SHIFT 按下則 Shiftkey_£lag二1,否則 為0。在*次檢測(cè)出SHIFT單按鍵時(shí),改變狀態(tài) 標(biāo)志位為1。隨后的按鍵掃描中,若再無(wú)其他按鍵按 下,則key_state 二0,直到有其他按鍵按下,key_state 二1。這在軟件中實(shí)際上是對(duì)狀態(tài)0的細(xì)化。同理, 在各個(gè)狀態(tài)中,因?yàn)樵撴I的特殊性,也有相應(yīng)的細(xì)化 過(guò)程。
從以上分析可見(jiàn),這樣的軟件設(shè)計(jì)不僅結(jié)構(gòu)清 晰,代碼簡(jiǎn)潔,實(shí)現(xiàn)便捷,而且使得當(dāng)無(wú)按鍵按下, 鍵盤(pán)每10ms掃描一次,當(dāng)有確定非復(fù)合按鍵按下 (即通過(guò)消抖處理",則鍵盤(pán)響應(yīng)速度在30ms以內(nèi), 如此的響應(yīng)速度大大提高了鍵盤(pán)的靈敏度。
3結(jié)束語(yǔ)
DCS系統(tǒng)是目前工業(yè)控制領(lǐng)域的核心系統(tǒng),其 鍵盤(pán)是提高整個(gè)生產(chǎn)線自動(dòng)化能力的關(guān)鍵一環(huán)。 該鍵盤(pán)的設(shè)計(jì)避免了現(xiàn)有鍵盤(pán)電路特殊按鍵實(shí)現(xiàn) 復(fù)雜、軟硬件成本高的情況,而是研究開(kāi)發(fā)了基于 ARM的DCS工業(yè)鍵盤(pán),實(shí)現(xiàn)了對(duì)多達(dá)86個(gè)按 鍵的控制。采用STM32芯片及有效率的軟件開(kāi)發(fā)大 大提高了產(chǎn)品開(kāi)發(fā)的速度。經(jīng)過(guò)實(shí)驗(yàn)結(jié)果與實(shí)際應(yīng)用 證明,該鍵盤(pán)易用性、可靠性達(dá)到了工業(yè)要求, 并產(chǎn)生很大的經(jīng)濟(jì)效益。
掃一掃 微信咨詢
©2024 上自儀表有限公司(m.cadeena.com)版權(quán)所有 備案號(hào):滬ICP備15055501號(hào)-9 技術(shù)支持:化工儀器網(wǎng) sitemap.xml 總訪問(wèn)量:278169 管理登陸