嵌入式PLC芯片組的多路模擬量應(yīng)用開發(fā)
2、軟件開發(fā)
嵌入式PLC是基于Cygnal公司的C8051f040芯片開發(fā)的,所以二次程序的開發(fā)使用51匯編語言。開發(fā)選擇的編譯器是KEILC51,因?yàn)樗梢陨晌覀兯枰?HEX文件。內(nèi)核留出了七個(gè)用戶嵌入程序接口,我們只需要充分理解各個(gè)接口的功能就可了進(jìn)行二次開發(fā)了,需要熟悉如下內(nèi)容:a、內(nèi)核功能b、內(nèi)核結(jié)構(gòu)c、內(nèi)核任務(wù)管理d、內(nèi)核存儲(chǔ)空間分配?!?】由于系統(tǒng)軟件中已經(jīng)加入了232通信、485通信和CAN通信的功能,所以16路模擬量PLC的二次驅(qū)動(dòng)軟件的開發(fā)主要集中在模擬量的AD轉(zhuǎn)換和PLC資源區(qū)中AD值的實(shí)時(shí)刷新上。
(1)程序規(guī)劃
T4中斷:完成AD轉(zhuǎn)換和16個(gè)通道的切換程序
USER_SCAN:PLC資源區(qū)中AD值的刷新。
AD轉(zhuǎn)換過程如下:每一通道連續(xù)采樣16次,采樣完后得到累加和,然后啟動(dòng)下一通道的AD轉(zhuǎn)換。
PLC資源區(qū)中AD值的刷新過程如下:在梯形圖掃描周期結(jié)束時(shí)進(jìn)行,把各路AD值的累加和求平均值后放入PLC的資源區(qū)的對(duì)應(yīng)位置處。
(2)程序代碼
INIT_AD:;AD初始化
MOVSFRPAGE,#ADC0_PAGE
MOVREF0CN,#07H;內(nèi)部參考電壓/輸出到VERF
;啟動(dòng)內(nèi)部溫度傳感器
MOVAMX0CF,#00H;單極性輸入
MOVADC0CF,#0B8H;D7——D3=SYSCLK/采樣時(shí)鐘-1
;采樣轉(zhuǎn)換時(shí)鐘=1US
;D2——D0=GAIN
;000GAIN=1
MOVADC0CN,#90H;啟動(dòng)AD采樣
MOVAD_CHANNEL,#00H;AD通道號(hào),初值為0
MOVAD_COUNT,#00H;16次采樣次數(shù)計(jì)數(shù)。初值為0
RET
SAMPLE_AD:;AD采樣開始
MOVSFRPAGE,#ADC0_PAGE;AD控制寄存器頁(yè)
MOVA,AD_CHANNEL;采樣值的累加和是一個(gè)字基地址;為#XAI,偏移地址為AD_CHANNEL
RLA
MOVDPTR,#XAI;XAI存放16次采樣值的累加和
ADDA,DPL;低字節(jié)相加
MOVDPL,A
MOVXA,@DPTR
MOVB,A
MOVA,ADC0L
CLRC
ADDCA,B
MOVX@DPTR,A
INCDPTR;高字節(jié)相加
MOVXA,@DPTR
MOVB,A
MOVA,ADC0H
ANLA,#0FH
ADDCA,B
MOVX@DPTR,A;#XAI中存放格式為低字節(jié)、高字節(jié)
MOVSFRPAGE,#ADC0_PAGE;AD控制寄存器頁(yè)
MOVADC0CN,#090H;啟動(dòng)下次AD采樣
INCAD_COUNT
MOVA,AD_COUNT
CLRC
SUBBA,#16
JNCFILL_XAI_XAD;當(dāng)16次采樣完成后,把XAI中16;個(gè)采樣和(2字節(jié))存放到XAD
RET
評(píng)論