資源描述:
《開關(guān)量輸入輸出通道與順序控制-3(NE)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、工業(yè)系統(tǒng)的驅(qū)動與控制——順序控制工程訓(xùn)練中心§2.1開關(guān)量通道的讀寫控制“PC+采集卡”的控制系統(tǒng)人-機(jī)界面工業(yè)系統(tǒng)機(jī)-機(jī)界面數(shù)據(jù)通道端子板(電氣接口)線接好后,不再改變要改變的是控制流程,如何控制?2《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O§2.1開關(guān)量通道的讀寫控制“PC+采集卡”的控制系統(tǒng)數(shù)據(jù)通道被控對象控制流程或者算法3《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O§2.1開關(guān)量通道的讀寫控制采集卡的工作原理采集卡的操作?寄存器讀寫?端口讀寫基地址BaseBase+3地址偏移量offset寄存器的地
2、址=基地址Base+偏移量offset由所用的寄存器確定由板卡跳線確定DI_REGDO_REGAD_REGDA_REGDI0..15DO0..15AD0..15DA0..1采集卡工業(yè)系統(tǒng)PC總線4《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O§2.1開關(guān)量通道的讀寫控制DI/O通道的工作過程inportb(port)outportb(port,0x15)0x1500010101111101100xF6如果不發(fā)送00010100,1號燈一直亮,必須用outportb重新改變其狀態(tài)00010101信息0V。。。+5
3、V載體5《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O§2.1開關(guān)量通道的讀寫控制控制系統(tǒng)中幾個常用的C語言函數(shù)鍵盤輸入:while(!kbhit()){…}/*如果沒有按下任意鍵繼續(xù)*/while(bioskey(0)&0xFF!=27){…}/*輸入ESC鍵退出循環(huán)*/I/O端口讀寫:inportb(BASEADDR+6);outportb(BASEADDR+13,0x05);延時:delay(milliseconds)延時若干毫秒sleep(seconds)延時若干秒6《工程訓(xùn)練》——開關(guān)量通道的輸入輸出
4、DI/O訓(xùn)練內(nèi)容1:觀察演示程序的DI/O操作訓(xùn)練系統(tǒng)接線示意(P109)6線2線6線7《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O訓(xùn)練內(nèi)容2光電對管遮光控制LED(P110訓(xùn)練(1))8《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O總結(jié):訓(xùn)練內(nèi)容2程序main(){intDI[6],DO[6],I,DI_out,DO_out;for(i=0;i<6;i++)DO[i]=0;DO_out=creat_DO(DO);/*初始化,使紅色LED熄滅*/outportb(BASE_ADDRESS+13,DO_out);
5、clrscr();while(!kbhit()){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);/*獲取光電對管狀態(tài)*/for(i=0;i<6;i++)DO[i]=DI[5-i];DO_out=creat_DO(DO);outportb(BASE_ADDRESS+13,DO_out);/*輸出*/}outportb(BASE_ADDRESS+13,0);/*清零*/}9《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O訓(xùn)練內(nèi)容3脈沖列計(jì)數(shù)(P110訓(xùn)練(2))
6、10《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O訓(xùn)練內(nèi)容2:脈沖計(jì)數(shù)器脈沖的計(jì)數(shù)方法整個脈沖:0?1,1?0看上升沿:0?1看下降沿:1?0一個周期算完成一次遮擋11《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O訓(xùn)練內(nèi)容2:脈沖計(jì)數(shù)器難點(diǎn):多計(jì)數(shù)或少計(jì)數(shù)解決的辦法——覆蓋整個時間段:每個循環(huán)只DI一次,并把本次獲得的值存為下次計(jì)數(shù)判斷使用。使用中斷方式每次循環(huán)DI輸入2次或2次以上將會出現(xiàn)少計(jì)數(shù)12《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/OY訓(xùn)練內(nèi)容3:脈沖計(jì)數(shù)器程序流程圖DI:輸入當(dāng)前的對管狀態(tài)判斷2號光路
7、是否遮斷計(jì)數(shù)器counter=01號光路是否通斷1次(與上次比較)計(jì)數(shù)器counter=counter+1DO輸出counter保存本次的對管狀態(tài)按鍵了么?(結(jié)束指令)NYY結(jié)束輸出結(jié)果N13《工程訓(xùn)練》——開關(guān)量通道的輸入輸出DI/O..main(){intDI[6],DI_out,I;i=0;clrscr();printf("TypeAnyKeytoEnd");while(!kbhit()){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);/*if
8、(now_di[2]==0)i=0;*//*清零*/while(DI[1]==0)/*判斷光1是否被遮擋*/{if(DI[0]==1){DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out);if(DI[0]==0)i++;/*光0被遮擋,計(jì)數(shù)器加1*/}DI_out=inportb(BASE_ADDRESS+6);creat_DI(DI,DI_out)