Class PiPos
Version 1.0
Modified 15-JAN-2025 13:23:35.00
Kod rt_plc_io.c
Översätter pulsräknarvärde till ingenjörsvärde (position, volym etc.). 

Antag att ingenjörsvärdet är en position. Den aktuell positionen, ActVal , 
beräknas vid varje exekvering med hjälp av den linjära ekvationen 

ActVal = Gain · ( PulsIn - PiCal1 ) + PosCal1 

Positionen beräknas relativt den kända positionen i 'calibration point 1' utifrån 
aktuell pulssignal, PulsIn , sparad pulssignal PiCal1 och sparad position, 
PosCal1 , i 'calibration point 1'. Förstärkningen, Gain , är antingen given eller 
beräknad med hjälp av en andra kalibreringspunkt, 'calibration point 2'. 
 
Hur kalibreringen utförs beskrivs nedan under Calibration. 

Calibration



Bestämning av position genom kalibrering med hjälp av 'calibration point 1'. 

Det finns fyra olika sätt att bestämma position: 

Ingen kalibrering. Vid konfigureringen anges pulsvärdet PICal1 när ActVal är 
lika med den kända positionen PosCal1 . Metoden kan användas då pulsvärdet, 
vid konfigureringen, är känt för en bestämd position. 
Operatören kalibrerar. Operatören anger det styrda föremålets position CalPos1 
och initierar därefter kalibreringen genom att sätta CalOrder1 . 
Automatisk kalibrering vid bestämd position. Koppla co1 -ingången till binär 
signal. Ange motsvarande position i CalPos1 . Vid positiv flank på CalOrder1 
avläses pulsvärdet PulsIn och lagras i PICal1 och värdet i CalPos1 kopieras till 
PosCal1 . 
Automatisk kalibrering mot en varierande position. Som i fall 3) men CalPos1 
kopplas också till en signal för den beräknade positionen. Vid positiv flank på 
CalOrder1 avläses pulsvärdet PulsIn och lagras i PICal1 och värdet PosCal1 
uppdateras i enlighet med den externa signalen.
Automatisk kalibrering bör ske vid låg hastighet för att undvika positionsfel 
Bestämning av förstärkningen (= Gain ) genom kalibrering med hjälp av 
'calibration point 2' . 

Ingen kalibrering.
Konstruktören anger Gain ; (= lägesdifferens per puls ). Detta är det normala 
förfarandet då konstruktören vet pulsgivarens karakteristik. Om 
omsättningsfaktorn betecknas Omsfak och Omsfak anger antal pulser per 
enhet, t.ex mm, grader etc. gäller att Gain =1 / Omsfak 
Moment 2- 4 som för positionskalibrering ovan.
Först görs en kalibrering med hjälp av 'calibration point 1'. Därefter görs en 
kalibrering med hjälp av 'calibration point 2', varvid en ny position med 
tillhörande pulsvärde avläses. Därefter beräknas Gain .
Automatisk kalibrering av förstärkningen är förmodligen ovanlig. Däremot kan 
det vara aktuellt med omkalibrering efter byte av pulsgivare eller vid 
förslitning av mäthjul. 


RtBody attributes pwr_sClass_pipos
Int32 PulsIn PI Pulsräknarvärde ( i form av heltal). T.ex kan pulsvärdet hämtas genom
anslutning till PI-utgång på Count-objekt, till PI- eller PIX-utgång på GetPi -
objekt.

NB! Ansluts en analog signal, t.ex Av-signal, blir resultatet felaktigt.
Float32 CalPos1 CP1 Anger positionen i kalibreringspunkt 1. Värdet används vid
positionskalibrering.

Attributet kan tilldelas värde utvecklingsmiljön med hjälp av Objekts Editorn
och i målmiljön med t.ex funktion i C eller PLC program. är motsvarande
ingång ansluten sker uppdatering utifrån kopplad storhet.
Boolean CalOrder1 co1 'Calibration order 1'.

Flaggan anger om kalibrering av position ( se nedan under Calibration ) ska
initieras eller ej. FALSE betyder ingen kalibrering.

Övergången FALSE -> TRUE initierar 'calibration in point 1'. Pulsvärdet
PulsIn avläses och lagras i PICal1 och värdet i CalPos1 kopieras över till
PosCal1 .

Lämnas ingången öppen kan attributet sättas t.ex via funktion i C-program.

Sedan flaggan noterats ser ProviewR till att den tas ned.
Float32 CalPos2 CP2 Anger positionen i kalibreringspunkt 2. Värdet används vid kalibrering av
förstärkningen, dvs av Gain .

Attributet kan tilldelas värde i utvecklingsmiljön med hjälp av Objekts Editorn
och i målmiljön med t.ex funktion i C eller PLC program. är motsvarande
ingång ansluten sker uppdatering utifrån kopplad storhet.
Boolean CalOrder2 co2 'Calibration order 2'.

Flaggan anger om kalibrering av Gain ( se nedan under Calibration ) ska
initieras eller ej. FALSE betyder ingen kalibrering.

Övergången FALSE -> TRUE initierar 'calibration in point 2'.

Lämnas ingången öppen kan attributet sättas t.ex via funktion i C-program.

Sedan flaggan noterats ser ProviewR till att den tas ned.
Float32 ActVal POS
Aktuell position. Enheten följer av enheten på Gain . Om Gain är i mm / puls
blir ActVal i mm.
Float32 Gain Gain Antag att omsättningsfaktorn betecknas Omsfak . Om Omsfak anger antalet
pulser per enhet, t.ex mm, grader etc. Gain erhålls då som 1 / Omsfak .
Attributets värde är antingen givet eller beräknat; se nedan under Calibration
Int32 PICal1 PICal1 Pulsräknarvärde vid senaste positionskalibreringen i 'calibration at point 1'.
Motsvarande ingenjörsvärde finns i PosCal1 .
Boolean CalOrder1Old CalOrder1Old Används för flankdetektering.
Boolean CalOrder2Old CalOrder2Old Används för flankdetektering.
Float32 PosCal1 PosCal1 Position vid senaste positionskalibrering enligt 'calibration at point 1'.
Motsvarande pulsräknarvärde finns i PiCal11 . PosCal1 har samma dimension
som ActVal .
Float32 PosCal2 CalPos2 Position vid senaste positionskalibrering enligt 'calibration at point 2'.
Motsvarande pulsräknarvärde finns i PiCal12 . PosCal2 har samma dimension
som ActVal .
Int32 AccCalPos1 AccCalPos1 Ej implementerad funktion. Anger operatörens behörighet att ändra värde på
CalPos1. Följande behörigheter är möjliga:

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten.
Int32 AccCalOrder1 AccCalOrder1 Ej implementerad funktion. Anger operatörens behörighet att ändra värde på
CalOrder1. Följande behörigheter är möjliga:

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten.
Int32 AccCalPos2 AccCalPos2 Ej implementerad funktion. Anger operatörens behörighet att ändra värde på
CalPos2. Följande behörigheter är möjliga:

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten.
Int32 AccCalOrder2 AccCalOrder2 Ej implementerad funktion. Anger operatörens behörighet att ändra värde på
CalOrder2. Följande behörigheter är möjliga:

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten.
Float32 MinCalPos1 MinCalPos1 Minsta tillåtna värde vid operatörsändring av CalPos1.
Float32 MaxCalPos1 MaxCalPos1 Största tillåtna värde vid operatörsändring av CalPos1.
Float32 MinCalPos2 MinCalPos2 Minsta tillåtna värde vid operatörsändring av CalPos2 .
Float32 MaxCalPos2 MaxCalPos2 Största tillåtna värde vid operatörsändring av CalPos2 .

DevBody attributes 
PlcNode PlcNode  


GraphPlcNode
object_type 69
parameters[0] 5
parameters[1] 0
parameters[2] 1
parameters[3] 0
subwindows 0
graphmethod 0 (standard, individual attributes)
graphindex 0
default_mask[0] 1
default_mask[1] 1
segname_annotation 1
compmethod 4
compindex 0
executeordermethod 2
objname PiPos
graphname PiPos
debugpar


Template Object
Gain 1.0
AccCalPos1 15
AccCalOrder1 15


Attributes detail


PulsIn Input
Klass Input
Typ Int32
Flags STATE | NOEDIT | REDUTRANSFER
GraphName PI
Kropp RtBody
Pulsräknarvärde ( i form av heltal). T.ex kan pulsvärdet hämtas genom 
anslutning till PI-utgång på Count-objekt, till PI- eller PIX-utgång på GetPi -
objekt. 

NB! Ansluts en analog signal, t.ex Av-signal, blir resultatet felaktigt. 

CalPos1 Input
Klass Input
Typ Float32
Flags REDUTRANSFER
GraphName CP1
Kropp RtBody
Anger positionen i kalibreringspunkt 1. Värdet används vid 
positionskalibrering. 

Attributet kan tilldelas värde utvecklingsmiljön med hjälp av Objekts Editorn 
och i målmiljön med t.ex funktion i C eller PLC program. är motsvarande 
ingång ansluten sker uppdatering utifrån kopplad storhet. 

CalOrder1 Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName co1
Kropp RtBody
'Calibration order 1'. 

Flaggan anger om kalibrering av position ( se nedan under Calibration ) ska 
initieras eller ej. FALSE betyder ingen kalibrering. 

Övergången FALSE -> TRUE initierar 'calibration in point 1'. Pulsvärdet 
PulsIn avläses och lagras i PICal1 och värdet i CalPos1 kopieras över till 
PosCal1 . 

Lämnas ingången öppen kan attributet sättas t.ex via funktion i C-program. 

Sedan flaggan noterats ser ProviewR till att den tas ned. 

CalPos2 Input
Klass Input
Typ Float32
Flags REDUTRANSFER
GraphName CP2
Kropp RtBody
Anger positionen i kalibreringspunkt 2. Värdet används vid kalibrering av 
förstärkningen, dvs av Gain . 

Attributet kan tilldelas värde i utvecklingsmiljön med hjälp av Objekts Editorn 
och i målmiljön med t.ex funktion i C eller PLC program. är motsvarande 
ingång ansluten sker uppdatering utifrån kopplad storhet. 

CalOrder2 Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName co2
Kropp RtBody
'Calibration order 2'. 

Flaggan anger om kalibrering av Gain ( se nedan under Calibration ) ska 
initieras eller ej. FALSE betyder ingen kalibrering. 

Övergången FALSE -> TRUE initierar 'calibration in point 2'. 

Lämnas ingången öppen kan attributet sättas t.ex via funktion i C-program. 

Sedan flaggan noterats ser ProviewR till att den tas ned. 

ActVal Output
Klass Output
Typ Float32
Flags STATE | NOEDIT | REDUTRANSFER
GraphName POS
Kropp RtBody

Aktuell position. Enheten följer av enheten på Gain . Om Gain är i mm / puls 
blir ActVal i mm. 

Gain Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName Gain
Kropp RtBody
Antag att omsättningsfaktorn betecknas Omsfak . Om Omsfak anger antalet 
pulser per enhet, t.ex mm, grader etc. Gain erhålls då som 1 / Omsfak .
Attributets värde är antingen givet eller beräknat; se nedan under Calibration 

PICal1 Intern
Klass Intern
Typ Int32
Flags REDUTRANSFER
GraphName PICal1
Kropp RtBody
Pulsräknarvärde vid senaste positionskalibreringen i 'calibration at point 1'. 
Motsvarande ingenjörsvärde finns i PosCal1 . 

CalOrder1Old Intern
Klass Intern
Typ Boolean
Flags STATE | NOEDIT | INVISIBLE | REDUTRANSFER
GraphName CalOrder1Old
Kropp RtBody
Används för flankdetektering. 

CalOrder2Old Intern
Klass Intern
Typ Boolean
Flags STATE | NOEDIT | INVISIBLE | REDUTRANSFER
GraphName CalOrder2Old
Kropp RtBody
Används för flankdetektering. 

PosCal1 Intern
Klass Intern
Typ Float32
Flags STATE | NOEDIT | INVISIBLE | REDUTRANSFER
GraphName PosCal1
Kropp RtBody
Position vid senaste positionskalibrering enligt 'calibration at point 1'. 
Motsvarande pulsräknarvärde finns i PiCal11 . PosCal1 har samma dimension 
som ActVal . 

PosCal2 Intern
Klass Intern
Typ Float32
Flags STATE | NOEDIT | INVISIBLE | REDUTRANSFER
GraphName CalPos2
Kropp RtBody
Position vid senaste positionskalibrering enligt 'calibration at point 2'. 
Motsvarande pulsräknarvärde finns i PiCal12 . PosCal2 har samma dimension 
som ActVal . 

AccCalPos1 Intern
Klass Intern
Typ Int32
Flags
GraphName AccCalPos1
Kropp RtBody
Ej implementerad funktion. Anger operatörens behörighet att ändra värde på 
CalPos1. Följande behörigheter är möjliga: 

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten. 

AccCalOrder1 Intern
Klass Intern
Typ Int32
Flags
GraphName AccCalOrder1
Kropp RtBody
Ej implementerad funktion. Anger operatörens behörighet att ändra värde på 
CalOrder1. Följande behörigheter är möjliga: 

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten. 

AccCalPos2 Intern
Klass Intern
Typ Int32
Flags
GraphName AccCalPos2
Kropp RtBody
Ej implementerad funktion. Anger operatörens behörighet att ändra värde på 
CalPos2. Följande behörigheter är möjliga: 

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten. 

AccCalOrder2 Intern
Klass Intern
Typ Int32
Flags
GraphName AccCalOrder2
Kropp RtBody
Ej implementerad funktion. Anger operatörens behörighet att ändra värde på 
CalOrder2. Följande behörigheter är möjliga: 

0 -- Ingen ändring tillåten
? 0 -- ändring tillåten. 

MinCalPos1 Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName MinCalPos1
Kropp RtBody
Minsta tillåtna värde vid operatörsändring av CalPos1. 

MaxCalPos1 Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName MaxCalPos1
Kropp RtBody
Största tillåtna värde vid operatörsändring av CalPos1. 

MinCalPos2 Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName MinCalPos2
Kropp RtBody
Minsta tillåtna värde vid operatörsändring av CalPos2 . 

MaxCalPos2 Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName MaxCalPos2
Kropp RtBody
Största tillåtna värde vid operatörsändring av CalPos2 . 

PlcNode Buffer
Klass Buffer
Typ PlcNode
Flags INVISIBLE
Kropp DevBody