目前,迪文線控器產(chǎn)品(2.8寸、3.5寸、4.3寸和7寸)均已穩(wěn)定在售,下面我們就迪文線控器的開發(fā)做一些基本介紹。
1UI制作
1.1 軟件介紹
迪文提供了UI人機交互界面設(shè)計軟件DGUS_V7381,客戶通過該軟件平臺能輕松方便的制作和修改UI界面,具體使用見2.2。
1.2 軟件使用
參考DGUS軟件的視頻教程,開發(fā)出滿足需求的交互UI。
1.3 地址規(guī)劃
1.3.1 迪文DGUSII開發(fā)平臺,所有的功能都是通過變量接口進行的。0000-0FFF變量接口為系統(tǒng)功能接口,(可查閱相關(guān)的開發(fā)指南)8000H-FFFF作為庫和圖片等的緩沖區(qū)。
1.3.2 查閱T5UID1的開發(fā)指南,T5UID1平臺有128Kbytes數(shù)據(jù)變量空間,而OS系統(tǒng)中每個地址是Word類型,所以總共地址空間是0-0xFFFF。其中0x0100-0x0FFF變量存儲器空間被系統(tǒng)保留使用,0x1000-0xFFFF變量存儲空間用戶可以自由使用。
另外,產(chǎn)品中會提供一些基本的庫,所以規(guī)劃了 0x8000-0xFFFF空間被庫提前占用,所以實際編程中應(yīng)用程序可用的空間為0x1000-0x7FFF。
由于在DGUS設(shè)計中,UI中的很多控件會綁定一個數(shù)據(jù)變量,而且為了便于DCS系統(tǒng)設(shè)計,最好需要把輸入數(shù)據(jù)和輸出數(shù)據(jù)以及中間數(shù)據(jù)進行規(guī)劃。
比如新風(fēng)應(yīng)用中,把傳感器等的數(shù)據(jù)都連續(xù)存放,把繼電器,風(fēng)機速度輸出等變量連續(xù)存放,通過modbus總線就可以通過塊讀(0x03)和塊寫(0x10)兩個指令完成數(shù)據(jù)交換。
1.4 通訊協(xié)議
迪文屏支持以下三種協(xié)議情況切換協(xié)議見“3庫調(diào)用” 。
1)支持迪文命令接口82H\83H,通過這兩個命令接口實現(xiàn)對內(nèi)部變量的讀和寫。
2)支持Modbus_slave模式,86盒工作在modbusslave模式,通過該模式,外部實現(xiàn)對內(nèi)部變量的讀和寫(modbus命令只支持 03H,10H讀寫)。
3)支持modbus_Master模式,該模式需要編寫迪文OS,利用迪文屏上的CPU,實現(xiàn)對外部的控制。
1.5SD卡燒錄
將Lib文件夾下的 00.lib、01.lib、T5OS_VXX.bin三個文件,以及上面說的所需要的對應(yīng)工作模式下的DWINOS_main.bin文件和UI工程文件,拷貝到SD卡的 DWIN_SET目錄下,然后插卡進行升級。升級一般是先上電,再插升級的SD卡,會出現(xiàn)藍色屏幕提示升級過程,升級完后拔卡重新上電即可。以后再切換模式,只需升級對應(yīng)的DWINOS_main.bin文件即可。
2、OS編寫入門
2.1 軟件介紹
2.2 關(guān)于DWIN_OS
DWIN_OS平臺采用類似匯編程序的編寫規(guī)范,在DGUS穩(wěn)定的GUI平臺下,方便用戶針對自己的特殊需求快速、穩(wěn)定的進行二次開發(fā)。
DWINOS的常見應(yīng)用是解析用戶的數(shù)據(jù)協(xié)議,數(shù)據(jù)處理。T5的OS性能強大,運算速度快。OS是用一套特殊的匯編語言指令集實現(xiàn)的,指令集請參考《基于T5的DWIN_OS開發(fā)指南》和T5UID1應(yīng)用指南。編譯器請使用迪文的 T5_OS_BUILDER2.0.6.0 及以后版本如下圖OSBuild3.0.2.3。
該軟件的操作部分并不復(fù)雜,打開OS軟件,上面的三個圖注意紅色標(biāo)注:
1、保存會保存為asm文件;
2、編譯后如果沒有錯誤左下角會出現(xiàn)BuildOK!編譯后會生成DWINOS_xxx.bin文件;
實際開發(fā)中,軟件基本用到的三個按鈕就能完成開發(fā),其他的功能可以不用。OS部分詳細教程參考《基于T5_OS匯編指令詳解》。
3、庫調(diào)用
為了方便和簡化用戶代碼量把一些已經(jīng)寫好的功能模塊和通訊協(xié)議進行封裝后加密生成的文件就是庫。庫文件的存在,一定程度上降低了用戶代碼量,代碼量較大時使用庫則方便用戶程序的簡化。迪文現(xiàn)在的庫文件可以方便開發(fā)者直接調(diào)用,也可根據(jù)自身需求寫功能塊完成。
3.1 基本庫介紹
基本庫功能模塊介紹
1)基本定時
地址定義如下:
VP_SYS_TIMER_ACC EQU E200H; 定時累加器,不要改動
VP_SYS_TIMER_SEC_PULSE EQU E201H;基本秒脈沖
VP_SYS_TIMER_SEC_PULSE_SLOTEQU E202H;高字節(jié)表示時隙0-7,低字節(jié)每125ms會變1,脈沖形式;(高字節(jié)為2并且低字節(jié)為1同時滿足時,可以認為秒信號A到來;高字節(jié)為3并且低字節(jié)為1同時滿足,也是一個秒信號B到來,但A、B兩個秒信號差125ms。)
VP_SYS_TIMER_MM_ACC EQU E203H ;分鐘定時累加器,不要改動
VP_SYS_TIMER_MM_PULSE EQU E204H ;分鐘定時脈沖,每1分鐘會變1一次
2)RTC(軟件RTC)
0xF430 - 0xF433 設(shè)置時鐘時間 D7:0x5A表示有效,其余值無效,設(shè)置成功后自動清零;D6-D0: yy:mm:dd:ww:hh:mm:ss hex碼
RTC時間的讀取,在OS中可以讀取,在T5UID1開發(fā)指南中,可以查到接口地址。
在UI上顯示時鐘,只需將時鐘控件放到頁面上就可以了。
如果需要設(shè)置時鐘,接口在0xF430-0xF433中,按要求寫入接口就可以了。
注意86盒的相關(guān)應(yīng)用設(shè)置時鐘接口在00.lib庫里實現(xiàn)的,并不是T5UID1中實現(xiàn)的,所以不能用T5UID1開發(fā)指南的設(shè)置RTC接口。
注:此為軟件RTC,如存在硬件RTC,需0xF435地址寫0x005B,屏蔽掉軟件RTC。
3)modbus的兩種模式
485modbus_master模式
這種模式,線控器是主控,控制邏輯需要OS編寫。只實現(xiàn)了modbus-master的0x03和0x10指令,其余沒有實現(xiàn)。
需要對MODBUS進行操作的話,只需配置相應(yīng)的結(jié)構(gòu)體即可。
結(jié)構(gòu)體定義見EA10H地址(上表):
通過查看示例代碼,程序最后會有結(jié)構(gòu)體的定義:
MODBUS_STRUCT_TABLE:DB 5AH, 01H, 03H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H,00H, 00H, 00H, 00H, 00H, 5AH, 01H, 10H, 08H, 02H, 00H,00H, 00H, 00H, 00H, 40H, 08H, 00H, 08H, 00H, 00H
實現(xiàn)了向01從機地址讀和寫的過程。
第一條:5AH,01H, 03H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H, 00H, 00H, 00H, 00H,00H
讀指令,向01從機地址讀,長度8words,最長等待從機響應(yīng)時間為 512ms(02H,00H),從機的寄存器超始地址是0000H,讀到本地起始地址是 4000H。
第二條:5AH,01H, 10H, 08H, 02H, 00H, 00H, 00H, 00H, 00H, 40H, 08H, 00H, 08H, 00H,00H
寫指令,向01從機地址寫,長度8words,最長等待從機響應(yīng)時間為512ms,將本地起始地址4008H處寫入從機起始地址0008H。
如果電腦上有USB轉(zhuǎn)485功能,可以通過串口助手看到modbus協(xié)議數(shù)據(jù)。
485modbus_slave模式
將EA00H地址寫為 5AA5H,即可將485接口配置為slave模式。只支持 03H,10H指令。
外部485主機可以通過以上兩條讀寫指令,讀寫線控器內(nèi)部的寄存器。
3.2 如何使用庫文件
線控器一般會將一些功能塊進行封裝,下面就對庫中modbus協(xié)議調(diào)用進行講解。
1)首先把NORFLASH的程序轉(zhuǎn)入DGUS變量地址(例子中是將0x000000開始的4KW(8KB)程序數(shù)據(jù)轉(zhuǎn)入DGUS的0x8000起的地方,每個程序庫是4KB,因此緩存了2個庫)。然后通過CONFIG03,80H,00H將進行LIB庫加載,把0號LIB庫程序數(shù)據(jù)加載到原來的OS程序0x1000開始的位置(也就是我們正常寫的OS第一行ORG1000H起的位置),然后CALL0(CALL0x0000),來運行一次LIB中的程序。
運行一遍之后,正常0x1000開始的程序又會自動覆蓋掉加載的LIB庫程序,開始正常工作。
因此,一般在MAIN主循環(huán)里,需要寫CONFIG和CALL0,以使得每次LIB庫程序都會執(zhí)行一次。
2)模式04,將OS編譯的庫程序bin文件(庫程序開頭寫上0RGXXXXH,這個XXXXH要比正常OS編譯bin的大小更靠后,以避免沖突正常OS程序空間里的內(nèi)容),修改后綴為.LIB,下載到NORFLASH同前03模式。
CONFIG加載時,需要循環(huán)8次將1個完整的4KB的程序數(shù)據(jù)加載到(由于該指令D1D0都只有1個字節(jié),所以規(guī)定了D1和D0為地址高字節(jié),后面默認帶低字節(jié)的0x00地址)
CONFIG加載之后,使用CALLXXXXH 來調(diào)用執(zhí)行一次這部分程序。
模式04中相當(dāng)于可以在32KB的OS程序代碼空間里,任意替換一部分程序,并且支持中斷。
3)82H/83H,modbus_master,modbus_slave三種模式切換,打開main.ASM文件切換modbus主從機模式如下圖。82H/83H指令屏幕可以自動識別,不需要切換操作。
3.3 OS程序空間擴大
若開發(fā)者編寫的os超過32kb則需要加載庫文件。
T5目前有兩種主流方法將OS程序空間擴大:
a.加載加密了的LIB程序庫文件,在OS主程序里可以不停的更換需要調(diào)用的多個LIB文件(LIB庫程序的方法不能中斷)。
b.加載不加密的OS文件(可以用LIB到NORFLASH,速度比用字庫加載到NANDFLASH的快)
用OS的CONFIG指令的03或04模式實現(xiàn),02模式無效不能用請注意。
3.422號文件初始化說明
22文件可以用來配置modbus,可以減少部分代碼量。
(1)首先請確保T5屏幕系統(tǒng)配置值為“上電加載22號文件初始化”;
(2)此版程序基本功能與DGUS屏的MDOBUS主從機基本一致,但22號文件的參數(shù)配置地址改為了0x1D400~0x1FFFF,對映T5變量空間中的最后8KW地址0xEA00~0xFFFF;
(3)指令等待時間參數(shù)的設(shè)置范圍與波特率以及MODBUS指令長度有關(guān),默認115200bps下,建議最小設(shè)置為20mS;(若不設(shè)置此參數(shù),則程序以默認值60mS運行);
(4)如下圖所示,圖1為Modbus主機模式下的22號文件配置參考,0x1c000開始的16字節(jié)內(nèi)容為接口參數(shù);指令配置范圍0x1D410~0x1ffff,最多32條指令,兩條指令之之間地址需連續(xù);
圖2為Modbus從機模式下的22號文件配置參考,僅配置0x1D400開始的16個字節(jié)即可。
主機模式:
從機模式:
這些功能模塊了解上手后,可以更快捷的進行開發(fā)。
了解更多講解信息,可通過此鏈接查看相關(guān)教學(xué)視頻:
https://pan.baidu.com/s/1dF1yG05
作者/苗露露