Class Pos3P
Version 1.0
Modified 15-JAN-2025 13:23:36.00
Kod rt_plc_pid.c
Tre-lägesregulator, 'Positional 3-step controller', med lägesåterföring och 
dödzon. 'Positional' syftar på insignalen till OUT-ingången och trean på att tre 
diskreta order kan ges med innebörden höger/vänster/ 0, upp/ner/0, 
öka/minska/0 etc. Utgångarna är tidsproportionella mot ingången. 


Precis som för Inc3P är det möjligt att styra med utgångarna ope / clos 
och/eller signaler vars namn finns i DoOpen / DoClose . Utgångarna och 
signalerna kan sättas till TRUE med den frekvens som PlcPgm-objektet anger. 
Men bara signaler kan sättas FALSE genom timerstyrningen . Pulslängden på 
utgångarna, ope och clos , blir en heltalsmultipel PLC programmets cykeltid. 

Objektet har en inbyggd timerstyrning för bättre upplösning vid frånslag 
eftersom tidsstyrningen alltid evalueras med PLC-jobbets bascykeltid. Om 
Pos3P-objektet ingår i ett PlcPgm , som kör med bascykeltiden, ger 
timerstyrningen inte denna fördel. 

Om timerstyrning används är det lämpligt att införa signalerna på ett sätt som 
liknar det som användes för t.ex GetAp-objekt: 

Välj, i 'Navigator', aktuellt PLC program och startan PLC Editorn med hjälp av 
MB3 (= högra knappen på 3-knappars mus). 
Välj i PLC Editorn 'Edit' under Mode-menyn och skapa ett Pos3P-objekt. 
Behåll fönstret med PLC Editorn uppe men välj Navigator-fönstret som aktivt 
fönster vari aktuellt Do-objekt markeras. 
Ctrl/dubbelklicka med MB1 ( vänstra knappen på 3-knappars mus) i -- övre 
delen av Pos3P -symbolen om det är 'öka'-signal och i nedre delen om det 
gäller en 'minska'-signal.

Om en utsignal ska sättas eller ej beror på storleken av reglerfelet OutVal - Pos 
och de separata dödzonerna ErrSo och ErrSta . Dödzonerna gör att en del 
pulser, som i längden skulle kunna skada utrustningen, då reglerelementets läge 
är 'ganska bra' aldrig genereras. 
 
Varaktigheten på DoOpen / DoClose signalerna, pulslängden, är lika med 

Gain · | ( OutVal t - Pos t ) |

Om pulslängden är mindre än PLC programmets cykeltid nollställes DoOpen / 
DoClose av timerstyrningen innan PLC programmets nästa cykel startas. 

Timerstyrning används också av Inc3P objekt.

Exempel


 Timerstyrning
Antag flödesreglering med elektriska ställdon för öka/minska styrning.
Flödet ges av signalen 'kalle2' och ventilläget 'Ai1'.

En lösning visas i figuren nedan. Notera att det är Pid-objektets
'positionerutgång' som används. Curve-objektets närvaro kan motiveras
om ventilkarakteristiken är kraftigt olinjär.

Se även


RtBody attributes pwr_sClass_pos3p
Float32 OutVal OUT Börvärdesposition. Ansluts ofta till OUT-utgången i ett Pid-objekt.
Float32 Pos POS Ärvärdet. Återkoppling av aktuell position.
Boolean Open ope Driftsorder. TRUE betyder öppna ( upp, öka, höger eller vad annars som kan
vara relevant för utgången). FALSE innebär ingen åtgärd.
Boolean Close clo Driftsorder. TRUE betyder stäng ( ned, minska, vänster eller vad annars som
kan vara relevant för utgången). FALSE innebär ingen åtgärd.
Float32 Gain Gain Förstärkning, i sekunder, per styrsignalenhet. Ofta är styrsignalen i området 0 -
100 %. Antag att gångtiden, tiden för att köra t.ex en ventil från fullt stängt till
fullt öppet, kan mätas. Välj då Gain som total gångtid dividerat med
signalområdet; här (100 - 0 ).

Gain används bara vid timerstyrning av utgångar.
Float32 ErrSta ErrSta Dödzon. Attributet anger det värde som absolutvärdet av reglerfelet, OutVal t -
Pos t , ska över skrida innan en driftsorder ( Open eller Close ) blir TRUE.

Det gäller att 0 = ErrSto = ErrSta
Float32 ErrSto ErrSto Dödzon. Attributet anger det värde som absolutvärdet av reglerfelet, OutVal t -
Pos t , ska under skrida innan en pågående driftsorder tas bort; Open eller
Close blir FALSE.

Det gäller att 0 = ErrSto = ErrSta
Pointer to Boolean OpenP  
Pointer to Boolean CloseP  
Boolean TimerFlag   Markerar aktiv timer.
Pointer to Boolean TimerNext   Pekar på nästa element i timer kön.
UInt32 TimerCount   Antal återstående ticks. ( 1 tick = PLC-jobbets bascykeltid.)
Pointer to Boolean TimerDO   Pekar på ett Do eller Dv objekt eller, om sådant objekt inte används, på
TimerDoDum . Efter tiden TimerTime nollställs den av TimerDo angivna
signalen.
Float32 TimerTime   Fördröjning i sekunder. Anger när utgångarna ska sättas FALSE. TimerTime =
PLC-jobbets bascykeltid.
Boolean TimerDODum   Dummy. Om TimerDoDum inte pekar på ett Do eller Dv objekt pekar det hit.
Objid TimerObjDId   Identity of this object is set at load file creation.
Used by the run time system.

DevBody attributes 
AttrRef DoOpen   Namn på extern 'öppna'-signal, t.ex Do - eller Dv-objekt vid timerstyrning.
även om DoOpen definierats hanterar objektet Open .
AttrRef DoClose   Namn på extern 'stäng'-signal, t.ex Do - eller Dv-objekt vid timerstyrning.
även om DoClose definierats hanterar objektet Close .
PlcNode PlcNode  


GraphPlcNode
object_type 152
parameters[0] 2
parameters[1] 0
parameters[2] 2
parameters[3] 0
subwindows 0
graphmethod 2 (standard, two textfield)
graphindex 0
default_mask[0] 3
default_mask[1] 3
segname_annotation 3
devbody_annotation 1
compmethod 23
compindex 0
connectmethod 0
executeordermethod 2
objname Pos3P
graphname Pos3P
debugpar


Template Object
Gain 1.0


Attributes detail


OutVal Input
Klass Input
Typ Float32
Flags REDUTRANSFER
GraphName OUT
Kropp RtBody
Börvärdesposition. Ansluts ofta till OUT-utgången i ett Pid-objekt. 

Pos Input
Klass Input
Typ Float32
Flags STATE | NOEDIT | REDUTRANSFER
GraphName POS
Kropp RtBody
Ärvärdet. Återkoppling av aktuell position. 

Open Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ope
Kropp RtBody
Driftsorder. TRUE betyder öppna ( upp, öka, höger eller vad annars som kan 
vara relevant för utgången). FALSE innebär ingen åtgärd. 

Close Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName clo
Kropp RtBody
Driftsorder. TRUE betyder stäng ( ned, minska, vänster eller vad annars som 
kan vara relevant för utgången). FALSE innebär ingen åtgärd. 

Gain Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName Gain
Kropp RtBody
Förstärkning, i sekunder, per styrsignalenhet. Ofta är styrsignalen i området 0 - 
100 %. Antag att gångtiden, tiden för att köra t.ex en ventil från fullt stängt till 
fullt öppet, kan mätas. Välj då Gain som total gångtid dividerat med 
signalområdet; här (100 - 0 ). 

Gain används bara vid timerstyrning av utgångar. 

ErrSta Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName ErrSta
Kropp RtBody
Dödzon. Attributet anger det värde som absolutvärdet av reglerfelet, OutVal t - 
Pos t , ska över skrida innan en driftsorder ( Open eller Close ) blir TRUE. 

Det gäller att 0 = ErrSto = ErrSta 

ErrSto Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName ErrSto
Kropp RtBody
Dödzon. Attributet anger det värde som absolutvärdet av reglerfelet, OutVal t - 
Pos t , ska under skrida innan en pågående driftsorder tas bort; Open eller 
Close blir FALSE. 

Det gäller att 0 = ErrSto = ErrSta 

OpenP Intern
Klass Intern
Typ Pointer to Boolean
Flags POINTER | PRIVATE | STATE | NOEDIT
Kropp RtBody

CloseP Intern
Klass Intern
Typ Pointer to Boolean
Flags POINTER | PRIVATE | STATE | NOEDIT
Kropp RtBody

TimerFlag Intern
Klass Intern
Typ Boolean
Flags STATE | INVISIBLE
Kropp RtBody
Markerar aktiv timer. 

TimerNext Intern
Klass Intern
Typ Pointer to Boolean
Flags POINTER | STATE | INVISIBLE | PRIVATE
Kropp RtBody
Pekar på nästa element i timer kön. 

TimerCount Intern
Klass Intern
Typ UInt32
Flags STATE | INVISIBLE
Kropp RtBody
Antal återstående ticks. ( 1 tick = PLC-jobbets bascykeltid.) 

TimerDO Intern
Klass Intern
Typ Pointer to Boolean
Flags POINTER | STATE | INVISIBLE | PRIVATE
Kropp RtBody
Pekar på ett Do eller Dv objekt eller, om sådant objekt inte används, på 
TimerDoDum . Efter tiden TimerTime nollställs den av TimerDo angivna 
signalen. 

TimerTime Intern
Klass Intern
Typ Float32
Flags
Kropp RtBody
Fördröjning i sekunder. Anger när utgångarna ska sättas FALSE. TimerTime = 
PLC-jobbets bascykeltid. 

TimerDODum Intern
Klass Intern
Typ Boolean
Flags STATE | INVISIBLE
Kropp RtBody
Dummy. Om TimerDoDum inte pekar på ett Do eller Dv objekt pekar det hit. 

TimerObjDId Intern
Klass Intern
Typ Objid
Flags INVISIBLE
Kropp RtBody
 Identity of this object is set at load file creation.
 Used by the run time system.

DoOpen Intern
Klass Intern
Typ AttrRef
Flags
Kropp DevBody
Namn på extern 'öppna'-signal, t.ex Do - eller Dv-objekt vid timerstyrning. 
även om DoOpen definierats hanterar objektet Open . 

DoClose Intern
Klass Intern
Typ AttrRef
Flags
Kropp DevBody
Namn på extern 'stäng'-signal, t.ex Do - eller Dv-objekt vid timerstyrning. 
även om DoClose definierats hanterar objektet Close . 

PlcNode Buffer
Klass Buffer
Typ PlcNode
Flags INVISIBLE
Kropp DevBody