基于S7-200PLC的矩陣式鍵盤設計
1 引言
與其它工業控制系統相比,PLC控制系統具有可靠性高、抗干擾能力強等突出優點,因而廣泛應用于工業控制領域。對于那些不必采用上位機監控+PLC現場控制的簡易控制系統,操作面板的完善與否直接影響到整個系統的智能化程度高低。對小型控制系統而言,在滿足功能的前提下,高性價比一直是設計人員追求的目標,若采用觸摸屏(如SIEMENS的TP270)+組態軟件(如PROTOOL)的方式組成人機界面,勢必使整個系統的性價比大為降低,因此,提出基于PLC的矩陣式鍵盤設計方案具有較大的實際意義。
2 矩陣式鍵盤工作原理
矩陣式鍵盤是相對于獨立式鍵盤而言的,也叫行列式鍵盤,是當鍵數較多時為節省I/O點而采取的一種結構。在微機系統中,矩陣式鍵盤的構成方式如圖1所示。
圖1 矩陣式鍵盤結構圖
首先,判斷整個鍵盤上有無鍵按下。方法是:將列全輸出為0,然后讀入行的狀態,如果行讀入的狀態全為1,則無鍵按下,不全為1則有鍵按下。
其次,若有鍵按下則逐列掃描。方法是:依次將列線送低電平0,檢查對應行線的狀態;若行線全為1,則按鍵不在此列;若不全為1,則按鍵必在此列,且是與0電平行線相交的那個鍵。最后,確定鍵值,并進入鍵處理程序。
3 矩陣式鍵盤硬件設計
在PLC系統中設計矩陣式鍵盤不僅要用到輸入口,而且也要用到輸出口,因此,了解PLC I/O口內部電路的結構以及工作原理是十分重要的。下面以S7-200的DC輸入、輸出模塊為例,簡要說明其工作原理。
3.1 輸入模塊
如圖2所示,為PLC的DC輸入模塊,其中,K1-輸入開關;M-公共端;I0.0-輸入點;R1、R2的典型值為5.6K、1K。
圖2 直流輸入模塊電路圖
工作原理:若輸入開關K1閉合,則輸入信號經RC濾波和光電隔離后,轉換為PLC的CPU所需的電平(一般為5V),再經過輸入選擇器與CPU的總線相連,從而將外部輸入開關的“ON”狀態輸入到PLC內部,此時輸入指示燈亮,且與該輸入點對應的輸入映像寄存器為“1”。若輸入開關斷開,則信號沒有形成通路,此時輸入指示燈不亮,表示為“OFF”狀態。
3.2 輸出模塊
如圖3所示,為PLC的DC輸出模塊,其中,L+接DC24V;Q0.0-輸出點。
圖3 直流輸出模塊電路圖
工作原理:若用戶程序將輸出置為“ON”狀態,則在刷新輸出階段CPU將“ON”信號送給輸出鎖存器,再經過光電耦合送給場效應管,使之飽和導通,此時輸出指示燈亮,且通過場效應管將DC24V和負載連通,從而使得負載獲得工作電流。反之,若用戶程序將輸出置為“OFF”狀態,則輸出指示燈不亮,情況與上述相反。
3.3 鍵盤的硬件設計
由以上分析可知:PLC的I/O口內部電路與一般的計算機系統(如單片機系統)有較大的不同,這就決定了在PLC系統中設計矩陣式鍵盤也有其特殊性。首先,由于輸入模塊中有RC濾波電路,其濾波延遲時間可以通過編程軟件設置,即其本身存在硬件消抖動的功能,因此不再需要軟件延時消抖動;其次,由于用到了PLC的輸出口,它本身可以輸出對M端有DC24V的電壓,因此不再需要外接電源;最后,由于PLC的輸入口有6K左右的輸入電阻,因此可以將DC24V的電壓直接加上,若為了延長I/O口的使用壽命,一般按照輸入模塊的技術指標來配置限流電阻,經查閱輸入電流的典型值為4mA,一般取R1=R2=R3=0.5K即可。如圖4所示為3行3列矩陣式鍵盤的結構圖。
圖4 3×3鍵盤結構圖
4 矩陣式鍵盤軟件設計
4.1 PLC的掃描工作方式
當PLC處于“RUN”工作模式下時,除上電初始化外,其它程序都采取周而復始的循環掃描方式,稱之為“PLC的掃描工作方式”,其執行流程如圖5所示:
圖5 PLC的掃描工作流程
在設計鍵盤時可暫不考慮通信和自診斷,則在一個掃描周期內剩下以下三個主要階段:
(1) 輸入采樣階段,CPU將所有物理輸入點的狀態存入對應的過程映像寄存器中,到下次輸入采樣前,過程映像寄存器的內容均保持不變;
(2) 程序執行階段,CPU按照從左到右、從上到下的順序執行程序,將運算結果寫到輸出映像寄存器或數據存儲區內;
(3) 輸出刷新階段,在程序執行完后,CPU將過程輸出映像寄存器的狀態幾乎同時的更新到物理輸出點。
4.2 鍵盤的軟件設計
矩陣式鍵盤的軟件設計相對較為復雜,但無非是實現微機系統中所描述的鍵盤掃描程序的四個功能:
(1) 判斷有無鍵按下;
(2) 去機械抖動;
(3) 求按下的鍵號;
(4) 鍵閉合一次僅進行一次鍵功能操作。
4.3 鍵盤設定及程序設計
再結合微機系統中矩陣鍵盤的原理,設計3×3矩陣式鍵盤,特做如下設定:
(1) 設定0~8號鍵分別與M0.0~M1.0對應,鍵按下,對應的位存儲點為“1”,鍵松開則為“0”;
(2) 設定I0.0、I0.1、I0.2對應鍵盤的第0列、第1列、第2列,Q0.0、Q0.1、Q0.2對應鍵盤的第0行、第1行、第2行,M1.1為“有鍵按下”標志位;
(3) 按圖4所示的方式構成3行3列矩陣式鍵盤,流程圖如圖6。
圖6 鍵盤程序流程圖
為增強程序的可讀性,利用STEP7-Micro/WIN V4.0編程軟件,用符號地址替代絕對地址,編制3×3鍵盤的STL程序如下所示。
Network 1 判斷有無鍵按下
LDN 有鍵按下
S 第0行, 3 //全行掃描
LD 第0列
O 第1列
O 第2列 //全列讀入
AN 有鍵按下
S 有鍵按下, 1 //有鍵按下,置標志位
JMP 0
LDN 有鍵按下
MOVW 0, MW0 //無鍵按下,清零跳出
JMP 9
Network 2 散轉程序
LD 有鍵按下
A 第0行
JMP 10 //跳至第0行
LD 有鍵按下
A 第1行
JMP 11 //跳至第1行
LD 有鍵按下
A 第2行
JMP 12 //跳至第2行
Network 3 逐行掃描
LBL 0 //第0行處理
LD 有鍵按下
RI 第0行, 3
SI 第0行, 1 //立即置位Q0.0
JMP 9
LBL 10
LD 第0列
= KEY_0 //0鍵
JMP 9
LD 第1列
= KEY_1 //1鍵
JMP 9
LD 第2列
= KEY_2 //2鍵
JMP 9
LBL 1 //第1行處理
LD 有鍵按下
RI 第0行, 3
SI 第1行, 1 //立即置位Q0.1
JMP 9
LBL 11
LD 第0列
= KEY_3 //3鍵
JMP 9
LD 第1列
= KEY_4 //4鍵
JMP 9
LD 第2列
= KEY_5 //5鍵
JMP 9
LBL 2 //第2行處理
LD 有鍵按下
RI 第0行, 3
SI 第2行, 1 //立即置位Q0.2
JMP 9
LBL 12
LD 第0列
= KEY_6 //6鍵
JMP 9
LD 第1列
= KEY_7 //7鍵
JMP 9
LD 第2列
= KEY_8 //8鍵
JMP 9
LD 有鍵按下
R 有鍵按下, 1
//無鍵按下,清標志位
Network 4 軟件延時
LBL 9
LD 有鍵按下 //有鍵按下才延時
FOR VW0, 1, 500
NOP 0
NEXT
4.4 程序的說明
(1) 程序采用了立即置位、復位指令SI和RI,是為了更及時的置位復位輸出點,使程序的執行不受掃描周期的影響,也可用字節立即寫指令MOV_BIW來實現,但應該考慮對其它未用點的影響。
(2) 程序的最后采用了軟件延時,是為了解決程序指令執行時間與輸入輸出滯后時間的不匹配。利用編程軟件STEP7-Micro/WIN V4.0中的System Block下的Input Filters選項可以設置輸入濾波時間,默認為6.4ms,減少濾波時間可以相應的減少軟件延時次數,但若濾波時間太小又達不到消抖動的目的。
(3) 程序中沒有考慮多鍵同時按下的問題,在現有的程序中,若不同行有多個鍵按下,均以最先按下的那個鍵為準進行響應,但若同一行上有多個鍵按下,則又分要幾種情況,因此在應用時,應加強對按鍵的限制條件,避免由于誤操作而造成生產設備的損壞。
(4) 程序中對每個按鈕的響應均是按下該鍵,則對應的存儲位為“1”,放開該鍵,則為“0”,沒有其它較為智能的功能。若鍵盤中有“加速”、“減速”等類似鍵時,往往希望有連續加減的功能,即按下“加速”一定時間后(如500ms),按照每規定時間(如100ms)增加一個單位的速度值,此時可以利用兩個定時器實現,其STL程序如下。
LD 加速
TON T37, 5
LD 加速
EU
= 加速上升沿
LD T37
AN 每100MS通電一次
TON T38, 1
LD T38
= 每100MS通電一次
LD 每100MS通電一次
O 加速上升沿
EU
+I 1, 速度存儲值
5 結束語
本文提出了在PLC系統中設計矩陣式鍵盤的一般方法并給出了3×3鍵盤的硬件連線圖和STL程序。在鍵數較多時,矩陣式鍵盤可以大大節省PLC的I/O點數,但程序設計的復雜度也隨之增加,因此使用時應在系統的硬件成本和實時性之間加以均衡考慮。此外,本文的設計思路具有通用性,只需稍加變動,就可移植到其它品牌的PLC中。文中的STL程序均已通過S7-200的編程軟件STEP7-Micro/WIN V4.0在CPU226 DC/DC/DC上調試通過,說明了本文設計方法的可行性。
文章版權歸西部工控xbgk所有,未經許可不得轉載。