国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MCGS的STC15單片機(jī)驅(qū)動構(gòu)件開發(fā)

2019-02-07 05:37繆建華韓穎
無線互聯(lián)科技 2019年22期
關(guān)鍵詞:通信

繆建華 韓穎

摘? ?要:MCGS組態(tài)軟件提供了一種腳本驅(qū)動開發(fā)工具,用戶使用該工具可便捷開發(fā)滿足項(xiàng)目需求的驅(qū)動構(gòu)件。腳本驅(qū)動開發(fā)工具包含大量的標(biāo)準(zhǔn)函數(shù),能充分滿足用戶需求。文章基于MCGS的STC15單片機(jī)驅(qū)動構(gòu)件開發(fā),根據(jù)水位監(jiān)控系統(tǒng)的實(shí)際要求設(shè)計(jì),首先確定通信協(xié)議,再配置設(shè)備屬性、設(shè)備通道、編寫設(shè)備命令與編輯調(diào)試,最后通過驅(qū)動構(gòu)件的發(fā)布與應(yīng)用,實(shí)現(xiàn)設(shè)備驅(qū)動構(gòu)件的開發(fā)。

關(guān)鍵詞:MCGS組態(tài)軟件;STC15單片機(jī);腳本驅(qū)動;通信

當(dāng)今,隨著計(jì)算機(jī)、網(wǎng)絡(luò)及信息技術(shù)的高速發(fā)展,傳統(tǒng)的信號燈、顯示儀表、操控按鈕等已不能滿足現(xiàn)代工業(yè)發(fā)展的需要。觸摸屏作為一種流行的人機(jī)交互界面,具有功能強(qiáng)大、穩(wěn)定性好、美觀易用等特點(diǎn),在工業(yè)中應(yīng)用非常廣泛。北京昆侖通態(tài)自動化軟件科技有限公司開發(fā)的觸摸屏和監(jiān)視與控制通用系統(tǒng)(Monitor and Control Generated System,MCGS)軟件具有使用方便、穩(wěn)定性高、成本低、速度快、功能強(qiáng)的特點(diǎn),支持多種運(yùn)行環(huán)境,抗干擾能力強(qiáng)[1]。

MCGS環(huán)境下的STC15單片機(jī)驅(qū)動構(gòu)件的開發(fā),以智能水位控制項(xiàng)目為背景,通過MCGS腳本驅(qū)動開發(fā)工具進(jìn)行腳本程序的設(shè)計(jì)。

1? ? 智能水位控制項(xiàng)目人機(jī)交互通信簡介

智能水位控制系統(tǒng)上位機(jī)采用昆侖通態(tài)的TPC7062Ti嵌入式一體化觸摸屏,下位機(jī)采用宏晶公司的増強(qiáng)型8051內(nèi)核的STC15系列單片機(jī)。上位機(jī)與下位機(jī)通信如圖1所示,STC15單片機(jī)通過RS232串口與觸摸屏進(jìn)行連接,下位機(jī)采集液位和水泵狀態(tài)傳送給上位機(jī),上位機(jī)對接受的數(shù)據(jù)進(jìn)行分析處理和監(jiān)控,將控制指令發(fā)送給下位機(jī),實(shí)現(xiàn)智能水位控制系統(tǒng)的人機(jī)交互。

2? ? MCGS腳本驅(qū)動開發(fā)

MCGS驅(qū)動構(gòu)件開發(fā)有兩種方式,一種是MCGS軟件廠商提供采用Active DLL構(gòu)件的方式來實(shí)現(xiàn)設(shè)備驅(qū)動程序,通過調(diào)用接口函數(shù)來實(shí)現(xiàn)用戶的所需功能,使用標(biāo)準(zhǔn)的對象連接與嵌入(Object Linking and Embedding,OLE)接口,實(shí)現(xiàn)驅(qū)動程序在組態(tài)軟件中掛接。另一種是提供配套的MCGS腳本驅(qū)動開發(fā)工具實(shí)現(xiàn)用戶個性化開發(fā)[2]。廠商提供的標(biāo)準(zhǔn)設(shè)備驅(qū)動涉及較多的技術(shù)細(xì)節(jié),需要花費(fèi)大量時(shí)間學(xué)習(xí)接口技術(shù)和計(jì)算機(jī)技術(shù),效率較低。MCCS腳本驅(qū)動開發(fā)使用其自帶的腳本編程語言,開發(fā)步驟標(biāo)準(zhǔn),包含大量的庫函數(shù),不僅能滿足用戶功能需求,并且具備一定的容錯處理能力,使用腳本驅(qū)動工具進(jìn)行驅(qū)動程序開發(fā),可以節(jié)省時(shí)間,提高效率。本文采用第二種方式,使用向?qū)Ы⒐こ?,開發(fā)內(nèi)容涉及配置設(shè)備屬性、配置設(shè)備通道、編寫設(shè)備命令和編輯設(shè)備腳本代碼等。

2.1? 制定通信協(xié)議

通信協(xié)議是指通信雙方為了達(dá)到某種通信目標(biāo)所必須遵守的規(guī)范和準(zhǔn)則。通信規(guī)則:上位機(jī)定時(shí)通過串口發(fā)送命令給下位機(jī),主要是將觸摸屏中按鈕的當(dāng)前狀態(tài)發(fā)送給下位機(jī),下位機(jī)在接收到命令后立即將當(dāng)前采集的水位、水泵等狀態(tài)信息回送給上位機(jī)。

常用通信信號格式包括幀頭、長度、當(dāng)前頁、操作類型、數(shù)據(jù)、幀尾及校驗(yàn)。根據(jù)具體的項(xiàng)目需求,信號幀的格式可以有所不同[3-5]。

通信過程中,雙方規(guī)定通信協(xié)議,當(dāng)下位機(jī)收到上位機(jī)的數(shù)據(jù)并通過校驗(yàn)后,將下位機(jī)采集的數(shù)據(jù)發(fā)送給主機(jī),并執(zhí)行上位機(jī)傳來的命令。通信數(shù)據(jù)的格式:幀頭、命令字、數(shù)據(jù)體字節(jié)、幀尾及校驗(yàn)累加和,如表1所示。

(1)幀頭,是通信幀的開始標(biāo)志,可判斷本幀是否屬于通信協(xié)議;本項(xiàng)目中,幀頭占1 B。當(dāng)幀頭為0×69時(shí),表示上位機(jī)發(fā)送數(shù)據(jù)給下位機(jī);當(dāng)幀頭為0×68時(shí),表示下位機(jī)發(fā)送數(shù)據(jù)到上位機(jī)。

(2)命令字,表示傳輸?shù)臄?shù)據(jù)是控制命令,占1 B;0×10表示命令,0×01表示數(shù)據(jù)。

(3)數(shù)據(jù),指所傳輸數(shù)據(jù)的內(nèi)容,本項(xiàng)目中傳輸?shù)臄?shù)據(jù)較少,沒有定義數(shù)據(jù)長度。

(4)幀尾,為該通信幀的結(jié)束標(biāo)志,占1 B。當(dāng)為 0×EE時(shí),表示上位機(jī)發(fā)送結(jié)束;當(dāng)為0×FE時(shí),表示下位機(jī)發(fā)送結(jié)束。

(5)校驗(yàn),采用累加求和校驗(yàn),保證數(shù)據(jù)傳輸?shù)恼_率。

2.2? 設(shè)計(jì)腳本驅(qū)動程序

MCGS腳本驅(qū)動程序設(shè)計(jì)主要步驟如下:首先,配置設(shè)備屬性;其次,建立配置設(shè)備通道;再次,編寫設(shè)備命令;從次,編寫自定義子函數(shù);最后,編輯設(shè)備腳本。

完成上述步驟后,對腳本程序進(jìn)行檢査調(diào)試,生成用于發(fā)布與使用的MDR文件。

2.2.1? 配置設(shè)備屬性

設(shè)備屬性指的是腳本驅(qū)動與MCGS組態(tài)軟件間的接口配置。配置設(shè)備屬性指對設(shè)備驅(qū)動的變量進(jìn)行設(shè)置,包括設(shè)備地址和通信時(shí)延。設(shè)備屬性對所有設(shè)備腳本可見,只讀不寫,只能作為一個全局常量。這里設(shè)備屬性采用默認(rèn)配置。

2.2.2? 配置設(shè)備通道

設(shè)備通道是腳本驅(qū)動跟實(shí)時(shí)數(shù)據(jù)對象之間的接口。配置設(shè)備通道指設(shè)置腳本驅(qū)動所需的內(nèi)部變量,也就是腳本驅(qū)動和下位機(jī)通信涉及的數(shù)據(jù)變量。根據(jù)需求,配置設(shè)備通道如表2所示。

當(dāng)腳本驅(qū)動添加到組態(tài)軟件時(shí),通過串口通道驅(qū)動程序,將設(shè)備通道與組態(tài)軟件中的實(shí)時(shí)數(shù)據(jù)庫連接,實(shí)現(xiàn)數(shù)據(jù)的傳輸。

2.2.3? 通信幀配置

通信幀配置是通信數(shù)據(jù)格式的設(shè)置,包括通信幀的類型、發(fā)送幀格式、回收幀格式等。通信幀類型分字節(jié)數(shù)組(HEX格式)和ASCII字符碼格式。發(fā)送幀和回收幀格式是指傳輸數(shù)據(jù)的幀頭、地址、命令體、數(shù)據(jù)體、幀尾、校驗(yàn)、結(jié)束符號等。發(fā)送幀是上位機(jī)發(fā)給下位機(jī)的數(shù)據(jù),回收幀是下位機(jī)回發(fā)給上位機(jī)的數(shù)據(jù)。根據(jù)通信協(xié)議,通信幀類型設(shè)置為“字節(jié)數(shù)組[HEX格式]”,發(fā)送幀和回收幀格式設(shè)置為:幀頭、命令體、數(shù)據(jù)體、幀尾、校驗(yàn);數(shù)據(jù)體長度發(fā)送幀的設(shè)置為2,回收幀的設(shè)置為4。

在通信幀結(jié)構(gòu)確定后,進(jìn)行命令信息設(shè)置,發(fā)送命令為:幀頭“69”、命令字“10”、數(shù)據(jù)體000、數(shù)據(jù)體001、幀尾“EE”以及“校驗(yàn)累加和”;接受命令為:幀頭“68”、命令字“01”、數(shù)據(jù)體000、數(shù)據(jù)體001、數(shù)據(jù)體002、數(shù)據(jù)體003、幀尾“FE”以及“校驗(yàn)累加和”。在命令信息設(shè)置中進(jìn)行幀數(shù)據(jù)體設(shè)置時(shí),數(shù)據(jù)值設(shè)置中數(shù)據(jù)長度設(shè)置為1數(shù)據(jù)單位,幀頭、命令體、幀尾數(shù)據(jù)內(nèi)容根據(jù)協(xié)議設(shè)定,其他設(shè)置為“00”;幀頭、命令體、數(shù)據(jù)體、幀尾選中“是否參與校驗(yàn)”,校驗(yàn)方式設(shè)置為“求和校驗(yàn)”。

2.2.4? 設(shè)備命令

設(shè)備命令是指用來對組態(tài)工程進(jìn)行控制的函數(shù),是腳本驅(qū)動唯一的動態(tài)控制方法,項(xiàng)目中應(yīng)用的主要設(shè)備命令如表3所示。

通過調(diào)用“!DevWriteAndReadByteArr”函數(shù),將觸摸屏上的按鍵狀態(tài)“KEY0”和“KEY1”兩個設(shè)備通道的值發(fā)送給控制電路板,并接受“LEVEL_H”“LEVEL_L”“Pump_IN”和“Pump_OUT”4個設(shè)備通道的值,保存到對應(yīng)的數(shù)組中,通過編寫函數(shù)來設(shè)置觸摸屏顯示狀態(tài)和控制板的運(yùn)行。

2.2.5? 編寫函數(shù)

在通道和通信幀結(jié)構(gòu)設(shè)定后,腳本驅(qū)動開發(fā)軟件會生成一個腳本程序,需要在此腳本中根據(jù)項(xiàng)目的要求和目標(biāo)適當(dāng)增加一些參數(shù)和變量,腳本驅(qū)動的流程如圖2所示。

首先,定義通信所需的通道索引變量、全局變量、中間變量,尤其是一些狀態(tài)變量,執(zhí)行一些設(shè)備初始化操作,如對端口賦初值等。

其次,編寫發(fā)送和接收數(shù)據(jù)的方式。

!ArrayResize(SendByteArr,6) ‘設(shè)定發(fā)送數(shù)組的長度為5

!GetIntChannelValueByName(“KEY1”,AAA1)將觸摸屏上按鍵1的狀態(tài)賦值給中間變量AAA1

!GetIntChannelValueByName(“KEY2”,AAA2)將觸摸屏上按鍵2的狀態(tài)賦值給中間變量AAA2

if AAA1=1 and AAA2=1 then ‘若兩個變量都是1,則不合理,需要將變量重新賦值0

AAA1=0

AAA2=0

!SetSingleChannelValueByName(“KEY1”,AAA1)重置按鍵1的狀態(tài)

!SetSingleChannelValueByName(“KEY2”,AAA2)重置按鍵2的狀態(tài)

endif

SendByteArr[1] = &H69? ?‘發(fā)送幀頭,為十六進(jìn)制69

SendByteArr[2] = &H10? ?‘發(fā)送命令字,為十六進(jìn)制10

SendByteArr[3] = AAA1? ?‘按鍵1的狀態(tài)待發(fā)送

SendByteArr[4] = AAA2? ?‘按鍵2的狀態(tài)待發(fā)送

SendByteArr[5] = &HEE? ?‘發(fā)送幀尾,為十六進(jìn)制EF

nReturn = !SvrByteArraySum(SendByteArr,1,5)求和校驗(yàn)

SendByteArr[6] = nReturn ‘累加和待發(fā)送

'發(fā)送和接收數(shù)據(jù)按如下方式:

!ArrayResize(RecByteArr,8)'設(shè)定接受命令字節(jié)數(shù)組的長度為8

nReturn = !DevWriteAndReadByteArr(SendByteArr,6, RecByteArr, 8, 通訊延時(shí)) '往串口中發(fā)送6個字節(jié),發(fā)送完畢后,再讀取數(shù)據(jù),如果已讀到8個字節(jié),或者通訊延時(shí)內(nèi)尚未取讀完畢,返回。

if nReturn <> 8 then

!SetSingleChannelValueByName("通訊狀態(tài)", 2)

exit

endif

最后,編寫自定義函數(shù),用于接受數(shù)據(jù)的處理分析。

nIndex = 1

!ArrayResize(DataByteArr,8)'存放解析數(shù)據(jù)臨時(shí)字節(jié)數(shù)組的長度為8

TEMP = !SvrByteArraySum(RecByteArr,1,7)'求接受數(shù)組的前7個數(shù)據(jù)的累加和

if TEMP = RecByteArr[8]? then? ?'校驗(yàn)

if RecByteArr[1]= &H68 and RecByteArr[2]= &H01 and RecByteArr[7]= &HFE? then

'判斷幀頭、命令字和幀尾是否正確

while nIndex < 9

DataByteArr[nIndex] = RecByteArr[nIndex]? '將接受數(shù)據(jù)數(shù)組的值保存至解析數(shù)據(jù)數(shù)組

nIndex = nIndex + 1

endwhile

endif

endif

!SetSingleChannelValueByName("LEVEL_H ",DataByteArr[3]) '接受到的有效數(shù)據(jù)寫到對應(yīng)的通道

!SetSingleChannelValueByName("LEVEL_L ",DataByteArr[4])

!SetSingleChannelValueByName(“Pump_IN “,DataByteArr[5])

!SetSingleChannelValueByName(“Pump_OUT “,DataByteArr[6])

if? DataByteArr[3]=0 and DataByteArr[4]=0 then ‘檢測液位傳感器的好壞

TEMP1 = 0 ‘液位傳感器損壞

else

TEMP1 = 1 ‘液位傳感器正常

endif

!SetSingleChannelValueByName(“CHGQ”,TEMP1)? ‘賦值給傳感器檢測通道

nChlIndex = nChlIndex + nIndex ‘設(shè)置通訊標(biāo)志,解析都正確

!SetSingleChannelValueByName(“通訊狀態(tài)”, 0) ‘通訊狀態(tài)正常

在腳本編寫完成后編輯調(diào)試設(shè)備腳本,若沒有問題輸出窗口會提示“設(shè)備編輯檢查通過”,否則需要根據(jù)提示信息進(jìn)行修改。

2.2.6? 腳本驅(qū)動的發(fā)布與使用

發(fā)布腳本驅(qū)動是將與腳本驅(qū)動相關(guān)文件保存在指定的目錄下,以確保可被MCCS組態(tài)軟件調(diào)用。開發(fā)好的腳本驅(qū)動相關(guān)文件包括一個MDR主文件,若驅(qū)動具有幫助還會多一個幫助文件。發(fā)布開發(fā)好的腳本驅(qū)動有以下兩種方法:

(1)將驅(qū)動相關(guān)文件拷貝到“MCGSE\Program\Drivers\用戶定制設(shè)備”文件夾中。

(2)使用設(shè)備管理對話框的安裝功能進(jìn)行安裝,不會拷貝腳本驅(qū)動的幫助文件。

發(fā)布完成后,首先,將腳本驅(qū)動裝載到設(shè)備管理的設(shè)備工具箱中;其次,對串口父設(shè)備進(jìn)行通信參數(shù)設(shè)置,如波特率、COM號等;最后,在父設(shè)備下掛接已經(jīng)發(fā)布安裝的腳本驅(qū)動子設(shè)備,并對設(shè)備通道及其相對應(yīng)的數(shù)據(jù)對象進(jìn)行連接。

3? ? 單片機(jī)程序設(shè)計(jì)與統(tǒng)調(diào)

3.1? 單片機(jī)程序設(shè)計(jì)

本項(xiàng)目采用宏晶公司的增強(qiáng)型8051內(nèi)核的單片機(jī)IAP15F2K61S2作為下位機(jī)處理器,其速度比傳統(tǒng)8051快7~12倍;片內(nèi)有大容量2 048字節(jié)SRAM;不需外部晶振和復(fù)位電路,且可對外輸出時(shí)鐘和低電平復(fù)位信號;具有ISP/IAP功能;超高速雙串口/UART,兩個完全獨(dú)立的高速異步通信端口,可分時(shí)切換當(dāng)5組串口使用;具有硬件看門狗和超強(qiáng)抗干擾功能。

通過串口和上位機(jī)進(jìn)行數(shù)據(jù)交換,IAP15F2K61S2使用1個字節(jié)長度的SCON寄存器來控制通用異步發(fā)送接收寄存器URAT。為了順利接收上位機(jī)接收來的信息,設(shè)置SCON寄存器使UART1工作在MODE1狀態(tài)下,該模式下每一幀數(shù)據(jù)為10位,1個起始位,8個數(shù)據(jù)位,1個停止位,不采用校驗(yàn)位;啟動定時(shí)器1工作在8位自動重載模式下,通過載入TH1和TL1的初始值來設(shè)置波特率,此處使波特率加倍SMOD=1,TH1=TL1=0×BD(晶振頻率11.059 2 MHz)得到9 600的波特率。單片機(jī)串口操作程序流程如圖3所示[6-8]。

3.2? 聯(lián)機(jī)調(diào)試

(1)配置腳本驅(qū)動中的串口參數(shù)。將單片機(jī)水位控制電路板通過串口線與計(jì)算機(jī)連接,在腳本驅(qū)動設(shè)計(jì)界面中根據(jù)設(shè)備管理器的端口設(shè)置串口號以及其他通信格式設(shè)置。

(2)進(jìn)行調(diào)試。在腳本驅(qū)動設(shè)計(jì)界面中選擇“調(diào)試”菜單中的“定時(shí)通道采集”命令進(jìn)行調(diào)試,通過改變液位傳感器的狀態(tài),觀察“LEVEL_H”“LEVEL_L”“Pump_IN”和“Pump_OUT”當(dāng)前值變化情況,檢查修改驅(qū)動腳本程序、參數(shù)設(shè)置以及下位機(jī)程序[9-11]。

4? ? 結(jié)語

本文設(shè)計(jì)的基于MCCS的STC15單片機(jī)驅(qū)動構(gòu)件經(jīng)過實(shí)際運(yùn)行,實(shí)現(xiàn)了上位機(jī)和下位機(jī)的無縫對接,數(shù)據(jù)傳輸高效可靠、運(yùn)行穩(wěn)定、工作效率高。證明了利用昆侖通泰的腳本驅(qū)動開發(fā)工具,用戶可以高效地開發(fā)設(shè)備驅(qū)動,配置簡便、開發(fā)周期短、能夠適應(yīng)各種設(shè)備,該方法為開發(fā)適應(yīng)實(shí)際項(xiàng)目需求的設(shè)備驅(qū)動程序提供了思路,可以廣泛應(yīng)用于工程中的腳本驅(qū)動。

[參考文獻(xiàn)]

[1]許萌,李斌,姚駿.MCGS組態(tài)環(huán)境下的MSP430單片機(jī)驅(qū)動開發(fā)[J].自動化儀表,2017(12):50-53,58.

[2]包建華,張興奎,胡福年.MCGS平臺下51單片機(jī)驅(qū)動構(gòu)件開發(fā)與應(yīng)用[J].自動化儀表,2011(11):35-38.

[3]周杰,林沂杰.基于MCGS的51單片機(jī)驅(qū)動構(gòu)件實(shí)現(xiàn)方法[J].微計(jì)算機(jī)應(yīng)用,2009(11):76-80.

[4]百度文庫.MCGS腳本驅(qū)動開發(fā)工具使用指導(dǎo)手冊[EB/OL].(2019-10-10)[2019-11-20].http://wenku.baidu.c,2019.10.10.

[5]王曉光,鄭萍,馬巧娟,等.基于MCGS的51系列單片機(jī)通用驅(qū)動程序設(shè)計(jì)[J].儀表技術(shù)與傳感器,2010(5):37-40.

[6]劉興華.基于MCGS的煤礦監(jiān)控系統(tǒng)獨(dú)立設(shè)備驅(qū)動構(gòu)件設(shè)計(jì)[J].煤炭技術(shù),2013(1):122-123.

[7]潘崢嶸,張巖,郭凱,等.基于MCGS的C8051F020單片機(jī)驅(qū)動程序的設(shè)計(jì)與應(yīng)用[J].微計(jì)算機(jī)應(yīng)用,2009(2):48-52.

[8]孫秀云.遠(yuǎn)程液位監(jiān)控系統(tǒng)的設(shè)計(jì)[J].德州學(xué)院學(xué)報(bào),2008(6):108-110.

[9]徐宇寶,曹昌勇.基于CAN總線的糧庫溫度和濕度監(jiān)控系統(tǒng)[J].機(jī)械工程與自動化,2008(4):135-136.

[10]桂江華,邵健,潘邈.一種高可靠串行通信協(xié)議[J].電子與封裝,2016(2):40-43,48.

[11]張文明,華祖銀.嵌入式組態(tài)控制技術(shù)[M].北京:中國鐵道出版社,2019.

猜你喜歡
通信
基于數(shù)字化變電站SV報(bào)文通信可靠性問題研究
鐵路光纜運(yùn)營維護(hù)方式研究
多媒體融合通信與平臺通信優(yōu)化方案研究
基于“一級調(diào)度、兩級運(yùn)維”的通信管理體系研究①
對數(shù)字微波通信技術(shù)的研究