在PLC編程中是否可多次調(diào)用同一個(gè)子程序?yàn)槭裁矗?/h2>
1.反復(fù)調(diào)用子程序會(huì)對(duì)定時(shí)器和計(jì)數(shù)器產(chǎn)生影響,定時(shí)器會(huì)一直響應(yīng)最近的調(diào)用。計(jì)數(shù)器的作用是累加或減去每次調(diào)用的邏輯運(yùn)算。
2.對(duì)于200來(lái)說(shuō),定時(shí)器和計(jì)數(shù)器不能做成接口函數(shù),但是可以做成FB類型的自變量函數(shù)調(diào)用。
3.S7-200PLC的定時(shí)器是一個(gè)增量式定時(shí)器,用來(lái)實(shí)現(xiàn)時(shí)間控制,可以按工作模式和時(shí)間基準(zhǔn)(時(shí)基)分類,也叫定時(shí)精度和分辨率。1)工作模式根據(jù)工作模式的不同,定時(shí)器分為三種:上電延時(shí)型(TON)、帶記憶的上電延時(shí)型(TONR)和斷電延時(shí)型(TOF),我們要根據(jù)實(shí)際需要來(lái)選擇。2)時(shí)基標(biāo)準(zhǔn)根據(jù)時(shí)基標(biāo)準(zhǔn),定時(shí)器可分為1ms.10ms.100ms3三種不同的時(shí)基標(biāo)準(zhǔn),計(jì)時(shí)精度、計(jì)時(shí)范圍、定時(shí)器刷新都不一樣,使用時(shí)要注意它們之間的區(qū)別。3)定時(shí)器的工作和類型當(dāng)TONenabled端子輸入有效時(shí),定時(shí)器開始計(jì)數(shù),電流值從0開始遞增。當(dāng)大于等于預(yù)設(shè)值時(shí),定時(shí)器輸出狀態(tài)位置1(輸出接點(diǎn)有效),當(dāng)前值最大值為32767。當(dāng)使能端子無(wú)效時(shí),定時(shí)器復(fù)位(當(dāng)前值被清除,輸出狀態(tài)位置為0)。當(dāng)帶記憶的TONR的使能端(in)輸入有效時(shí),定時(shí)器開始計(jì)數(shù),電流值增加。當(dāng)當(dāng)前值大于或等于預(yù)設(shè)值(PT)時(shí),輸出狀態(tài)位置設(shè)置為1。當(dāng)使能端輸入無(wú)效時(shí),保持當(dāng)前值,當(dāng)使能端再次接通時(shí),定時(shí)器在原存儲(chǔ)值的基礎(chǔ)上遞增。帶記憶的通電延時(shí)定時(shí)器使用線圈的復(fù)位命令(R)進(jìn)入復(fù)位操作。當(dāng)復(fù)位線圈有效時(shí),定時(shí)器的當(dāng)前值被清除,輸出狀態(tài)位置為0。當(dāng)斷電延遲(TOF)使能引腳(IN)輸入有效時(shí),定時(shí)器輸出狀態(tài)位立即置1,當(dāng)前值復(fù)位。當(dāng)使能端子斷開時(shí),定時(shí)器開始計(jì)數(shù),電流值從0開始增加。當(dāng)當(dāng)前值達(dá)到預(yù)設(shè)值時(shí),定時(shí)器狀態(tài)位復(fù)位為0,定時(shí)器停止計(jì)數(shù),保持當(dāng)前值。
4.西門子S7-200PLC共有255個(gè)計(jì)數(shù)器(不包括高速計(jì)數(shù)器)可以使用。計(jì)數(shù)形式可分為三類:向上計(jì)數(shù)、向下計(jì)數(shù)和上下計(jì)數(shù)。1)CTU加法計(jì)數(shù)是一種通過(guò)獲得計(jì)數(shù)輸入信號(hào)的上升沿來(lái)進(jìn)行加法和計(jì)數(shù)的計(jì)數(shù)方法。每當(dāng)計(jì)數(shù)輸入信號(hào)有一個(gè)上升沿,計(jì)數(shù)器將增加"1"從0開始。當(dāng)計(jì)數(shù)達(dá)到設(shè)定值(PV)時(shí),計(jì)數(shù)器的輸出觸點(diǎn)將打開。如果繼續(xù)輸入計(jì)數(shù)信號(hào),計(jì)數(shù)值仍將增加,輸出觸點(diǎn)將保持接通。計(jì)數(shù)器有一個(gè)清零信號(hào)(R)輸入。當(dāng)清除信號(hào)為"1",則電流表清零至"0",設(shè)定值寫入,輸出接點(diǎn)強(qiáng)。切斷。2)Counter-down(CTD)Counter-down是一種通過(guò)獲取計(jì)數(shù)輸入信號(hào)的上升沿進(jìn)行遞減計(jì)數(shù)的計(jì)數(shù)方法。每當(dāng)計(jì)數(shù)輸入信號(hào)的上升沿出現(xiàn)時(shí),計(jì)數(shù)器開始減去"L"當(dāng)當(dāng)前計(jì)數(shù)值減少到"0",計(jì)數(shù)器的輸出觸點(diǎn)打開。如果在計(jì)數(shù)值為"0",計(jì)數(shù)值將保持"0"并且輸出觸點(diǎn)將保持接通。計(jì)數(shù)器有一個(gè)清零信號(hào)(R)輸入。當(dāng)清除信號(hào)為"1",設(shè)定值被寫入為當(dāng)前計(jì)數(shù)值,輸出觸點(diǎn)被強(qiáng)制關(guān)閉。3)CTUD(加減計(jì)數(shù))加減計(jì)數(shù)有兩個(gè)輸入端,即通過(guò)獲得對(duì)應(yīng)計(jì)數(shù)輸入信號(hào)的上升沿進(jìn)行加減計(jì)數(shù)。上下計(jì)數(shù)的本質(zhì)和向上計(jì)數(shù)是一樣的。每當(dāng)計(jì)數(shù)輸入信號(hào)的上升沿出現(xiàn)時(shí),計(jì)數(shù)器就開始加"1"從0開始,當(dāng)計(jì)數(shù)達(dá)到設(shè)定值(PV)時(shí),計(jì)數(shù)器的輸出觸點(diǎn)打開。如果繼續(xù)輸入計(jì)數(shù)信號(hào),計(jì)數(shù)值仍將增加,輸出觸點(diǎn)將保持接通。當(dāng)當(dāng)前值加到最大值32767時(shí),如果再次輸入計(jì)數(shù)信號(hào),當(dāng)前值將變?yōu)?32768,然后繼續(xù)計(jì)數(shù)。同時(shí),倒計(jì)時(shí)輸入信號(hào)也起作用。每當(dāng)?shù)褂?jì)時(shí)輸入有一個(gè)上升沿,計(jì)數(shù)器將減少"1"從目前的價(jià)值來(lái)看。當(dāng)當(dāng)前值減小到最小值-32768時(shí),如果再次輸入倒計(jì)時(shí)信號(hào),當(dāng)前值將變?yōu)?2767,然后繼續(xù)倒計(jì)時(shí)。計(jì)數(shù)器有一個(gè)清零信號(hào)(R)輸入。當(dāng)清除信號(hào)為"L",當(dāng)前計(jì)數(shù)值被清除為"0",設(shè)定值被寫入,輸出觸點(diǎn)被強(qiáng)制斷開。
PLC控制器程序是由什么構(gòu)成的?
PLC控制程序由主程序、子程序和中斷程序組成。
1.主程序主程序(OBI)是程序的主體,每個(gè)項(xiàng)目只能有一個(gè)主程序。子程序和中斷程序可以在主程序中調(diào)用。主程序通過(guò)指令控制整個(gè)應(yīng)用程序的執(zhí)行,CPU每掃描一次主程序執(zhí)行一次。STEP7-Micro/Win程序編輯器窗口下部的選項(xiàng)卡用于選擇不同的程序。因?yàn)槌绦蛞呀?jīng)被分離,所以不需要在每個(gè)程序的末尾添加無(wú)條件的結(jié)束指令,比如END、RET或者RETI。
2.子程序子程序是可選的指令集合,只有被其他程序調(diào)用時(shí)才執(zhí)行。同一個(gè)子程序可以在不同的地方調(diào)用多次。使用子程序可以簡(jiǎn)化程序代碼,減少掃描時(shí)間。一個(gè)設(shè)計(jì)良好的子程序可以很容易地移植到其他項(xiàng)目中。
3.中斷程序中斷程序是一組可選的指令。中斷程序不是由主程序調(diào)用,而是當(dāng)中斷事件發(fā)生時(shí),由可編程控制器的操作系統(tǒng)調(diào)用。中斷程序用于處理預(yù)定義的中斷事件。因?yàn)闊o(wú)法預(yù)測(cè)中斷事件何時(shí)發(fā)生,所以不允許中斷程序覆蓋其他程序可能使用的內(nèi)存。