Class Inc3P
Version 1.0
Modified 15-JAN-2025 13:23:35.00
Kod rt_plc_pid.c
Inkrementell 3 - punktsutgång med dödzon men utan lägesåterföring. 
Inkrementell syftar på insignalen 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 
satta under en tid som är proportionell mot storleken på insignalen. 

Insignalen OutChange betraktas som ett reglerfel. Detta fel överförs till en tid 
genom multiplikation med Gain . Produkten adderas till ackumulatorn Acc.
Absolutvärdet av Acc begränsas till MaxWindup.

Om absolut värdet av Acc är större än MinTim sätts någon av utgångarna Open 
eller Close till TRUE. 

Om Acc > MinTim sätts 'öka' signalen (= Open ) så länge som Acc > 0 , om, å 
andra sidan, Acc < - MinTim sätts 'minska' signalen (= Close ) så länge som 
Acc < 0. Vid varje exekvering räknas värdet av Acc ned respektive upp med ett 
tidsbelopp av ScanTime , beroende på om 'öka' eller 'minska' signalen satts. 

För att undvika 'obefogade' styringrepp, som skulle kunna skada ställdon vid 
små reglerfel, måste absolutvärdet av Acc -attributet överstiga värdet på den 
ändringsbara dödzonen MinTim , innan någon reglersignal sätts.

Output Signals from an Inc3P 

S.k. tidsproportionell reglering ('timerstyrning'), också använd av Pos3P.

Precis som för Pos3P är det möjligt att välja mellan att styra direkt med 
utgångarna Open / Close och/eller indirekt med signaler angivna av DoOpen / 
DoClose . Utgångar och signaler kan båda sätts TRUE med en frekvens som 
följer av det aktuella PlcPgm-objektets ScanTime . Men det är endast signaler 
som kan sättas FALSE av timerstyrningen . 

Fördelen med timerstyrning är förbättrad upplösning då det aktuella PLC 
programmet ej kör med PLC-jobbets bascykeltid. Timerstyrningen arbetar 
alltid med PLC-jobbets bascykeltid. Om Inc3P-objektet ingår i ett PlcPgm som 
kör med bascykeltiden, ger timerstyrningen inte denna fördel. 

Exempel


 Timerstyrning av utgångar
Antag en flödesreglering med elektriskt ställdon för öka/minska styrning.
Flödessignalen (här 'kalle2') fnns. En lösning visas i figuren nedan. Notera
att PID-objektets inkrementella utgång används.
Styrsignalerna har angivits vid DoOpen resp DoClose. Dess sista namnled
visas i Inc3p0-symbolen; här Do2 resp Do1.

Se även


RtBody attributes pwr_sClass_inc3p
Float32 OutChange OC Styrsignalförändring. Hämtas i praktiken ofta från OutChange i ett Pid-objekt.
Boolean Open ope Anger om utgången ska sättas eller ej. FALSE betyder ingen aktivitet; TRUE
innebär öppna ( upp, öka, höger eller vad som kan vara relevant i det enskilda
fallet).
Boolean Close clo Anger om utgången ska sättas eller ej. FALSE betyder ingen aktivitet; TRUE
innebär stäng ( ned, minska, vänster eller vad som kan vara relevant i det
enskilda fallet).
Pointer to Float32 ScanTime ScanTime Programcykeltid i sekunder. Lagras automatiskt vid kompilering.
Float32 Gain Gain Förstärkning, i sekunder, per styrsignalenhet.

Ofta ligger styrsignalen i intervallet 0 - 100 %. Antag att gångtiden kan mätas,
t.ex tiden för att köra en ventil från fullt stängt till fullt öppet. Välj då Gain =
gångtid / skalområdet; (här är skalområdet = 100 - 0 ).
Float32 MinTim MinTim Dödzon i sekunder; se beskrivning ovan. Om absolutvärdet av Acc är mindre
än MinTim sätts ingen av utgångarna TRUE.
Float32 MaxTim MaxTim Maximal löptid i sekunder för integrering utan ingrepp. Om tiden MaxTim har
förlöpt utan att någon utsignal blivit TRUE nollställs Acc .
Float32 MaxWindup MaxWindup Absolutvärdet av Acc begränsas till MaxWindupsekunder, för att undvika oändlig
uppvridning vid felsatta parametrar. Negativt eller noll ger ingen begränsning.
Bör vara nära gångtid från helt stängd till helt öppen. Default 30 sek.
Pointer to Boolean OpenP  
Pointer to Boolean CloseP  
Boolean TimerFlag   Markerar aktiv timer.
Pointer to Boolean TimerNext   Pekar på nästa element i timerkö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.
Float32 Acc Acc Ackumulerad styrsignal - ingrepp i form av tid.
Float32 AccTim AccTim Ackumulerad löptid utan ingrepp.

DevBody attributes 
AttrRef DoOpen   Vid timerstyrning anger attributet namn på extern signal, t.ex Do eller Dv (
svarande mot Open ); även om DoOpen anger en signal manövreras Open av
objektet.
AttrRef DoClose   Vid timerstyrning anger attributet namn på extern signal, t.ex Do eller Dv (
svarande mot Close ), även om DoClose anger en signal manövreras Close av
objektet.
PlcNode PlcNode  


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


Template Object
Gain 1.0
MaxWindup 30.0


Attributes detail


OutChange Input
Klass Input
Typ Float32
Flags STATE | NOEDIT | REDUTRANSFER
GraphName OC
Kropp RtBody
Styrsignalförändring. Hämtas i praktiken ofta från OutChange i ett Pid-objekt. 

Open Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ope
Kropp RtBody
Anger om utgången ska sättas eller ej. FALSE betyder ingen aktivitet; TRUE 
innebär öppna ( upp, öka, höger eller vad som kan vara relevant i det enskilda 
fallet). 

Close Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName clo
Kropp RtBody
Anger om utgången ska sättas eller ej. FALSE betyder ingen aktivitet; TRUE 
innebär stäng ( ned, minska, vänster eller vad som kan vara relevant i det 
enskilda fallet). 

ScanTime Intern
Klass Intern
Typ Pointer to Float32
Flags INVISIBLE | POINTER | PRIVATE
GraphName ScanTime
Kropp RtBody
Programcykeltid i sekunder. Lagras automatiskt vid kompilering. 

Gain Intern
Klass Intern
Typ Float32
Flags
GraphName Gain
Kropp RtBody
Förstärkning, i sekunder, per styrsignalenhet. 

Ofta ligger styrsignalen i intervallet 0 - 100 %. Antag att gångtiden kan mätas, 
t.ex tiden för att köra en ventil från fullt stängt till fullt öppet. Välj då Gain = 
gångtid / skalområdet; (här är skalområdet = 100 - 0 ). 

MinTim Intern
Klass Intern
Typ Float32
Flags
GraphName MinTim
Kropp RtBody
Dödzon i sekunder; se beskrivning ovan. Om absolutvärdet av Acc är mindre 
än MinTim sätts ingen av utgångarna TRUE. 

MaxTim Intern
Klass Intern
Typ Float32
Flags
GraphName MaxTim
Kropp RtBody
Maximal löptid i sekunder för integrering utan ingrepp. Om tiden MaxTim har 
förlöpt utan att någon utsignal blivit TRUE nollställs Acc . 

MaxWindup Intern
Klass Intern
Typ Float32
Flags
GraphName MaxWindup
Kropp RtBody
Absolutvärdet av Acc begränsas till MaxWindupsekunder, för att undvika oändlig 
uppvridning vid felsatta parametrar. Negativt eller noll ger ingen begränsning.
Bör vara nära gångtid från helt stängd till helt öppen. Default 30 sek.

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

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

TimerFlag Intern
Klass Intern
Typ Boolean
Flags STATE | INVISIBLE | REDUTRANSFER
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 timerkön. 

TimerCount Intern
Klass Intern
Typ UInt32
Flags STATE | INVISIBLE | REDUTRANSFER
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.

Acc Intern
Klass Intern
Typ Float32
Flags STATE | NOEDIT | INVISIBLE
GraphName Acc
Kropp RtBody
Ackumulerad styrsignal - ingrepp i form av tid. 

AccTim Intern
Klass Intern
Typ Float32
Flags STATE | NOEDIT | INVISIBLE
GraphName AccTim
Kropp RtBody
Ackumulerad löptid utan ingrepp. 

DoOpen Intern
Klass Intern
Typ AttrRef
Flags
Kropp DevBody
Vid timerstyrning anger attributet namn på extern signal, t.ex Do eller Dv ( 
svarande mot Open ); även om DoOpen anger en signal manövreras Open av 
objektet. 

DoClose Intern
Klass Intern
Typ AttrRef
Flags
Kropp DevBody
Vid timerstyrning anger attributet namn på extern signal, t.ex Do eller Dv ( 
svarande mot Close ), även om DoClose anger en signal manövreras Close av 
objektet. 

PlcNode Buffer
Klass Buffer
Typ PlcNode
Flags INVISIBLE
Kropp DevBody