999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于MCGS的STC15單片機驅動構件開發

2019-02-07 05:37:29繆建華韓穎
無線互聯科技 2019年22期

繆建華 韓穎

摘? ?要:MCGS組態軟件提供了一種腳本驅動開發工具,用戶使用該工具可便捷開發滿足項目需求的驅動構件。腳本驅動開發工具包含大量的標準函數,能充分滿足用戶需求。文章基于MCGS的STC15單片機驅動構件開發,根據水位監控系統的實際要求設計,首先確定通信協議,再配置設備屬性、設備通道、編寫設備命令與編輯調試,最后通過驅動構件的發布與應用,實現設備驅動構件的開發。

關鍵詞:MCGS組態軟件;STC15單片機;腳本驅動;通信

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

MCGS環境下的STC15單片機驅動構件的開發,以智能水位控制項目為背景,通過MCGS腳本驅動開發工具進行腳本程序的設計。

1? ? 智能水位控制項目人機交互通信簡介

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

2? ? MCGS腳本驅動開發

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

2.1? 制定通信協議

通信協議是指通信雙方為了達到某種通信目標所必須遵守的規范和準則。通信規則:上位機定時通過串口發送命令給下位機,主要是將觸摸屏中按鈕的當前狀態發送給下位機,下位機在接收到命令后立即將當前采集的水位、水泵等狀態信息回送給上位機。

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

通信過程中,雙方規定通信協議,當下位機收到上位機的數據并通過校驗后,將下位機采集的數據發送給主機,并執行上位機傳來的命令。通信數據的格式:幀頭、命令字、數據體字節、幀尾及校驗累加和,如表1所示。

(1)幀頭,是通信幀的開始標志,可判斷本幀是否屬于通信協議;本項目中,幀頭占1 B。當幀頭為0×69時,表示上位機發送數據給下位機;當幀頭為0×68時,表示下位機發送數據到上位機。

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

(3)數據,指所傳輸數據的內容,本項目中傳輸的數據較少,沒有定義數據長度。

(4)幀尾,為該通信幀的結束標志,占1 B。當為 0×EE時,表示上位機發送結束;當為0×FE時,表示下位機發送結束。

(5)校驗,采用累加求和校驗,保證數據傳輸的正確率。

2.2? 設計腳本驅動程序

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

完成上述步驟后,對腳本程序進行檢査調試,生成用于發布與使用的MDR文件。

2.2.1? 配置設備屬性

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

2.2.2? 配置設備通道

設備通道是腳本驅動跟實時數據對象之間的接口。配置設備通道指設置腳本驅動所需的內部變量,也就是腳本驅動和下位機通信涉及的數據變量。根據需求,配置設備通道如表2所示。

當腳本驅動添加到組態軟件時,通過串口通道驅動程序,將設備通道與組態軟件中的實時數據庫連接,實現數據的傳輸。

2.2.3? 通信幀配置

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

在通信幀結構確定后,進行命令信息設置,發送命令為:幀頭“69”、命令字“10”、數據體000、數據體001、幀尾“EE”以及“校驗累加和”;接受命令為:幀頭“68”、命令字“01”、數據體000、數據體001、數據體002、數據體003、幀尾“FE”以及“校驗累加和”。在命令信息設置中進行幀數據體設置時,數據值設置中數據長度設置為1數據單位,幀頭、命令體、幀尾數據內容根據協議設定,其他設置為“00”;幀頭、命令體、數據體、幀尾選中“是否參與校驗”,校驗方式設置為“求和校驗”。

2.2.4? 設備命令

設備命令是指用來對組態工程進行控制的函數,是腳本驅動唯一的動態控制方法,項目中應用的主要設備命令如表3所示。

通過調用“!DevWriteAndReadByteArr”函數,將觸摸屏上的按鍵狀態“KEY0”和“KEY1”兩個設備通道的值發送給控制電路板,并接受“LEVEL_H”“LEVEL_L”“Pump_IN”和“Pump_OUT”4個設備通道的值,保存到對應的數組中,通過編寫函數來設置觸摸屏顯示狀態和控制板的運行。

2.2.5? 編寫函數

在通道和通信幀結構設定后,腳本驅動開發軟件會生成一個腳本程序,需要在此腳本中根據項目的要求和目標適當增加一些參數和變量,腳本驅動的流程如圖2所示。

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

其次,編寫發送和接收數據的方式。

!ArrayResize(SendByteArr,6) ‘設定發送數組的長度為5

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

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

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

AAA1=0

AAA2=0

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

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

endif

SendByteArr[1] = &H69? ?‘發送幀頭,為十六進制69

SendByteArr[2] = &H10? ?‘發送命令字,為十六進制10

SendByteArr[3] = AAA1? ?‘按鍵1的狀態待發送

SendByteArr[4] = AAA2? ?‘按鍵2的狀態待發送

SendByteArr[5] = &HEE? ?‘發送幀尾,為十六進制EF

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

SendByteArr[6] = nReturn ‘累加和待發送

'發送和接收數據按如下方式:

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

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

if nReturn <> 8 then

!SetSingleChannelValueByName("通訊狀態", 2)

exit

endif

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

nIndex = 1

!ArrayResize(DataByteArr,8)'存放解析數據臨時字節數組的長度為8

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

if TEMP = RecByteArr[8]? then? ?'校驗

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

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

while nIndex < 9

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

nIndex = nIndex + 1

endwhile

endif

endif

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

!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 ‘設置通訊標志,解析都正確

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

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

2.2.6? 腳本驅動的發布與使用

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

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

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

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

3? ? 單片機程序設計與統調

3.1? 單片機程序設計

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

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

3.2? 聯機調試

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

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

4? ? 結語

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

[參考文獻]

[1]許萌,李斌,姚駿.MCGS組態環境下的MSP430單片機驅動開發[J].自動化儀表,2017(12):50-53,58.

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

[3]周杰,林沂杰.基于MCGS的51單片機驅動構件實現方法[J].微計算機應用,2009(11):76-80.

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

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

[6]劉興華.基于MCGS的煤礦監控系統獨立設備驅動構件設計[J].煤炭技術,2013(1):122-123.

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

[8]孫秀云.遠程液位監控系統的設計[J].德州學院學報,2008(6):108-110.

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

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

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

主站蜘蛛池模板: 国产午夜无码片在线观看网站| 男人的天堂久久精品激情| 2021精品国产自在现线看| 亚洲第一黄片大全| 国产亚洲精品97在线观看| 又粗又大又爽又紧免费视频| 国产午夜一级毛片| 中国一级毛片免费观看| 一区二区欧美日韩高清免费| 亚洲va视频| 国产主播福利在线观看| 77777亚洲午夜久久多人| 国产成人综合久久精品尤物| 国产乱人视频免费观看| 久久免费成人| 成人在线视频一区| 88av在线| 无码精品福利一区二区三区| 中文字幕一区二区视频| www.精品国产| 国产精品午夜福利麻豆| 91在线一9|永久视频在线| 国产精品无码久久久久AV| 青草午夜精品视频在线观看| 久久久久人妻精品一区三寸蜜桃| 又爽又大又光又色的午夜视频| 国产精品亚洲精品爽爽| 99中文字幕亚洲一区二区| 伊人久久久大香线蕉综合直播| 四虎永久免费地址| 亚洲国产午夜精华无码福利| 国产成人凹凸视频在线| 国产一二三区在线| 久久美女精品国产精品亚洲| 2020国产精品视频| 69视频国产| 亚洲精品午夜无码电影网| 日本爱爱精品一区二区| lhav亚洲精品| 精品成人免费自拍视频| 午夜精品久久久久久久无码软件 | 视频二区中文无码| 男人天堂亚洲天堂| 国产成人无码AV在线播放动漫 | 亚洲天堂网在线播放| 久草性视频| 久久无码高潮喷水| 91国语视频| 國產尤物AV尤物在線觀看| P尤物久久99国产综合精品| 久久中文电影| 国产成人喷潮在线观看| 亚洲无码精彩视频在线观看| 日韩无码真实干出血视频| 亚洲一区二区三区国产精品| 国模私拍一区二区| 久久精品无码一区二区日韩免费| YW尤物AV无码国产在线观看| 亚洲欧美色中文字幕| 国产精品99r8在线观看| 欧美国产菊爆免费观看 | 成人无码一区二区三区视频在线观看| 亚洲欧美自拍一区| 国产在线精品香蕉麻豆| 欧美日本中文| 色婷婷亚洲综合五月| 国产精品毛片一区视频播| 久久一色本道亚洲| 农村乱人伦一区二区| 亚洲水蜜桃久久综合网站| 99精品在线看| 日韩成人高清无码| 在线观看国产小视频| 国产美女叼嘿视频免费看| 18禁不卡免费网站| 久久无码免费束人妻| 国产美女叼嘿视频免费看| 91成人在线免费观看| 亚洲久悠悠色悠在线播放| 欧美精品亚洲二区| 91九色国产porny| 波多野结衣中文字幕一区|