Class Order
Version 1.0
Modified 15-JAN-2025 13:23:35.00
Kod rt_plc_macro_grafcet.h
Grafcet order. 

Till varje sekvenssteg kan ett eller flera Order-objekt kopplas.
Aktiviteter ( t.ex StoDo , ResDv , And , Or , Wait objekt) knutna till Order - 
objekt kan antingen kopplas direkt till Order-objektets utgång eller placeras i 
ett med Order-objektet associerat s.k. aktivitetsfönster (= a sub-window). Ett 
Order-objekt kan dock inte samtidigt ha både ett aktivitetsfönster och 
direktanslutna objekt. Aktivitetsfönster kan förbättra programmets 
överskådlighet. Objekten i aktivitetsfönstret får ett WindowOrderact objekt 
som förälder objekt. 

NB! Objektets orderlista består antingen av objekten i ett aktivitetsfönster eller 
Stoxx, Setxx, eller Resxx objekt direkt kopplade till Order-objektets utgång. 
Övriga objekt ( And, Or, Wait, etc.) direkt kopplade till Order-objektets utgång 
inkluderas inte i orderlistan. Det betyder att sådana objekt kommer att 
evalueras varje gång PLC programmet exekverar , dvs oberoende av stegets 
eller Order-objektets tillstånd.

Kod i objektets orderlista evalueras däremot så länge steget , till vilket ordern 
hör, är aktivt eller ordern ( om lagrad) är aktiv; dvs orderlistan kan evalueras 
oberoende av Order-objektets tillstånd . Den sista exekveringen av orderlistan 
kommer att ske med inaktivt Order-objekt . Detta betyder, om Order-objektets 
tillstånd, Status[0] är TRUE, när steget gör övergången 1 --> 0 eller då en 
lagrad order tas ned, kommer ytterligare en exekvering av objektets orderlista 
att göras. 

Ett Order-objekts tillstånd kan användas som signal i dess aktivitetsfönster. 
Tillståndet hämtas då med OrderAct-objekt.
Utifrån exekveringssynpunkt behandlas Stoxx , Setxx och Resxx objekt på 
samma sätt vare sig de placerats i ett aktivitetsfönster eller kopplats direkt till 
Order-objektet. 

Till varje order kan s.k. order-attribut (se Attr1 , ...., Attr6 ) knytas med hjälp 
av Objekts Editorn. Förekomsten av order-attribut framgår av symbolens 
vänstra fält. Saknas order-attribut gäller att ordern ställs ut (blir aktiv) så länge 
steget är aktivt och upphör när steget blir inaktivt.

'Condition' är ett order-attribut. Man talar om C-order då ett Order-objekt har 
Condition-attribut. En C-orders villkor kan definieras på endera av följande 
sätt. genom direkt anslutning av villkoret till ordersymbolens vertikala 
anslutning. via ett kombinatoriskt nät i ett villkorsfönster . Ett SetCond-objekt 
i villkorsfönstret lagrar villkorets status i Order-objektet. Objekten i fönstret 
får ett WindowCond objekt.

Exempel


Figuren nedan visar några tillämpningar med Order-objekt:
- Flera order-instanser (ORD0, ORD1,...) kan knytas till ett steg; här S0
- Enkla aktiviteter kan knytas direkat till steg utan någon mellanliggande
  order; jfr Do1 och Do2.
- Flera aktiviteter kan knytas direkt till ett Order-objekt; här två aktiviteter
  knutna directk till ORD0-instansen.
- Den tjocka vertikala linjen i ORD5 indikerar att ett underliggande 'subwindow'
  har knutits till objektet, i dett fall ett aktivitetsfönster. Ett sådant kan i
  PLC-editorn skapas genom Shift/MB1 och dubbel-klick i högra delen av order
  objektet.
- Do1 kommer att sättas så länge S0 är aktivt. Eftersom en SetDo används 
  förblir Do1 satt också sedan S0 blivit inaktivt. SetDo-objektet ingår
  inte i orderlistan.
- Eftersom StoDo för Do2 inte ingår i någon orderlista kommer den att
  evalueras varje gång PLC programmet exekverar. Do2 får status såsom
  steget.
- Do0 kommer att sättas då S0 blir aktiv. Men genom att ORD1 är en S-order
  kommer den att förbli aktiv också efter det att S0 blivit inaktiv. Do0
  tas ned först då ORD1 görs inaktiv av en Reset_SO; jfr med Do2.
- Dv1 och Dv4 sätts inte direkt efter det att S0 blivit aktiv. ORD0-
  instansen har order-attributen D och C, dvs ett fördröjt frigivningsvillkor.

  -- Om S0 är aktiv när fördröjningen löpt ut och Dv3 är TRUE blir Dv1
     TRUE. Set-funktioner har självhållning varför Dv-signalen förblir
     TRUE också sedan S0 blivit inaktiv.
  -- När fördröjningen löpt ut följer Dv4 villkoret Dv3 så länge steget
     är aktivt.

- Det tjocka vertikala linjen i ORD4 indikerar att ett underliggande
  'subwindow' knutints till ovbjektet, i dett fall ett villkorsfönster. Om
  ORD4 är aktivt, villkoret uppfyllt och DI1 inte är TRUE kommer Dv2 att bli
  TRUE, annars blir Dv2 FALSE.

  AND0 tillhör inte Order-objektets orderlista.

  Ett villkorsfönster öppnas i PLC-editorn med Shift/MB1 och dubbelklick i
  vänstra delen av Order-objektet.

Figuren nedan visar en del av en sekvenskedja. ORD0 indikerar ett aktivitets-
fönster och dess innehåll visas till höger i figuren.
Antag att PLC programmet exekverar med frekvensen 10 Hz och att
Av1=Av2=0. ORD1 ser till att stegets aktiva tillstånd varar i 5 sekunder.
Vilket värde har Av1 resp Av2 därefter?

Orderlistan börjar exekvera så fort steget blivit aktivt. Av1 kommer att
räknas upp och lagras 20 gånger då ORD0 är inaktiv och sedan 30 gånger då
ORD0 är aktiv. Efter att steget blivit inaktivt sker ytterligare en exekvering
av orderlistan med inaktiv order. Därför blir Av1=51. Av2 lagras endast då
ORD0 är aktiv, varför Av2=30.

För att utnyttja fördröjningen i en D-order används OrderAct som i fallet
ORD0 eller ordens tillstånd i ORD1. Vi konstaterar också att så länge steget
är aktivt exekveras orderlistan oberoende av ordens tillstånd.


RtBody attributes pwr_sClass_order
Boolean Step step Statusingång. Kontrollerar det anslutna stegets status (InitStep, Step, SubStep,
SsBegin eller SsEnd-objekt) genom att titta på dess Status [0] och Status [1].
Boolean Cond Cond Villkorsingång. Ingången kan används för att koppla en binär villkorssignal till
en C-order.
Array of Boolean Status sts
Status[0] anger objektets status. FALSE betyder inaktiv order och TRUE innebär
aktiv order. Värdet kan plockas upp i annat program med hjälp av GetDp objekt.

Status[1] hänför sig till stegets status. TRUE betyder att steget, som ordern
tillhör, är aktivt eller att en lagrad order är aktiv.
Antag en D-order, dvs order med D-attribut. Då steget blir aktivt sätts Status
[1] till TRUE. Objektets orderlista evalueras med Status [0] = FALSE. Om
Order-objektet har ett aktivitetsfönster kan värdet på Status [0] hämtas med
OrderAct-objekt.

Då fördröjningen löper ut blir Status [0] TRUE och evalueringen av orderlistan
fortsätter så länge Status [1] = TRUE eller så länge det gäller att Status [0] var
TRUE vid förra evalueringen.

DevBody attributes 
Char Attr1   I utgångsläget gäller att Order-objektet blir aktivt då steget blir aktivt och
inaktivt när steget blir inaktivt. Med de s.k. order-attributen kan detta
förhållande påverkas. Alternativen, som betecknas med VERSALER, är:

D = Fördröjd Order-objektet blir aktivt en viss tid efter det att steget
(Delayed) blivit aktivt. AttrTime1, ..., AttrTime6 anger tiden för
motsvarande attribut.

L = Tidsbegränsad Order-objektet blir aktivt samtidigt med steget men detta
(Limited) gäller bara för begränsad tid. AttrTime1, ..., AttrTime6
anger tiden för motsvarande attribut.

P = Puls Ska Order-objektet evalueras med aktiv status precis en
(Pulse) programcykel ersätts L med P.

C = Villkorlig Order-objektet blir aktivt först när steget är aktivt och
(Conditionally) frigivningsvillkoret uppfyllt; ( Cond eller villkorsfönster)

S = Lagrad Order-objektet blir aktivt samtidigt med steget. Till-
(Stored) kvarstår sedan också efter det att steget blivit inaktivt.
En lagrad order tas ned med Reset_SO-objekt.

Varje order-attribut definierar ett sub-objekt i rtdb. Ett sub-objekt med namnet
S är av typen S-order osv. Entydigheten kräver att givet order-attribut
förekommer högst en gång i varje Order-objekt.

Ett Order-objekt kan ha upp till 5 definierade order-attribut. Order attributens
sekvens bestämmer funktionen, t.ex.

En CDS-order lagras ( dvs. tar självhållning) först då det påverkande villkoret
varit uppfyllt under begärd tid -- förutsatt att steget då fortfarande är aktivt.
Ordern förblir sedan aktiv tills den tas ned med ett Reset_SO-objekt.
SDC-order. Uppgiften om att steget är aktivt lagras direkt. Då den begärda
tiden förlupit kommer orderns tillstånd att följa villkorets.
DSC-order. Uppgiften om att steget är aktivt lagras först då fördröjningen löpt
ut -- såvida steget då fortfarande är aktivt. Ordern blir aktiv då villkoret
uppfylls. Orderns tillstånd kan komma att växla beroende på villkoret. Ordern
förblir lagrad tills den tas ned med Reset_SO-objekt.
AttrTime1, AttrTime2, ..., AttrTime6

Anger, i sekunder, tiden för D respektive L order-attribut. AttrTime1 hör ihop
med Attr1 osv.
Float32 AttrTime1   Specifies, in seconds, a time used by the D and L
order-attributes. AttrTime1 is associated to Attr1 and
so on.
Char Attr2   Se Attr1
Float32 AttrTime2  
Char Attr3   Se Attr1
Float32 AttrTime3  
Char Attr4   Se Attr1
Float32 AttrTime4  
Char Attr5   Se Attr1
Float32 AttrTime5  
Char Attr6   Se Attr1
Float32 AttrTime6  
Boolean ShowAttrTime   Anger om AttrTime -värdet för D- och L-order ska visas i Order-objektets
symbol eller ej. FALSE betyder ingen visning och TRUE visning. Enheten är
sekunder.
PlcNode PlcNode  


GraphPlcNode
object_type 34
parameters[0] 2
parameters[1] 0
parameters[2] 1
parameters[3] 0
subwindows 2
subwindow_class[0] pwrb:Class-WindowOrderact
subwindow_class[1] pwrb:Class-WindowCond
graphmethod 5 (grafcet order)
graphindex 1
default_mask[0] 1
default_mask[1] 1
segname_annotation 1
devbody_annotation 1
compmethod 16
compindex 1
tracemethod 7
traceindex 1
executeordermethod 5
objname Ord
graphname Ord
debugpar Status[0]


Template Object
ShowAttrTime 1


Attributes detail


Step Input
Klass Input
Typ Boolean
Flags STATE | RTVIRTUAL | INVISIBLE
GraphName step
Kropp RtBody
Statusingång. Kontrollerar det anslutna stegets status (InitStep, Step, SubStep, 
SsBegin eller SsEnd-objekt) genom att titta på dess Status [0] och Status [1]. 

Cond Input
Klass Input
Typ Boolean
Flags STATE | RTVIRTUAL | NOEDIT | NOINVERT
GraphName Cond
Kropp RtBody
Villkorsingång. Ingången kan används för att koppla en binär villkorssignal till 
en C-order.

Status Output
Klass Output
Typ Array of Boolean
Flags ARRAY | STATE | NOEDIT | REDUTRANSFER
Elements 2
GraphName sts
Kropp RtBody

Status[0] anger objektets status. FALSE betyder inaktiv order och TRUE innebär 
aktiv order. Värdet kan plockas upp i annat program med hjälp av GetDp objekt.
 
Status[1] hänför sig till stegets status. TRUE betyder att steget, som ordern 
tillhör, är aktivt eller att en lagrad order är aktiv.
Antag en D-order, dvs order med D-attribut. Då steget blir aktivt sätts Status 
[1] till TRUE. Objektets orderlista evalueras med Status [0] = FALSE. Om 
Order-objektet har ett aktivitetsfönster kan värdet på Status [0] hämtas med 
OrderAct-objekt. 

Då fördröjningen löper ut blir Status [0] TRUE och evalueringen av orderlistan 
fortsätter så länge Status [1] = TRUE eller så länge det gäller att Status [0] var 
TRUE vid förra evalueringen. 

Attr1 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
I utgångsläget gäller att Order-objektet blir aktivt då steget blir aktivt och 
inaktivt när steget blir inaktivt. Med de s.k. order-attributen kan detta 
förhållande påverkas. Alternativen, som betecknas med VERSALER, är: 

D = Fördröjd Order-objektet blir aktivt en viss tid efter det att steget
(Delayed) blivit aktivt. AttrTime1, ..., AttrTime6 anger tiden för
motsvarande attribut.

L = Tidsbegränsad Order-objektet blir aktivt samtidigt med steget men detta
(Limited) gäller bara för begränsad tid. AttrTime1, ..., AttrTime6
anger tiden för motsvarande attribut.

P = Puls Ska Order-objektet evalueras med aktiv status precis en 
(Pulse) programcykel ersätts L med P.

C = Villkorlig Order-objektet blir aktivt först när steget är aktivt och
(Conditionally) frigivningsvillkoret uppfyllt; ( Cond eller villkorsfönster)

S = Lagrad Order-objektet blir aktivt samtidigt med steget. Till-
(Stored) kvarstår sedan också efter det att steget blivit inaktivt.
En lagrad order tas ned med Reset_SO-objekt.

Varje order-attribut definierar ett sub-objekt i rtdb. Ett sub-objekt med namnet 
S är av typen S-order osv. Entydigheten kräver att givet order-attribut 
förekommer högst en gång i varje Order-objekt. 

Ett Order-objekt kan ha upp till 5 definierade order-attribut. Order attributens 
sekvens bestämmer funktionen, t.ex. 

En CDS-order lagras ( dvs. tar självhållning) först då det påverkande villkoret 
varit uppfyllt under begärd tid -- förutsatt att steget då fortfarande är aktivt. 
Ordern förblir sedan aktiv tills den tas ned med ett Reset_SO-objekt. 
SDC-order. Uppgiften om att steget är aktivt lagras direkt. Då den begärda 
tiden förlupit kommer orderns tillstånd att följa villkorets. 
DSC-order. Uppgiften om att steget är aktivt lagras först då fördröjningen löpt 
ut -- såvida steget då fortfarande är aktivt. Ordern blir aktiv då villkoret 
uppfylls. Orderns tillstånd kan komma att växla beroende på villkoret. Ordern 
förblir lagrad tills den tas ned med Reset_SO-objekt. 
AttrTime1, AttrTime2, ..., AttrTime6 

Anger, i sekunder, tiden för D respektive L order-attribut. AttrTime1 hör ihop 
med Attr1 osv. 

AttrTime1 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody
 Specifies, in seconds, a time used by the D and L
 order-attributes. AttrTime1 is associated to Attr1 and
 so on.

Attr2 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
Se Attr1

AttrTime2 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody

Attr3 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
Se Attr1

AttrTime3 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody

Attr4 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
Se Attr1

AttrTime4 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody

Attr5 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
Se Attr1

AttrTime5 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody

Attr6 Intern
Klass Intern
Typ Char
Flags
Kropp DevBody
Se Attr1

AttrTime6 Intern
Klass Intern
Typ Float32
Flags
Kropp DevBody

ShowAttrTime Intern
Klass Intern
Typ Boolean
Flags
Kropp DevBody
Anger om AttrTime -värdet för D- och L-order ska visas i Order-objektets 
symbol eller ej. FALSE betyder ingen visning och TRUE visning. Enheten är 
sekunder. 

PlcNode Buffer
Klass Buffer
Typ PlcNode
Flags INVISIBLE
Kropp DevBody