Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / Production Automation Project / Siemens S7 -ohjeita / Sekvenssiohjaus FB-lohkolla (TIA Portal V14) /
SCL-toteutus

Alla on esimerkki sekvenssistä, joka

  1. avaa venttiilin V-102 ja odottaa, että ventiili pääsee aukirajalle
  2. käynnistää 6 sekunnin ajastimen ja odottaa, että ajastin laukeaa
  3. sulkee venttiilin ja odottaa, että venttiili pääsee kiinnirajalle
  4. 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;
Päivitetty 28.8.2022

<<  Edellinen
(9) Ehto-osa
Sivu 10/10Takaisin ensimmäiseen >>
(1) Sekvenssiohjaus FB-lohkolla (TIA Portal V14)
© Timo Heikkinen | timo piste heikkinen at oamk piste fi