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