最近有一些學(xué)員問到高速計(jì)數(shù)器的問題,所以今天來看一個(gè)程序案例應(yīng)用吧,,對(duì)這個(gè)案例,,我們以兩種方法來實(shí)現(xiàn)它。通過對(duì)高速計(jì)數(shù)器應(yīng)用的練習(xí),,來更好的掌握高速計(jì)數(shù)器的內(nèi)容,。 1、用比較指令來實(shí)現(xiàn)正反轉(zhuǎn)控制,,按下啟動(dòng)按鈕I0.3,,Q0.0輸出,電機(jī)正轉(zhuǎn),,高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,過5秒后Q0.1輸出,電機(jī)反轉(zhuǎn),,計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,過5s后又開始電機(jī)的正轉(zhuǎn),如此循環(huán),。 主程序: 子程序: 以上的程序中,,首先做一個(gè)高速計(jì)數(shù)器初始化的子程序,首先是定義控制字節(jié),,送16#F8到SMB37,,定義為加計(jì)數(shù)更新當(dāng)前值,這里寫入初始值為0和預(yù)設(shè)值為50,,定義的是高速計(jì)數(shù)器HSC0和HSC模式1,,然后激活高速計(jì)數(shù)器,。 因?yàn)榭刂埔笫前聪聠?dòng)按鈕I0.3,,Q0.0輸出,,電機(jī)正轉(zhuǎn)。首先就做個(gè)起保停程序,,I0.3啟動(dòng)串聯(lián)I0.4停止,,來驅(qū)動(dòng)輸出Q0.0并做Q0.0的自鎖,同時(shí)做一個(gè)用I0.3的上升沿來調(diào)用高速計(jì)數(shù)器初始化子程序,,注意這里的起保停是有做正反轉(zhuǎn)的互鎖的,。然后再用Q0.0常開觸點(diǎn)串聯(lián)一個(gè)HC0大于等于SMD42的比較指令來輸出M0.0,并把M0.0的常閉觸點(diǎn)串聯(lián)在起保停程序中,,作為高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,。 電機(jī)停止過5秒后Q0.1輸出,電機(jī)反轉(zhuǎn),,那么我們就用M0.0來置位M0.1,,再用M0.1常開觸點(diǎn)來驅(qū)動(dòng)來驅(qū)動(dòng)定時(shí)器T37延時(shí)5秒,并用T37常開觸點(diǎn)來驅(qū)動(dòng)復(fù)位M0.1,,這里是為了讓定時(shí)器定時(shí)時(shí)間到時(shí)復(fù)位定時(shí)器,。然后再用T37常開觸點(diǎn)來驅(qū)動(dòng)輸出Q0.1并做Q0.1的自鎖,同時(shí)也用T37的上升沿來調(diào)用高速計(jì)數(shù)器初始子程序,。然后再用Q0.1常開觸點(diǎn)串聯(lián)一個(gè)HC0大于等于SMD42的比較指令來輸出M0.2,,并把M0.2的常閉觸點(diǎn)串聯(lián)在起保停程序中,作為高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,。 電機(jī)停止過5s后又開始電機(jī)的正轉(zhuǎn),,那么我們就用M0.2來置位M0.3,再用M0.3常開觸點(diǎn)來驅(qū)動(dòng)來驅(qū)動(dòng)定時(shí)器T38延時(shí)5秒,,并用T38常開觸點(diǎn)來驅(qū)動(dòng)復(fù)位M0.3,,這里也是為了讓定時(shí)器定時(shí)時(shí)間到時(shí)復(fù)位定時(shí)器。同時(shí)我們用T38常開觸點(diǎn)并聯(lián)在電機(jī)正轉(zhuǎn)的控制程序上,,這樣可以實(shí)現(xiàn)循環(huán),。 2、用中斷來實(shí)現(xiàn)正反轉(zhuǎn)控制,,按下啟動(dòng)按鈕I0.3,,Q0.0輸出,電機(jī)正轉(zhuǎn),,高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,過5秒后Q0.1輸出,電機(jī)反轉(zhuǎn),,計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,過5s后又開始電機(jī)的正轉(zhuǎn),如此循環(huán),。 主程序: 子程序:
中斷程序: 以上的程序中,,首先做一個(gè)高速計(jì)數(shù)器初始化的子程序,,首先是定義控制字節(jié),送16#F8到SMB37,,定義為加計(jì)數(shù)更新當(dāng)前值,,這里寫入初始值為0和預(yù)設(shè)值為50,定義的是高速計(jì)數(shù)器HSC0和HSC模式1,,然后激活高速計(jì)數(shù)器,,還做了高速計(jì)數(shù)器中斷,建立中斷程序0和中斷事件12的中斷連接,,并全局允許中斷,。 在主程序中,用SM0.1的上升沿調(diào)用高速計(jì)數(shù)器初始化子程序,,因?yàn)榭刂埔笫前聪聠?dòng)按鈕I0.3,,Q0.0輸出,電機(jī)正轉(zhuǎn),,就用I0.3常開觸點(diǎn)來置位Q0.0,,并用I0.3的上升沿激活高速計(jì)數(shù)器??刂七€要求當(dāng)高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,那么當(dāng)計(jì)數(shù)當(dāng)前值等于預(yù)設(shè)值50時(shí)就進(jìn)入中斷程序去執(zhí)行,我們就可以在中斷程序中編寫用Q0.0常開觸點(diǎn)串聯(lián)Q0.1常閉觸點(diǎn)來復(fù)位Q0.0并置位M0.0,,那么當(dāng)當(dāng)前值等于預(yù)設(shè)值時(shí)復(fù)位Q0.0電機(jī)停止,,并置位M0.0,然后又回到主程序進(jìn)行執(zhí)行,。 電機(jī)停止過5秒后Q0.1輸出,,電機(jī)反轉(zhuǎn),在主程序中用M0.0常開觸點(diǎn)驅(qū)動(dòng)定時(shí)器T37延時(shí)5秒,,并用T37常開觸點(diǎn)來復(fù)位M0.0復(fù)位定時(shí)器和置位Q0.1,,并用T37的上升沿激活高速計(jì)數(shù)器。當(dāng)高速計(jì)數(shù)器計(jì)到50個(gè)脈沖后電機(jī)停止,,那么當(dāng)計(jì)數(shù)當(dāng)前值等于預(yù)設(shè)值50時(shí)就進(jìn)入中斷程序去執(zhí)行,,我們就可以在中斷程序中編寫用Q0.1常開觸點(diǎn)串聯(lián)Q0.0常閉觸點(diǎn)來復(fù)位Q0.1并置位M0.2,那么當(dāng)當(dāng)前值等于預(yù)設(shè)值時(shí)復(fù)位Q0.1電機(jī)停止,,并置位M0.2,,然后又回到主程序進(jìn)行執(zhí)行。 電機(jī)停止過5s后又開始電機(jī)的正轉(zhuǎn),,那么我們就用M0.2來驅(qū)動(dòng)來驅(qū)動(dòng)定時(shí)器T38延時(shí)5秒,,并用T38常開觸點(diǎn)來驅(qū)動(dòng)復(fù)位M0.2,這里也是為了讓定時(shí)器定時(shí)時(shí)間到時(shí)復(fù)位定時(shí)器,。同時(shí)我們用T38常開觸點(diǎn)并聯(lián)在電機(jī)正轉(zhuǎn)的控制程序上,,這樣可以實(shí)現(xiàn)循環(huán),。 那么以上就是用了兩種方法來實(shí)現(xiàn)正反轉(zhuǎn)的控制,利用中斷的方法可能會(huì)難理解一下,,但是其實(shí)分析清楚執(zhí)行過程也是不難的,對(duì)嗎,。 作者:蔡慧滎 |
|