本人是一名在校大學(xué)生,去年十月份協(xié)助老師做一個(gè)項(xiàng)目,其中需要觸摸屏作為人機(jī)界面,由于我們的觸摸屏是在戶外使用的,所以需要一定的保護(hù)等級(jí),后來我們買了維控的觸摸屏,型號(hào)為LEVI777T,老師解釋說選擇該觸摸屏的主要原因是它滿足IP65保護(hù)等級(jí)。但是當(dāng)我們使用時(shí)才發(fā)現(xiàn)該觸摸屏的工作方式與之前的觸摸屏工作方式不太一樣,之前的觸摸屏是作為單片機(jī)的從機(jī),單片機(jī)控制觸摸屏的顯示,而現(xiàn)在的觸摸屏卻反客為主,變成主機(jī),并向單片機(jī)不斷發(fā)送消息,詢問自己的狀態(tài)。我意識(shí)到這是一種新的工作方式,沒辦法只能從頭開始學(xué),從一開始模擬出開關(guān)的動(dòng)作到zui后一步步*制作出項(xiàng)目需要的界面,我深深體會(huì)到該觸摸屏給我開發(fā)帶來的便利。下面我將從維控觸摸屏的工作方式,界面設(shè)計(jì),基本控件的使用,腳本等方面分享自己的心得體會(huì),希望大家在我的基礎(chǔ)上開發(fā)出更好的人機(jī)界面。
本人選擇的協(xié)議ModBus RTU Slave,由于是根據(jù)項(xiàng)目需要慢慢摸索的,所以介紹的也是zui常用的幾個(gè)方面。
1 觸摸屏的工作方式
在選擇協(xié)議為ModBus RTU Slave時(shí),觸摸屏是作為主機(jī)的,與之相連的單片機(jī)是作為從機(jī)的,觸摸屏上的每一種控件都會(huì)實(shí)時(shí)的向單片機(jī)發(fā)送詢問消息(基于ModBus協(xié)議編寫),詢問本控件此時(shí)的狀態(tài),單片機(jī)必須實(shí)時(shí)回復(fù)該消息,回復(fù)的消息也必須是基于ModBus協(xié)議的編寫的,觸摸屏如果在一定時(shí)限內(nèi)沒有收到回復(fù)指令,那么在該屏的上方就會(huì)提示某些地址通訊超時(shí)。我們必須保持觸摸屏和單片機(jī)的連接,不能讓其出現(xiàn)超時(shí)的現(xiàn)象。
2 觸摸屏的界面設(shè)計(jì)
維控的觸摸屏提供了LEVI Studio工程編輯器這個(gè)開發(fā)工具幫助我們快速開發(fā)出適合自己項(xiàng)目的界面。LEVI Studio 擁有Windows zui流行的界面風(fēng)格,提供豐富的設(shè)計(jì)資源,采用所見即所得的設(shè)計(jì)理念。通過簡單的控件拖放,文本添加,然后通過串口或者 Usb把這個(gè)工程下載到觸摸屏,就設(shè)計(jì)出了自己的人機(jī)界面。
下圖是項(xiàng)目的界面,在工程里先把需要的控件擺放妥當(dāng),再加上適當(dāng)?shù)奈淖终f明,根據(jù)需要填寫控件的屬性。然后通過串口或者Usb把該工程下到觸摸屏里,觸摸屏顯示的內(nèi)容跟我們?cè)诠こ汤锟吹降囊荒R粯印?/span>
主界面
子界面
主要用到的控件有:數(shù)字輸入\顯示控件(用于環(huán)境參數(shù)的顯示和時(shí)間等的設(shè)定),位開關(guān),功能開關(guān)。
3 觸摸屏基本控件的使用
3.1 ModBus協(xié)議
由于在工程參數(shù)里設(shè)置的通訊協(xié)議是ModBus RTU Slave,那么屏與單片機(jī)之間的通信是基于ModBus協(xié)議的。所以有必要了解一下ModBus協(xié)議。ModBus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
查詢—回應(yīng)周期
(1)查詢:查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。
(2)回應(yīng):在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):寄存器值或狀態(tài)。
2.RTU幀
起始位 設(shè)備地址 功能代碼 數(shù)據(jù) CRC校驗(yàn) 結(jié)束符
T1-T2-T3-T4 8Bit 8Bit n個(gè)8Bit 16Bit T1-T2-T3-T4
單片機(jī)與觸摸屏通信的消息都是按照上面這個(gè)格式來編寫的。
3.2 位開關(guān)的使用
位開關(guān)的地址分片內(nèi)地址和片外地址,片內(nèi)地址指的是觸摸屏的內(nèi)部寄存器地址,對(duì)這些地址操作是不會(huì)引發(fā)觸摸屏發(fā)消息的。片外地址需要通過串口通信進(jìn)行操作的。后面的介紹如沒有特殊說明都是指片外地址。
位開關(guān)有兩個(gè)地址需要設(shè)置,分別為操作地址和監(jiān)控地址。在屏上點(diǎn)一下(觸發(fā))位開關(guān),屏就會(huì)發(fā)出一條操作地址所指的片外線圈的置位或復(fù)位請(qǐng)求。屏隔一段時(shí)間發(fā)送一條查詢消息來查詢監(jiān)控地址所指的片外線圈的狀態(tài),外部設(shè)備要實(shí)時(shí)返回該線圈的狀態(tài),如果是開則返回置位狀態(tài),那么觸摸屏上的位開關(guān)就會(huì)顯示成置位的狀態(tài)。把這兩個(gè)地址設(shè)成一樣(如2#060),以O(shè)N開關(guān)為例,此時(shí)的工作流程如下:在屏點(diǎn)一下開關(guān),觸摸屏就向單片機(jī)發(fā)送一條置位請(qǐng)求(功能代碼:05),單片機(jī)在收到該消息以后,把60所指的位置位,并返回給觸摸屏一條消息,告知此位置位成功,那么觸摸屏上的位開關(guān)就會(huì)顯示切換到置位的狀態(tài)。如果過了段時(shí)間60所指的位在外部被復(fù)位,等到查詢60所指的位狀態(tài)的消息過來,返回給屏的消息告知此位已經(jīng)復(fù)位,那么屏上的位開關(guān)就會(huì)切換到復(fù)位狀態(tài)。
涉及通訊的消息如下:
(1)查詢位狀態(tài)
請(qǐng)求 :
高字節(jié) 低字節(jié) 高字節(jié) 低字節(jié)
fe 01 00 3C 00 08 校驗(yàn)碼
PLC站號(hào) 功能碼 起始位地址 查詢數(shù)量
當(dāng)屏需要不只一個(gè)位開關(guān)時(shí),每個(gè)位開關(guān)都需要向單片機(jī)發(fā)消息了解自己的狀態(tài),這樣就需要發(fā)很多條消息。替代的方法是把這些消息聯(lián)合起來做一條發(fā),從某個(gè)開關(guān)開始到zui后一個(gè)開關(guān),總共有多少個(gè)片外地址,也就是查詢數(shù)量,從哪一個(gè)片外地址開始,也就是起始位地址,當(dāng)然這幾個(gè)開關(guān)的監(jiān)控地址必須設(shè)置成連續(xù)的。
響應(yīng):
fe 01 01 CD 校驗(yàn)碼
PLC站號(hào) 功能碼 字節(jié)數(shù)(8個(gè)開關(guān)=1字節(jié)) 8個(gè)開關(guān)的狀態(tài)
響應(yīng)信息中位開關(guān)的狀態(tài)與數(shù)據(jù)區(qū)的每一位的值相對(duì)應(yīng),低位對(duì)應(yīng)低地址的狀態(tài),高位對(duì)應(yīng)高地址的狀態(tài),1=ON,0=OFF。若返回的位開關(guān)數(shù)不是8的倍數(shù),那么剩余的高位填0。8個(gè)位開關(guān)的狀態(tài)用CD表示,其二進(jìn)制位表示為1100 1101,那么8個(gè)位開關(guān)從高地址(左)到低地址(右)的狀態(tài)為ON-ON-OFF-OFF-ON-ON-OFF-ON。
(2)強(qiáng)制單個(gè)開關(guān)
請(qǐng)求:
1. 請(qǐng)求置位 高字節(jié) 低字節(jié)
fe 05 00 3C FF 00 校驗(yàn)碼
PLC站號(hào) 功能碼 位開關(guān)地址 置位請(qǐng)求
2.請(qǐng)求復(fù)位 高字節(jié) 低字節(jié)
fe 05 00 3C 00 00 校驗(yàn)碼
PLC站號(hào) 功能碼 位開關(guān)地址 復(fù)位請(qǐng)求
FF00請(qǐng)求置位開關(guān)為ON狀態(tài),0000請(qǐng)求復(fù)位開關(guān)為OFF狀態(tài)。
回應(yīng):與請(qǐng)求對(duì)應(yīng)相同。
根據(jù)請(qǐng)求返回指令,告訴觸摸屏此時(shí)已經(jīng)置位或復(fù)位成功,觸摸屏解析回復(fù)的指令,然后做相應(yīng)的顯示。
3.3 數(shù)字輸入\顯示控件的使用
數(shù)字輸入\顯示控件也提供了兩個(gè)操作地址:讀取地址和寫入地址。這和位開關(guān)控件相似,讀取地址對(duì)應(yīng)于監(jiān)控地址,數(shù)字輸入\顯示控件也會(huì)隔一段時(shí)間向單片機(jī)發(fā)送一條消息查詢讀取地址所指的片外寄存器的值,單片機(jī)必須實(shí)時(shí)返回這個(gè)值,觸摸屏把返回回來的值在該控件上顯示。寫入地址則對(duì)應(yīng)操作地址,在屏上點(diǎn)一下數(shù)字輸入\顯示控件(觸發(fā)一下),屏上就會(huì)出現(xiàn)一個(gè)小鍵盤,選擇點(diǎn)一個(gè)數(shù)字,屏就會(huì)把所選的數(shù)字包裝成一條消息發(fā)送給單片機(jī),單片機(jī)在收到這條消息以后,把寫入地址對(duì)應(yīng)的寄存器的值賦成成屏發(fā)過來的數(shù)字后,并返回一條消息,告訴屏賦值成功,屏就會(huì)在控件上顯示該數(shù)字。
一.涉及的通訊消息
(1) 查詢寄存器狀態(tài)
1. 請(qǐng)求:
高字節(jié) 低字節(jié) 高字節(jié) 低字節(jié)
fe 03 00 6b 00 03 校驗(yàn)碼
PLC站號(hào) 功能碼 開始地址 查詢寄存器數(shù)量
2. 回應(yīng): 高字節(jié) 低字節(jié) 高 低 高 低
fe 03 06 00 01 00 02 00 03 校驗(yàn)碼
PLC站號(hào) 功能碼 字節(jié)數(shù) *個(gè)寄存器 第二個(gè) 第三個(gè)
用十六位二進(jìn)制數(shù)來表示寄存器的數(shù)據(jù),*個(gè)寄存器的值為1,第二個(gè)寄存器的值為2,第三個(gè)寄存器的值為3。
(2) 預(yù)置單個(gè)寄存器
1. 請(qǐng)求:
高字節(jié) 低字節(jié) 高字節(jié) 低字節(jié)
fe 06 00 01 00 03 校驗(yàn)碼
PLC站號(hào) 功能碼 預(yù)置的寄存器地址 預(yù)置的值
2. 回應(yīng):與請(qǐng)求的相同,表示賦值成功。
預(yù)置的值可以是用戶從觸摸屏的小鍵盤輸入,也可以是在腳本中賦值。
二.?dāng)?shù)據(jù)處理
在項(xiàng)目中表示環(huán)境的一些參數(shù)需要用到浮點(diǎn)數(shù)和有符號(hào)數(shù),在這里我簡單的介紹一下處理方法。
對(duì)于浮點(diǎn)數(shù),在數(shù)據(jù)格式這個(gè)屬性項(xiàng)里可以設(shè)值小數(shù)點(diǎn)的位置,如我們要屏顯示數(shù)據(jù)格式為:保留一位小數(shù),如15.6。我們就設(shè)置小數(shù)位為1位,然后把zui終顯示的數(shù)(15.6)按擴(kuò)大十倍(156)來發(fā)送,屏接收到數(shù)據(jù)后會(huì)按設(shè)定的要求在的位置加上這個(gè)小數(shù)點(diǎn),顯示成帶一位小數(shù)的格式。
對(duì)于有符號(hào)數(shù),例如-50,就需要做如下的處理:-50+0xffff+1。其實(shí)是把-50首先擴(kuò)展成16位的二進(jìn)制數(shù),高位補(bǔ)0,zui高位為符號(hào)位。然后再對(duì)這個(gè)數(shù)取補(bǔ)碼。負(fù)數(shù)的發(fā)送就是發(fā)送其補(bǔ)碼。
4 觸摸屏腳本的使用
維控觸摸屏提供的腳本豐富了控制手段。在腳本里可以把一些重要的數(shù)據(jù)存入掉電保護(hù)區(qū)。利用腳本可以實(shí)現(xiàn)一些控制,以項(xiàng)目為例:實(shí)現(xiàn)一個(gè)定時(shí)灌溉,如在近一個(gè)月內(nèi),每天早上的8點(diǎn)到9點(diǎn)打開閥門澆灌一個(gè)小時(shí)。這涉及用腳本定時(shí)打開和關(guān)閉位開關(guān)。實(shí)現(xiàn)的方法如下:設(shè)置個(gè)定時(shí)腳本,定時(shí)時(shí)間為1s,這樣這個(gè)腳本每一秒就執(zhí)行一次,在這腳本里首先讀系統(tǒng)時(shí)間,然后與設(shè)置的時(shí)間來比較,如果時(shí)間在這個(gè)范圍內(nèi),就把閥門地址賦值為1,效果相當(dāng)于點(diǎn)了一下閥門開關(guān),那么屏就向單片機(jī)發(fā)送消息請(qǐng)求打開閥門,單片機(jī)在打開閥門以后,通知觸摸屏閥門已打開,觸摸屏收到消息后,就把閥門開關(guān)顯示成開的狀態(tài)。關(guān)閥門的流程與開閥門的類似。觸摸屏的輔助控制減輕的單片機(jī)的負(fù)擔(dān),而且兩者結(jié)合能把許多問題簡單化,用戶可以根據(jù)自己的需求靈活得加以應(yīng)用。
5 總結(jié)
本文從單片機(jī)開發(fā)的角度,分別從界面設(shè)計(jì),基本控件的使用,腳本等幾個(gè)方面介紹維控觸摸屏。對(duì)于單片機(jī)開發(fā)維控觸摸屏具有一定的參考價(jià)值。只要了解一些基本的原理,用單片機(jī)來開發(fā)維控觸摸屏也是很簡單的。
2025第十一屆中國國際機(jī)電產(chǎn)品交易會(huì) 暨先進(jìn)制造業(yè)博覽會(huì)
展會(huì)城市:合肥市展會(huì)時(shí)間:2025-09-20