Volume pwrb | |
Attributes: Runtime | Development | System | Template | Detail C Binding: Struct | Class | Code  ClassTree | INDEX NO INDEX |
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.
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 |
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 |