開(kāi)發(fā)主要分為以下6個(gè)步驟:
1、分析通訊協(xié)議 需要確定數(shù)據(jù)包的格式,即驅(qū)動(dòng)程序是接受怎么樣的數(shù)據(jù),怎么檢驗(yàn)數(shù)據(jù),并把它傳給組態(tài)王,組態(tài)王又怎么根據(jù)得到的數(shù)據(jù)去解析各變量。如可以確定協(xié)議如下的類型 2、制定驅(qū)動(dòng)規(guī)格 主要包括三部分: 定義設(shè)備選擇(在組態(tài)王設(shè)備列表里面怎么找到這個(gè)設(shè)別)、 設(shè)備地址(設(shè)備地址的范圍,在接口程序中有檢測(cè))、 寄存器列表說(shuō)明(是接口函數(shù)主要傳遞的數(shù)據(jù),由下位機(jī)采集傳輸給組態(tài)王,也可由組態(tài)王發(fā)送到下位機(jī))如下為西門子S700的寄存器列表說(shuō)明 3、編寫(xiě)代碼 3.0提供了驅(qū)動(dòng)的框架,包括數(shù)據(jù)、類和函數(shù)的定義,主要需要修改接口函數(shù)部分,以使得驅(qū)動(dòng)和下位機(jī)、通信協(xié)議匹配。 主要的接口函數(shù)有以下幾個(gè): 1、StrToDevAddr:將字符串轉(zhuǎn)換為設(shè)備地址,傳遞給組態(tài)王 2、GetRegisters:確定寄存器的名字和個(gè)數(shù);編程時(shí)需要在這里定義好設(shè)備的寄存器 3、ConvertUserConfigToVar:將用戶配置的字符串轉(zhuǎn)化為組態(tài)王的結(jié)構(gòu) 4、AddVarToPacket:確定變量類型,打包(首先接受變量,其次打包傳給組態(tài)王) 5、ProcessPacket2:根據(jù)包的狀態(tài)信息進(jìn)行處理,主要有數(shù)據(jù)的讀入,物理傳送和傳遞給組態(tài)王,是編程時(shí)需要重點(diǎn)編寫(xiě)的地方 4、添加設(shè)備列表 驅(qū)動(dòng)程序編譯通過(guò)之后形成的是.dll的文件,需要通過(guò)deaedit程序生成des文件,再通過(guò)驅(qū)動(dòng)安裝程序安裝到組態(tài)王中,這樣驅(qū)動(dòng)才會(huì)顯示到設(shè)備列表中;在此也可直接用設(shè)備列表維護(hù)工具“Devman.exe”來(lái)維護(hù)設(shè)備列表文件Devlst.dat,這個(gè)工具可在kingviewdriver目錄中找到。 5、開(kāi)發(fā)態(tài)測(cè)試 即在串口沒(méi)有實(shí)際的工作之下,看到在添加設(shè)備和設(shè)置數(shù)據(jù)類型時(shí)實(shí)際調(diào)用的接口程序 6、運(yùn)行態(tài)測(cè)試 可以采用虛擬串口或者實(shí)際串口調(diào)試,設(shè)備真實(shí)安裝到了計(jì)算機(jī)上,通過(guò)設(shè)置斷點(diǎn)可以檢測(cè)到組態(tài)王運(yùn)行時(shí)檢測(cè)到的數(shù)據(jù),可以看到主要通過(guò)ProcessPacket2的函數(shù)來(lái)傳遞數(shù)據(jù)。 |
|