嵌入式PLC芯片組實(shí)現(xiàn)kp3-05m06r型運(yùn)動控制器
4.1 主控制器軟件設(shè)計(jì)
主控制器采用嵌入式plc芯片組,完成開關(guān)量輸入輸出、uart0、uart1、can、rs485/232互連和通信功能?;拒浖蚣苡梢韵缕邆€(gè)子程序組成。
init-config:端口初始化程序,完成輸入輸出端口配置,中間變量初始化,啟動spi。
init-start:上電初始化程序,復(fù)位所有輸出口。
init-set:設(shè)置初始化程序,復(fù)位所有輸出口。
init-run:運(yùn)行初始化程序。
step:指令周期掃描程序
tms:2.5ms周期掃描程序,采樣輸入口狀態(tài)、刷新輸出口狀態(tài)、spi通信報(bào)文的發(fā)送和接收。
scan:演算周期掃描程序,輸入口狀態(tài)濾波,spi通信報(bào)文的解讀。
4.2 從控制器軟件設(shè)計(jì)
從控制器采用c8051f330單片機(jī),指令運(yùn)算速度高達(dá)25mips。從控制器對輸入脈沖采樣,接受主控制器發(fā)送的命令并進(jìn)行相應(yīng)的處理,輸入脈沖經(jīng)過分頻后,輸出相應(yīng)頻率的脈沖,并將有關(guān)信息發(fā)送給主站控制器。從控制器的作用相當(dāng)于一個(gè)執(zhí)行機(jī)構(gòu),它接受主控制器的命令執(zhí)行不同的動作,并把執(zhí)行的狀態(tài)反饋給主控制器,主要由以下5個(gè)功能程序組成。
start:上電復(fù)位初始化程序,輸入輸出端口配置,復(fù)位中間變量單元,啟動spi、int0中斷。
int-int0:外部中斷0服務(wù)程序,對輸入脈沖進(jìn)行分頻處理及脈沖插補(bǔ)。
int-spi:spi中斷服務(wù)程序,spi通信報(bào)文的接收和發(fā)送。
int-t3:定時(shí)器t3中斷服務(wù)程序,監(jiān)控spi通信狀態(tài)和主程序執(zhí)行狀態(tài)。
main:主程序,解讀spi通信報(bào)文,完成脈沖點(diǎn)動、定位。
4.3主從控制器的組合設(shè)計(jì)
主、從控制器之間以spi接口連接,spi通訊速率為500kbit/s,因此有利于提高系統(tǒng)的快速性和實(shí)時(shí)性。
主站采用定時(shí)發(fā)送/接收模式,嵌入程序初始化時(shí),啟動spi發(fā)送,定時(shí)時(shí)間到,先接收一字節(jié)數(shù)據(jù),然后發(fā)送下一字節(jié)數(shù)據(jù)。當(dāng)所有報(bào)文發(fā)送完成后,暫停發(fā)送等待主程序處理報(bào)文,報(bào)文處理完后才啟動下一輪發(fā)送。
從站采用中斷接收/發(fā)送模式,進(jìn)入中斷服務(wù)程序后,先接收一字節(jié)數(shù)據(jù),然后發(fā)送一字節(jié)數(shù)據(jù),當(dāng)所有報(bào)文接收完成后,對應(yīng)的有相同字節(jié)的報(bào)文發(fā)送完成。此時(shí)從站停止接收報(bào)文,等待主程序處理接收到的報(bào)文,報(bào)文處理完后,又啟動下一輪報(bào)文接收過程。
報(bào)文結(jié)構(gòu):stx+報(bào)文內(nèi)容+etx+crc。
stx:報(bào)文起始代碼,固定為02h。
報(bào)文內(nèi)容:起始2個(gè)字節(jié)為命令字對應(yīng)的ascii碼,以區(qū)別不同的報(bào)文,后面為報(bào)文實(shí)際 數(shù)據(jù),全部采用ascii碼。
etx:報(bào)文結(jié)束代碼,固定為03h。
crc:校驗(yàn)和,報(bào)文內(nèi)容所有字節(jié)相加后再加etx的數(shù)值,然后轉(zhuǎn)換成ascii碼。
5 應(yīng)用舉例
5.1控制設(shè)備名稱
控制設(shè)備名稱:4套色圓網(wǎng)印花機(jī)控制系統(tǒng)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論