timohei.net / Opintojaksot / Production Automation Project / Siemens TIA Portal How-to / Sekvenssiohjaus FB-lohkolla (TIA Portal V14) /
Alla on esimerkki sekvenssistä, joka
- avaa venttiilin V-102 ja odottaa, että ventiili pääsee aukirajalle
 - käynnistää 6 sekunnin ajastimen ja odottaa, että ajastin laukeaa
 - sulkee venttiilin ja odottaa, että venttiili pääsee kiinnirajalle
 - käynnistää 10 sekunnin viiveen ja odottaa, että ajastin laukeaa, jonka jälkee hyppää askeleeseen 1.
 
Sekvenssi käynnistyy asettamalla Int-tyyppinen muuttuja Step nollaksi ja asettamalla tämän jälkeen Bool-tyyppinen muuttuja SeqRun ykköseksi.
Esimerkki on ensin TIA Portalista kaapattuna kuvana ja alempana tekstimuotoisena kopioitavaksi omaan projektiin.
Esimerkkisekvenssi on sijoitettu Cyclic interrupt -lohkoon (OB31), joka on määritetty suorittumaan 100 ms välein. Sekvenssi voisi olla myös OB1-lohkossa, mutta Cyclic interrupt -lohkossa suoritettuna se kuormittaa CPU:ta huomattavasti vähemmän. Sekvenssillä tyypillisesti ohjataan harvakseltaan muuttuvia ohjauksia, joten suoritusnopeus ei ole lainkaan kriittinen. Jos suoritusnopeus on kriittinen, sovellus yleensä toteutetaan muulla kuin sekvenssirakenteella.
(* Sequence Application in SCL *)
IF "SeqRun" THEN
    CASE "Step" OF
	
        0: (* If sequence is started but still in step 0
                initialize to step 1 *)
            "Step" := 1;
            "Timer1In" := FALSE; (* Reset timer inputs *)
            "Timer2In" := FALSE;
			
        1: (* Step 1 ACTIONS - Open V-102
                               Set LIC-100 to automatic
                               Reset S2TimerIn *)
            "V-102" := TRUE;
            "LIC-100.ma" := FALSE;
            IF "V-102.o" THEN (* Step 1 CONDITIONS -
                                 Only check that V-102
                                 has opened *)
                "Step" := "Step" + 1; (* Go to next step *)
            END_IF;
			
        2: (* Step 2 ACTIONS - Start 6 second timer *)
            "IEC_Timer_0_DB".TON(IN := "Timer1In",
                                 PT := T#6s,
                                 Q => "Timer1Out");
            "Timer1In" := TRUE; (* Activate timer *)
            IF "Timer1Out" THEN (* Step 2 CONDITIONS -
                                    Timer ready *)
                "Step" := "Step" + 1;
            END_IF;
			
        3:  (* Step 3 ACTIONS - Close V-102
                                Reset S2Timer *)
            "V-102" := FALSE;
            "Timer1In" := FALSE;
            IF "V-102.c" THEN (* Step 3 CONDITIONS -
                                    V-102 closed *)
                "Step" := "Step" + 1; (* Go to next step *)
            END_IF;
			
        4: (* Step 2 ACTIONS - Start 6 second timer *)
            "IEC_Timer_1_DB".TON(IN := "Timer2In",
                                 PT := T#10s,
                                 Q => "Timer2Out");
            "Timer2In" := TRUE; (* Activate timer *)
            IF "Timer2Out" THEN (* Step 2 CONDITIONS -
                                    Timer ready *)
                "Step" := 1; (* Jump to step 1 *)
            END_IF;
			
    END_CASE;
END_IF;
| <<  Edellinen (9) Ehto-osa  | Sivu 10/10 | Takaisin ensimmäiseen >> (1) Sekvenssiohjaus FB-lohkolla (TIA Portal V14)  |