Class DsTrend
Version 1.0
Modified 26-MAY-2023 14:29:29.00
Långtidslagrar data för trendkurva. 

I varje nod där mätdata för trendkurvor ska lagras finns behov av ett DsTrend-
jobb som genomsöker nodens (= lokala ) datalagringsobjekt. 

Varje attribut (= mätstorhet) som ska kunna plottas kräver ett 
datalagringsobjekt. Attribut i datalagringsobjektet anger t.ex. namnet på den 
samplade mätstorheten och hur ofta lagring ska.
 
DsTrend Job with Data Storage Objects 

NB! Kom ihåg att sampling av fysiska signaler sker med ändlig frekvens. För 
närvarande samplas analoga signaler (Ai, Ao) med 5 Hz och Co-, Di-, Do-
signaler med basfrekvensen vilken är lika med den frekvens som det i noden 
oftast exekverande PLC programmet har. Högsta möjliga basfrekvens är 50 Hz. 

En trendkurva består av mätvärden insamlade med given frekvens. 

Insamlade mätvärden lagras i DataBuffer . Internt är DataBuffer uppdelad i två 
lika delbuffrar. Arbetssättet går ut på att uppdatera varje element i den ena av 
delbuffrarna och sedan fortsätta med första elementet i den andra delbufferten. 
När också det sista elementet i den andra delbufferten blivit uppdaterad 
fortsätter uppdateringen med första elementet i den första delbufferten. 
Delbuffrarna uppdateras växelvis. BufferStatus anger hur resp delbuffert 
används för tillfället. 

Det samplade attributet ska vara en lokal storhet . Därför ska i målmiljön 
DsTrend objekten finnas i samma nod som de samplade attributens objekt. 

DsTrend modulen inkluderas i resp. processnods EBUILD-fil med hjälp av:
program PWR_EXE:RS_DS_TREND.EXE_ELN /warm_debug 

Det samplade attributet förutsätts vara någon av typerna: 

- pwr_tBoolean 

- pwr_tFloat32, pwr_tFloat64 

- pwr_tInt8, pwr_tInt16, pwr_tInt32 

- pwr_tUInt8, pwr_tUInt16, pwr_tUInt32 

Tips

Om till signal hör objekt av typen DsTrend , DsFast eller DsHist kan 
förhållandet markeras genom att objektet placeras direkt under aktuellt 
signalobjekt.

Configuration of a DsTrend Object 


RtBody attributes pwr_sClass_DsTrend
String80 Description   Valfri text.
UInt32 ScanTime   Anger, i sekunder, DsTrend-jobbets cykeltid. Se också Multiple .

Attributet tilldelas samma värde som motsvarande attribut i nodens
DsTrendConf objekt. Detta görs vid DsTrend-jobbets initialisering.
UInt16 Multiple   Den enskilda mätstorhet som DataName anger kommer att lagrasmed perioden
ScanTime · Multiple .
UInt16 NextMultiple   Används för att hålla reda på vid vilka exekveringar just denna instans ska
hanteras. NextMultiple sätts till värdet av Multiple och räknas därefter ned vid
varje exekvering. Blir NextMultiple = 0 sker sampling och lagring varefter
attributet åter tilldelas värdet Multiple .
UInt32 DataType   Lagrar mätstorhetens datatyp. Denna ska vara någon av typerna:
pwr_tBoolean, pwr_tFloat32, pwr_tFloat64, pwr_tInt8, pwr_tInt16,
pwr_tInt32, pwr_tUInt8, pwr_tUInt16 eller pwr_tUInt32.
AttrRef DataName   Samplade mätstorhetens (attributets) fullständiga namn. Storheten, som ska
vara lokal, anges t.ex. som PROC1-TEMP1. ActualValue
Pointer to Float32 DataPointer   Pekar på den storhet som ska samplas och lagras.
RefId DataSubId   Identitet vid prenumeration av mätstorheten.
UInt32 StorageTime   Anger, i sekunder, längden på lagringssekvensen per delbuffert. Om denna tid,
med hänsyn till lagringsfrekvensen, överskrider vad som ryms i DataBuffer ,
förloras de äldsta värdena i DataBuffer .

eftersom ScanTime = Multiple = 1

StorageTime , Multiple , BaseFrequency och NoOfBufElement bestämmer
NoOfSample .
CurveLayoutMask Layout   Curve window layout.
UInt32 NoOfSample   Anger antal sampel som kan lagras per delbuffert.
UInt16 WriteBuffer   Anger vilken delbuffert som för närvarande används för skrivning.

= 0, .... ( NoOfBuffers - 1)
Array of UInt16 NextWriteIndex   Anger var i den aktuella delbufferten nästa skrivning ska ske.
Array of UInt16 BufferStatus   Anger aktuell status för resp. delbuffert. Följande värden finns:

0 -- Delbufferten används ej för skrivning.
1 -- Delbufferten används för skrivning.
UInt16 NoOfBuffers   Anger antalet delbuffrar som arean DataBuffer består av. NoOfBufElement
anger antalet element som varje delbuffert består av.
UInt16 NoOfBufElement   Anger antal element varje delbuffert består av.
Array of Time BufferTime   Tidpunkt, per delbuffert, för första lagringen i en skrivsession.
Array of Float32 DataBuffer   Totalt tillgängligt lagringsutrymme. Max. storleken är förutbestämd (=
NoOfBuffers · NoOfBufElement ) och anger antal sampel som samtidigt kan
hållas lagrade i en lagringscykel.


Template Object
Multiple 1
StorageTime 239
BufferStatus[0] 1
BufferStatus[1] 1
NoOfBuffers 2
NoOfBufElement 239


Attributes detail


Description Attribute
Klass Attribute
Typ String80
Flags
Kropp RtBody
Valfri text. 

ScanTime Attribute
Klass Attribute
Typ UInt32
Flags STATE | INVISIBLE
Kropp RtBody
Anger, i sekunder, DsTrend-jobbets cykeltid. Se också Multiple . 

Attributet tilldelas samma värde som motsvarande attribut i nodens 
DsTrendConf objekt. Detta görs vid DsTrend-jobbets initialisering. 

Multiple Attribute
Klass Attribute
Typ UInt16
Flags
Kropp RtBody
Den enskilda mätstorhet som DataName anger kommer att lagrasmed perioden 
ScanTime · Multiple . 

NextMultiple Attribute
Klass Attribute
Typ UInt16
Flags STATE | INVISIBLE
Kropp RtBody
Används för att hålla reda på vid vilka exekveringar just denna instans ska 
hanteras. NextMultiple sätts till värdet av Multiple och räknas därefter ned vid 
varje exekvering. Blir NextMultiple = 0 sker sampling och lagring varefter 
attributet åter tilldelas värdet Multiple . 

DataType Attribute
Klass Attribute
Typ UInt32
Flags STATE | INVISIBLE
Kropp RtBody
Lagrar mätstorhetens datatyp. Denna ska vara någon av typerna: 
pwr_tBoolean, pwr_tFloat32, pwr_tFloat64, pwr_tInt8, pwr_tInt16, 
pwr_tInt32, pwr_tUInt8, pwr_tUInt16 eller pwr_tUInt32. 

DataName Attribute
Klass Attribute
Typ AttrRef
Flags
Kropp RtBody
Samplade mätstorhetens (attributets) fullständiga namn. Storheten, som ska 
vara lokal, anges t.ex. som PROC1-TEMP1. ActualValue 

DataPointer Attribute
Klass Attribute
Typ Pointer to Float32
Flags POINTER | PRIVATE | STATE | INVISIBLE
Kropp RtBody
Pekar på den storhet som ska samplas och lagras. 

DataSubId Attribute
Klass Attribute
Typ RefId
Flags STATE | INVISIBLE
Kropp RtBody
Identitet vid prenumeration av mätstorheten. 

StorageTime Attribute
Klass Attribute
Typ UInt32
Flags
Kropp RtBody
Anger, i sekunder, längden på lagringssekvensen per delbuffert. Om denna tid, 
med hänsyn till lagringsfrekvensen, överskrider vad som ryms i DataBuffer , 
förloras de äldsta värdena i DataBuffer . 

eftersom ScanTime = Multiple = 1 

StorageTime , Multiple , BaseFrequency och NoOfBufElement bestämmer 
NoOfSample . 

Layout Attribute
Klass Attribute
Typ CurveLayoutMask
Flags
Kropp RtBody
 Curve window layout.

NoOfSample Attribute
Klass Attribute
Typ UInt32
Flags STATE | INVISIBLE
Kropp RtBody
Anger antal sampel som kan lagras per delbuffert. 

WriteBuffer Attribute
Klass Attribute
Typ UInt16
Flags STATE | INVISIBLE
Kropp RtBody
Anger vilken delbuffert som för närvarande används för skrivning. 

= 0, .... ( NoOfBuffers - 1) 

NextWriteIndex Attribute
Klass Attribute
Typ Array of UInt16
Flags ARRAY | STATE | INVISIBLE
Elements 2
Kropp RtBody
Anger var i den aktuella delbufferten nästa skrivning ska ske. 

BufferStatus Attribute
Klass Attribute
Typ Array of UInt16
Flags ARRAY | STATE | INVISIBLE
Elements 2
Kropp RtBody
Anger aktuell status för resp. delbuffert. Följande värden finns: 

0 -- Delbufferten används ej för skrivning.
1 -- Delbufferten används för skrivning. 

NoOfBuffers Attribute
Klass Attribute
Typ UInt16
Flags CONST | INVISIBLE
Kropp RtBody
Anger antalet delbuffrar som arean DataBuffer består av. NoOfBufElement 
anger antalet element som varje delbuffert består av. 

NoOfBufElement Attribute
Klass Attribute
Typ UInt16
Flags CONST | INVISIBLE
Kropp RtBody
Anger antal element varje delbuffert består av. 

BufferTime Attribute
Klass Attribute
Typ Array of Time
Flags ARRAY | STATE | INVISIBLE
Elements 2
Kropp RtBody
Tidpunkt, per delbuffert, för första lagringen i en skrivsession. 

DataBuffer Attribute
Klass Attribute
Typ Array of Float32
Flags ARRAY | STATE | INVISIBLE
Elements 478
Kropp RtBody
Totalt tillgängligt lagringsutrymme. Max. storleken är förutbestämd (= 
NoOfBuffers · NoOfBufElement ) och anger antal sampel som samtidigt kan 
hållas lagrade i en lagringscykel.