詳細(xì)介紹
西門子江蘇觸摸屏代理商 西門子江蘇觸摸屏代理商
凡在上海盟疆工業(yè)自動化設(shè)備有限公司采購西門子產(chǎn)品,均可質(zhì)保一年,假一罰十
花30秒詢價,你會知道什么叫優(yōu)勢;花60秒咨詢,你會知道什么叫服務(wù);
合作一次,你會知道什么叫質(zhì)量!以質(zhì)量求生存,以信譽(yù)求發(fā)展。
我司將提供的質(zhì)量,服務(wù)作為自已重要的責(zé)任。
1. 提出問題
圖1
問題1:M10.2能否被置位?
圖2
問題2:S_CU計數(shù)有無問題,M6.2能否被置位?
先來了解一下都有哪幾個計時器,以及它們的特性如何
圖3
2. 計時器描述
從以圖3可以看出5個計時器的基本特性,可以簡單的從中挑選與控制工藝相符合的計時器使用,如果想了解計時器的詳細(xì)信息,可以選擇計時器,并按F1看幫助信息中的具體邏輯圖。
以計時器SD為例,參見圖4
圖4
我們從中可以知道,當(dāng)觸發(fā)端S的信號為上升沿時,觸發(fā)計時器開始運(yùn)行,時間結(jié)束后計時器輸出端為1,S信號為下降沿時,計時器輸出端為0
那么根據(jù)此情況,以圖1為例,咱們可以把剛才的梯形圖程序通過時序圖表示如下圖5
其中a,b之間是在掃描此段程序兩個周期之間的間隙。
圖5
3. 計時器與循環(huán)程序的關(guān)系
經(jīng)過分析,可以看出,M10.2(S)是可以被置位的,那為什么沒有看見其被置位呢?
大家注意,這里t的時間是8s,我們知道,一個程序的掃描周期很短,可能才十幾----幾十毫秒,在線時候可以監(jiān)控到Scan Cycle Time。如圖6
圖6
那這個時間不是遠(yuǎn)遠(yuǎn)超過了掃描周期么?
我們又知道,如果程序掃描周期大于大掃描周期監(jiān)控時間Scan Cycle Monitoring Time,那么將會觸發(fā)中斷,甚至造成CPU進(jìn)入STOP狀態(tài)。
其實,計時器的執(zhí)行是異步于OB1循環(huán)掃描的,只要計時器運(yùn)行后,在每一周期掃描到計時器的觸發(fā)端S信號如果為1,那么計時器就將在此周期繼續(xù)計時。因此,它對于大周期監(jiān)控時間并沒有太大的影響,只是調(diào)用語句時占用了少許us的時間。
怎么來驗證這個說法呢?就是說計時器的執(zhí)行并不同步于OB1程序掃描周期。
1,可以在程序中加入若干SFC47增大程序掃描周期(保證小于Scan Cycle Monitoring Time),通過監(jiān)控計時器的時間,可以看出,計時器的時間是跳躍式的變化的,也就是說,也就是說,當(dāng)程序掃描完計時器,繼續(xù)往下進(jìn)行時,計時器滿足觸發(fā)條件進(jìn)行計時,此周期往后的計時是一直在進(jìn)行的。
2,可以通過在中斷來證明
3,通過程序死循環(huán)監(jiān)視計時證明
4,通過多個計時器監(jiān)視時間來證明等等各種方法
那說明了是異步的有何作用呢?
說明了剛才咱們分析程序所作的時序圖有一定的問題,因為咱們的分析是按照程序一步步往下進(jìn)行的,相當(dāng)于是同步進(jìn)行的。而實際在程序執(zhí)行時,掃描周期是比較短的,所以計時器是在其中的某一個周期里計時器計時結(jié)束時輸出被置位為1,那么因為這樣,所以對我們編寫程序就會有一定的要求。也就有了下面一個問題
4. 計時器動作的時刻
計時器的輸出端是什么時候被置位呢,什么時候起作用呢,比如?
是等到重新掃描到計時器塊,計時器執(zhí)行完畢才置位,還是不用重新掃描到計時器?程序中直接掃描的T40節(jié)點(diǎn),它就已經(jīng)被置位了呢?
1,我們可以設(shè)置OB35的看門狗時間為2000ms, 如圖7
OB35里觸發(fā)計時器T40,的開點(diǎn)給線圈M6.0,如圖8
OB1里的開點(diǎn)給線圈M6.1,M6.0開點(diǎn)給線圈M6.2,如圖9
經(jīng)過試驗,觀察看到,當(dāng)T40的Timer運(yùn)行結(jié)束后M6.1立刻就被置位了,而M6.0和M6.2會等到再次掃描到OB35,才會被置位。
可得出結(jié)論,當(dāng)計時器T40計時結(jié)束時,CPU掃描到時,它就已經(jīng)為1了,不需要等到掃描計時器S_ODT(SD)。
圖7
圖8
圖9
2,也可以在OB1里調(diào)用多個“wait”代碼讓OB1的掃描周期足夠大,如5s,先調(diào)用一個SD T2 1s,然后調(diào)用若干“wait”,大概持續(xù)2s,用T2開點(diǎn)觸發(fā)一個線圈如M10.0,再調(diào)用若干“wait”,大概1s,然后再調(diào)用一個SD T3,可以看出再T3還沒有開始計數(shù)時,M10.0已經(jīng)被置位了。
計時器在OB30—OB38里呢?
是一樣的。
可以在OB35里使用SD計時器,可以發(fā)現(xiàn),當(dāng)程序調(diào)用OB35時,計時器開始運(yùn)行,把OB35執(zhí)行時間和計時器時間設(shè)置大些,可以發(fā)現(xiàn),只要每次在掃描的計時器觸發(fā)端時,條件滿足,計時器就開始運(yùn)行,直到下一次掃描OB35時再掃描到此條件為止。
可以把計時器時間設(shè)置足夠大,當(dāng)計時未結(jié)束前把它的觸發(fā)端變?yōu)?,那么其計時停止,直到再次觸發(fā)。
可以得出計時器的運(yùn)行只與每次掃描到它的觸發(fā)端有關(guān)。掃描完觸發(fā)端后,計時器的運(yùn)行就與觸發(fā)端無關(guān)了,直到下一次再次掃描到此觸發(fā)端。
5. 分析程序
了解了以上的一些基本知識,咱們再來看看剛才圖1中的程序。
一個CPU的掃描周期是可以計算的,根據(jù)不同的配置和數(shù)據(jù)的讀取,可以計算出不同的周期,在PLC運(yùn)行時,每個周期的大小也是不一樣的,可以大致計算出范圍,可以根據(jù)每條語句來計算程序的執(zhí)行時間,再加上相應(yīng)的循環(huán)周期檢測點(diǎn),周期中斷,訪問過程映像區(qū),通信負(fù)載等。這些時間的長短與CPU型號及使用方式有關(guān)。
使用PS307 5A,CPU315-2PN/DP (315-2EH13-0AB0 V 2.6.50)為例。以下所有時間都以此配置為標(biāo)準(zhǔn)。
我們把圖1的梯型圖換成語句表來分析指令執(zhí)行的過程。
圖10
一個CPU的掃描周期的計算可以根據(jù)以下幾個過程來進(jìn)行
圖11
A.操作系統(tǒng)初始化循環(huán)時間監(jiān)視
B.掃描PIO
C.掃描PII
D.執(zhí)行用戶程序,并執(zhí)行程序中定義的操作
E.掃描周期檢測點(diǎn)操作系統(tǒng)時間(周期結(jié)束時執(zhí)行掛起的任務(wù),如裝載和刪除塊)
F .CPU返回到周期開始的時間點(diǎn),并重新開始循環(huán)周期監(jiān)視
在以上的步驟中都是有時間的,雖然很小,但是也占用時間??梢愿鶕?jù)不同的硬件組態(tài),參照
CPU Specifications手冊進(jìn)行計算,
為了便于計算和理解,咱們以理想狀態(tài)來計算。假設(shè)CPU周期中的A,B,C,E,F(xiàn)的時間為固定的數(shù)值X us。
只分析程序里的”D” --用戶程序中的命令執(zhí)行。
程序是順序掃描的,從Network 1—3依次進(jìn)行,
以*個周期開始時來分析,首先掃描Network 1中T3計時器為0,因此閉點(diǎn)使能,T2開始計時(0-8S),但此時掃描T2輸出為0,
因此掃描到Network 2中T2開點(diǎn)不使能,掃描到T3不執(zhí)行,
Network 3中T3開點(diǎn)不使能,M10.2為0。
到此過程[0.4+0.3+2.4+0.3+0.3+2.4+0.3+0.2(或0.9)] us = 6.6 (或7.3) us。
注意:T2一直在累加時間,相當(dāng)于此時T2計時也到達(dá)6.6(或7.7)us。
然后加上剛才的時間X us,那么一個周期可以認(rèn)為是t=X+6.6 (7.7) us。X大于7 us,可以看出語句的執(zhí)行是在很短的時刻進(jìn)行,所以大家在編程時常用的每個計時器都會經(jīng)過若干個程序掃描周期。
因為Timer是異步的,所以T2的時間應(yīng)該在一個周期里也為t=X+6.6 (7.7) us,那么根據(jù)上面的程序看,因為T2設(shè)置為8s,所以應(yīng)該在大概m=8s/[ X+6.6 (7.7)]us個周期時,T2執(zhí)行完畢。
T2 假設(shè)優(yōu)秀情況下,T2執(zhí)行完畢的時刻是在第m個周期內(nèi),
A.如果發(fā)生在Network2的T2開點(diǎn)之前,那么掃描到此 T2開點(diǎn)的語句時,T2的輸出變?yōu)?,執(zhí)行下一條語句T2開點(diǎn)就會閉合,T3開始計時。
B.如果T2執(zhí)行完畢的時刻是程序掃描到T2開點(diǎn)語句之后才發(fā)生的,那么因為后面的程序沒有對T2的操作,只有在下一個m+1周期,才能檢測到T2的變化。T3開始計時。
T3開始計時的前提條件是T2開點(diǎn)閉合,假設(shè)在第m個周期里,T3開始計時,那么同樣,要經(jīng)過大概m個周期左右,T3才能執(zhí)行完畢,到此時,已經(jīng)經(jīng)過了2m個周期,因為M10.2線圈是由T3開點(diǎn)的閉合信號來置位的,那么現(xiàn)在就來分析一下什么時候可以發(fā)生此動作。
注意:在此例子程序中,在Network1-3中都有對T3的操作
T3 假設(shè)在優(yōu)秀情況下,T3執(zhí)行完畢的時刻是在第2m個周期。在第2m周期內(nèi)
A.如果發(fā)生在Network1的T3閉點(diǎn)之前,那么在程序掃描到T3閉點(diǎn)的時候,T3的輸出值已經(jīng)變?yōu)?了,閉點(diǎn)變?yōu)殚_點(diǎn),T2輸出變?yōu)?,往下掃描到Network2的T2開點(diǎn)變?yōu)?,T3的SD輸出也變?yōu)?,繼續(xù)掃描到Network3,T3開點(diǎn)為0,那么M10.2未被置位。
B.如果發(fā)生在Network1的T3閉點(diǎn)之后,Network3的T3開點(diǎn)之前,(則T2是保持為1的),在掃描到T3開點(diǎn)時,T3的輸出值變?yōu)?,T3開點(diǎn)變?yōu)殚]點(diǎn),M10.2被置位。
C.如果發(fā)生在Network3的T3開點(diǎn)之后,那么在此周期內(nèi)對m10.2不會產(chǎn)生置位,在下一周期(2m+1),T3輸出值變?yōu)?了,所以在Network1里T3閉點(diǎn)變?yōu)殚_點(diǎn),T2輸出變?yōu)?,掃描到Network2里,T2開點(diǎn)變?yōu)?,導(dǎo)致T3輸出值變?yōu)?,掃描到Network3里,T3開點(diǎn)變