Class Drive
Version 1.0
Modified 15-JAN-2025 13:23:36.00
Kod rt_plc_drive.c
Enkel (= START/STOPP) motorstyrning med övervakning av kontaktorsvar 
och rörelsevakt. 
Tre skilda förreglingstyper finns: 

- säkerhetsförregling, SafeStop 
- driftsförregling, ProdStop 
- starthinder, NoStart 

SafeStop och ProdStop blockerar varför sig de interna larmen ( Alarm1 , ..., 
Alarm3 ), dvs när SafeStop eller ProdStop är satt kan inte något av larmen bli 
TRUE. 

För fram/back-drift användes lämpligen två enkla drifter (dvs. två Drive 
objekt), vilka förreglar varandra för samtidig drift via SafeStop.

Val av driftläge, LOKAL / MANUELL / AUTO, görs med hjälp av insignalen 
Local och utsignalen ManMode enligt: 

LOCAL
- Används vid körning från yttre pulpet, manöverskåp e.d. 
- Enbart säkerhetsförseglingen SafeStop beaktas. 
- LocStart har en återfjädrande tryckknappsfunktion med slutande startfunktion. 
  Signalen ska hållas satt tills själv-
  hållning erhålls via kontaktorsvaret ConOn; se nedan. 
- LocDrive har en återfjädrande tryckknappsfunktion med brytande 
  stoppfunktion. Ett alternativt sätt att stoppa är att sätta Local = FALSE.
 
MANUAL/AUTO
- Både drifts- och säkerhetsförreglingen beaktas. 
- I läge MANUAL manövreras START/STOPP med hjälp av parametrarna 
  ManSta resp ManSto. 
- I läge AUTO sker START vid positiv flank på AutoStart; STOPP då AutoStart 
  = 0, dvs inte på flanken utan på nivån. 
- Växlingarna,
  -- AUTO --> MANUAL, påverkar inte styrsignalen, Order.
  -- MANUAL --> AUTO. Om styrsignalen var satt i driftläge
     MANUAL och AutoStart = TRUE förblir den satt efter övergången annars inte.

Övervakningar. Om inte kontaktorsvar resp hastighetsvakt används lämnas 
motsvarande ingång öppen. Internt används då utsignalen Order istället för den 
saknade insignalen. Det är alltså inte värdet på ProdTim eller SpeedTim som 
avgör om de beaktas. 

Exempel

Skruv med hastighetsvakt 
Förutsättningar: 

Manöverpulpet för "på platsen körning". 
Signaler för nödstopp och termisk utlösning finns. 
Skruven får köras först om en viss pump, PUMP1, är igång. Denna pump 
representeras och körs från annan Drive -instans. PUMP1-restriktionen gäller 
dock ej vid körning från manöverpulpet. 
Skruven körs i driftläge AUTO med rotation i 5 min varje halvtimme eller på 
operatörsorder; 'WAIT0' har TimerTime = 25 60 sekunder och 'WAIT1' 
TimerTime = 5 60 sekunder. 
Vid larm ska meddelande ges. 
 
Periodical Control of a Contactor 

Fram/Back drift 
Körning enbart i driftläge AUTO. Fram/back begärs via Dv-signaler. 
Kontaktorsvar finns men ingen hastighetsvakt. De båda enkla drifterna 
förreglar varandra och växlingen mellan Fram/Back separeras i tiden av 
'TIMER0' resp. 'TIMER1'. 

Configuration of a Forward/Backward Operation 

Två bandtransportörer


 
Transportbandet 'Trp1', får startas först om 'Trp2' är igång (= driftsförregling). 
Transportbanden har gemensam signal för termisk utlösning. 
 
Shows the Operational Indicator Used to Control the Order of Starting 

AND-grinden för start av 'TRP1' krävs för att få positiv flank på startsignalen 
efter att 'TRP2' kommit igång. 

Också i driftläge MANUAL gäller att 'TRP1' förreglas av 'TRP2' och 'TRP2' av 
nivåvakter. Skulle en manöverpulpet för "på platsen körning" anslutas, gäller i 
driftläge LOCAL enbart förreglingen mot termisk utlösning. 


RtBody attributes pwr_sClass_drive
Boolean AutoStart sta Anger i driftläge AUTO en START begäran. Övergången FALSE --> TRUE innebär
START-begäran.
Om AutoNoStop inte används, innebär FALSE en STOPP-begäran.
Boolean AutoNoStop nst Anger i driftläge AUTO en STOPP begäran. FALSE betyder STOPP-
begäran.
Om ej kopplad, används AutoStart för STOPP-begäran.
Boolean Local loc Val av driftläge. Signalen kan komma från vridomkopplare e.d. FALSE
betyder att driftläget 'NOT LOCAL' väljs och ManMode huruvida det är
MANUAL eller AUTO som gäller. TRUE innebär att driftläge LOCAL har
valts.
Boolean LocStart lst Anger i driftläge LOCAL en start-begäran. FALSE betyder ingen åtgärd;
TRUE medför att driftordern, Order , sätts.
Boolean LocDrive ldr Anger i driftläge LOCAL en STOPP-begäran. FALSE medför att driftordern,
Order , tas ned; notera slutande funktion . TRUE innebär ingen åtgärd, men är
nödvändig för att möjliggöra nästa START-begäran av LocStart .
Boolean ConOn con Kontaktorsvar.
Om con-ingången lämnas öppen används ord-utgången som insignal och värdet
lagras i ConOn . FALSE betyder att kontaktorn inte gått till inom tiden
ProdTim och TRUE att den den gjort det.
Boolean Speed sl Hastighets- eller rörelsevakt.

Om sl-ingången lämnas öppen används ind-utgången som insignal och värdet
lagras i Speed . FALSE betyder ingen rörelse och TRUE indikerar rörelse.
Attributet påverkar Alarm3 .
Boolean SafeStop ss Anger säkerhetsförreglingens tillstånd. FALSE betyder att
säkerhetsförreglingen ej löst ut. TRUE innebär ovillkorligt STOPP, dvs.
driftordern, Order , sätts till STOPP oberoende av driftläge.
Boolean ProdStop ps Anger produktionsförreglingens tillstånd. Produktionsförreglingen beaktas
enbart i lägena AUTO och MANUAL. FALSE betyder att
produktionsförreglingen ej löst ut. TRUE innebär att driftordern, Order , sätts
till STOPP
Boolean NoStart nos Anger starthinderförreglingens tillstånd. Starthinder beaktas enbart i lägena
AUTO och MANUAL. FALSE betyder att inget starthinder registrerats. TRUE
innebär att något starthinder föreligger.

Om NoStart gör övergången FALSE --> TRUE när driftordern, Order = TRUE,
påverkas inte driftordern.
Boolean ManMode man Anger valt driftläge ( MANUAL eller AUTO) när LOCAL är FALSE.
Attributet används som en vanlig parameter, dvs. dess värde kan ändras från
t.ex. tillämpningsprogram. En fördel med att placera attributet som utgång är
att det därigenom blir enklare att använda i den grafiska konfigurationen. Om
Local = FALSE betyder,

FALSE -- valt driftläge är AUTO
TRUE -- valt driftläge är MANUAL
Boolean Order ord Driftordern anger antingen START eller STOPP. FALSE betyder STOPP och
TRUE innebär START.
Boolean Ind ind Driftindikering med avseende på drift eller ej drift. Attributet används för
bekräftelse av aktuellt drifttillstånd. Det används t.ex. för att förregla drifter
eller larm som endast är aktuella under drift. FALSE betyder ingen drift;
TRUE innebär driftorder och svar från kontaktor och rörelsevakt, m. a. o. drift,
dvs. Order = ConOn = Speed är TRUE och driftläget är 'NOT LOCAL'.
Boolean Alarm1 al1 Anger om kontaktorsvaret kom inom den tidsgräns som ProdTim anger eller ej.
FALSE betyder inget larm; TRUE innebär att kontaktorsvaret inte kom inom
den tid som anges av ProdTim . Driftordern, Order , sätts till STOPP och
larmet kvarstår tills nästa START-begäran ( AutoStart gör övergången FALSE
--> TRUE eller ManSta blir TRUE) görs.

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange
t.ex. ' Motorn xxx startar inte ' i övervakningsobjektets DetectText .
Boolean Alarm2 al2 Anger om kontaktorsvaret anlände inom den tidsgräns som ProdTim anger och
kvarstår eller ej. FALSE betyder inget larm; TRUE innebär att kontaktorsvaret
kom inom föreskriven tid men att det därefter försvunnit . Driftordern, Order ,
sätts till STOPP och larmet kvarstår tills nästa START-begäran görs.

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange
t.ex. ' Förlorat kontaktorsvar från xxx ' i övervakningsobjektets DetectText.
Boolean Alarm3 al3 FALSE betyder inget larm.

TRUE innebär att kontaktorsvaret kom, men att Speed inte är TRUE när
SpeedTim löpt ut eller att rörelseindikeringen därefter försvunnit . Driftordern,
Order , sätts till STOPP och larmet kvarstår tills nästa START-begäran görs.

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange
t.ex. ' Ingen rörelse på .... ', ' Inget drifttryck på .... ' i övervakningsobjektets
DetectText .
Boolean SumAlarm als Summalarm. Anger om något av objektets interna larm är aktivt eller ej.
FALSE betyder att inget aktivt larm finns i objektet; TRUE innebär att minst
en av utgångarna al1 , al2 eller al3 är TRUE.

Koppla ett DSup objekt till utgången om meddelande ska skickas och definiera
texten i DetectText .
Boolean ManSta ManSta Anger START-begäran om driftläget är MANUAL. FALSE betyder ingen
begäran; TRUE innebär START-begäran. Begäran tas ned av ProviewR-
systemet då den noterats.
Boolean ManStp ManStp Anger STOPP-begäran om driftläget är MANUAL. FALSE betyder ingen
begäran; TRUE innebär STOPP-begäran. Begäran tas ned av ProviewR-
systemet då den noterats.
Float32 ProdTim ProdTim Anger, i sekunder, tidsgränsen ( = 0 ) för kontaktorsvar. Om svaret kommer
senare får Alarm1 värdet TRUE. Tiden räknas från det ögonblick då Order blir
TRUE.
Float32 SpeedTim SpeedTim Anger, i sekunder, tidsgränsen ( = 0 ) för rörelseindikering. Om svaret kommer
senare får Alarm3 värdet TRUE. Tiden räknas från det ögonblick då ConOn
blir TRUE.
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 inte används, på TimerDoDum.
Efter tiden TimerTime tas den signal som utpekas av TimerDo ned.
Float32 TimerTime   Timerns värde i sekunder. Värdet sätts i målmiljön till ProdTime eller
SpeedTime .
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.
Int32 ManAcc ManAcc Ej implementerad funktion. Anger operatörens behörighet att växla mellan
driftlägena MANUAL / AUTO. Följande behörigheter är möjliga:

0 -- Ingen växling tillåten
? 0 -- Växling tillåten.
Int32 Status Status Följande värden finns:

0 -- Stoppad; Order = Ind = FALSE
1 -- Stoppar; Order = FALSE och Ind = TRUE
2 -- Väntar på kontaktorsvar
3 -- Väntar på att rörelsevakten ska indikera rörelse
4 -- Drift

DevBody attributes 
PlcNode PlcNode  


GraphPlcNode
object_type 180
parameters[0] 10
parameters[1] 0
parameters[2] 7
parameters[3] 0
subwindows 0
graphmethod 0 (standard, individual attributes)
graphindex 0
default_mask[0] 161
default_mask[1] 70
segname_annotation 1
compmethod 30
compindex 0
executeordermethod 2
objname Drive
graphname Drive
debugpar


Template Object
LocDrive 1
ProdTim 1.0
SpeedTim 2.0
ManAcc 15


Attributes detail


AutoStart Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName sta
Kropp RtBody
Anger i driftläge AUTO en START begäran. Övergången FALSE --> TRUE innebär 
START-begäran. 
Om AutoNoStop inte används, innebär FALSE en STOPP-begäran.

AutoNoStop Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName nst
Kropp RtBody
Anger i driftläge AUTO en STOPP begäran. FALSE betyder STOPP- 
begäran. 
Om ej kopplad, används AutoStart för STOPP-begäran.

Local Input
Klass Input
Typ Boolean
Flags NOINVERT | REDUTRANSFER
GraphName loc
Kropp RtBody
Val av driftläge. Signalen kan komma från vridomkopplare e.d. FALSE 
betyder att driftläget 'NOT LOCAL' väljs och ManMode huruvida det är 
MANUAL eller AUTO som gäller. TRUE innebär att driftläge LOCAL har 
valts. 

LocStart Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName lst
Kropp RtBody
Anger i driftläge LOCAL en start-begäran. FALSE betyder ingen åtgärd; 
TRUE medför att driftordern, Order , sätts. 

LocDrive Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName ldr
Kropp RtBody
Anger i driftläge LOCAL en STOPP-begäran. FALSE medför att driftordern, 
Order , tas ned; notera slutande funktion . TRUE innebär ingen åtgärd, men är 
nödvändig för att möjliggöra nästa START-begäran av LocStart . 

ConOn Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName con
Kropp RtBody
Kontaktorsvar.
Om con-ingången lämnas öppen används ord-utgången som insignal och värdet 
lagras i ConOn . FALSE betyder att kontaktorn inte gått till inom tiden 
ProdTim och TRUE att den den gjort det. 

Speed Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT
GraphName sl
Kropp RtBody
Hastighets- eller rörelsevakt. 

Om sl-ingången lämnas öppen används ind-utgången som insignal och värdet 
lagras i Speed . FALSE betyder ingen rörelse och TRUE indikerar rörelse. 
Attributet påverkar Alarm3 . 

SafeStop Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName ss
Kropp RtBody
Anger säkerhetsförreglingens tillstånd. FALSE betyder att 
säkerhetsförreglingen ej löst ut. TRUE innebär ovillkorligt STOPP, dvs. 
driftordern, Order , sätts till STOPP oberoende av driftläge. 

ProdStop Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName ps
Kropp RtBody
Anger produktionsförreglingens tillstånd. Produktionsförreglingen beaktas 
enbart i lägena AUTO och MANUAL. FALSE betyder att 
produktionsförreglingen ej löst ut. TRUE innebär att driftordern, Order , sätts 
till STOPP 

NoStart Input
Klass Input
Typ Boolean
Flags STATE | NOEDIT | NOINVERT | REDUTRANSFER
GraphName nos
Kropp RtBody
Anger starthinderförreglingens tillstånd. Starthinder beaktas enbart i lägena 
AUTO och MANUAL. FALSE betyder att inget starthinder registrerats. TRUE 
innebär att något starthinder föreligger. 

Om NoStart gör övergången FALSE --> TRUE när driftordern, Order = TRUE, 
påverkas inte driftordern. 

ManMode Output
Klass Output
Typ Boolean
Flags REDUTRANSFER
GraphName man
Kropp RtBody
Anger valt driftläge ( MANUAL eller AUTO) när LOCAL är FALSE. 
Attributet används som en vanlig parameter, dvs. dess värde kan ändras från 
t.ex. tillämpningsprogram. En fördel med att placera attributet som utgång är 
att det därigenom blir enklare att använda i den grafiska konfigurationen. Om 
Local = FALSE betyder, 

FALSE -- valt driftläge är AUTO
TRUE -- valt driftläge är MANUAL 

Order Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ord
Kropp RtBody
Driftordern anger antingen START eller STOPP. FALSE betyder STOPP och 
TRUE innebär START. 

Ind Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ind
Kropp RtBody
Driftindikering med avseende på drift eller ej drift. Attributet används för 
bekräftelse av aktuellt drifttillstånd. Det används t.ex. för att förregla drifter 
eller larm som endast är aktuella under drift. FALSE betyder ingen drift; 
TRUE innebär driftorder och svar från kontaktor och rörelsevakt, m. a. o. drift, 
dvs. Order = ConOn = Speed är TRUE och driftläget är 'NOT LOCAL'. 

Alarm1 Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName al1
Kropp RtBody
Anger om kontaktorsvaret kom inom den tidsgräns som ProdTim anger eller ej. 
FALSE betyder inget larm; TRUE innebär att kontaktorsvaret inte kom inom 
den tid som anges av ProdTim . Driftordern, Order , sätts till STOPP och 
larmet kvarstår tills nästa START-begäran ( AutoStart gör övergången FALSE 
--> TRUE eller ManSta blir TRUE) görs. 

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange 
t.ex. ' Motorn xxx startar inte ' i övervakningsobjektets DetectText . 

Alarm2 Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName al2
Kropp RtBody
Anger om kontaktorsvaret anlände inom den tidsgräns som ProdTim anger och 
kvarstår eller ej. FALSE betyder inget larm; TRUE innebär att kontaktorsvaret 
kom inom föreskriven tid men att det därefter försvunnit . Driftordern, Order , 
sätts till STOPP och larmet kvarstår tills nästa START-begäran görs. 

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange 
t.ex. ' Förlorat kontaktorsvar från xxx ' i övervakningsobjektets DetectText. 

Alarm3 Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName al3
Kropp RtBody
FALSE betyder inget larm. 

TRUE innebär att kontaktorsvaret kom, men att Speed inte är TRUE när 
SpeedTim löpt ut eller att rörelseindikeringen därefter försvunnit . Driftordern, 
Order , sätts till STOPP och larmet kvarstår tills nästa START-begäran görs. 

Koppla ett DSup objekt till utgången om meddelande ska skickas och ange 
t.ex. ' Ingen rörelse på .... ', ' Inget drifttryck på .... ' i övervakningsobjektets 
DetectText . 

SumAlarm Output
Klass Output
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName als
Kropp RtBody
Summalarm. Anger om något av objektets interna larm är aktivt eller ej. 
FALSE betyder att inget aktivt larm finns i objektet; TRUE innebär att minst 
en av utgångarna al1 , al2 eller al3 är TRUE. 

Koppla ett DSup objekt till utgången om meddelande ska skickas och definiera 
texten i DetectText . 

ManSta Intern
Klass Intern
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ManSta
Kropp RtBody
Anger START-begäran om driftläget är MANUAL. FALSE betyder ingen 
begäran; TRUE innebär START-begäran. Begäran tas ned av ProviewR-
systemet då den noterats. 

ManStp Intern
Klass Intern
Typ Boolean
Flags STATE | NOEDIT | REDUTRANSFER
GraphName ManStp
Kropp RtBody
Anger STOPP-begäran om driftläget är MANUAL. FALSE betyder ingen 
begäran; TRUE innebär STOPP-begäran. Begäran tas ned av ProviewR-
systemet då den noterats. 

ProdTim Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName ProdTim
Kropp RtBody
Anger, i sekunder, tidsgränsen ( = 0 ) för kontaktorsvar. Om svaret kommer 
senare får Alarm1 värdet TRUE. Tiden räknas från det ögonblick då Order blir 
TRUE. 

SpeedTim Intern
Klass Intern
Typ Float32
Flags REDUTRANSFER
GraphName SpeedTim
Kropp RtBody
Anger, i sekunder, tidsgränsen ( = 0 ) för rörelseindikering. Om svaret kommer 
senare får Alarm3 värdet TRUE. Tiden räknas från det ögonblick då ConOn 
blir TRUE. 

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 timer kö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 inte används, på TimerDoDum. 
Efter tiden TimerTime tas den signal som utpekas av TimerDo ned. 

TimerTime Intern
Klass Intern
Typ Float32
Flags STATE | INVISIBLE | REDUTRANSFER
Kropp RtBody
Timerns värde i sekunder. Värdet sätts i målmiljön till ProdTime eller 
SpeedTime . 

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.

ManAcc Intern
Klass Intern
Typ Int32
Flags
GraphName ManAcc
Kropp RtBody
Ej implementerad funktion. Anger operatörens behörighet att växla mellan 
driftlägena MANUAL / AUTO. Följande behörigheter är möjliga: 

0 -- Ingen växling tillåten
? 0 -- Växling tillåten. 

Status Intern
Klass Intern
Typ Int32
Flags STATE | NOEDIT | REDUTRANSFER
GraphName Status
Kropp RtBody
Följande värden finns: 

0 -- Stoppad; Order = Ind = FALSE
1 -- Stoppar; Order = FALSE och Ind = TRUE
2 -- Väntar på kontaktorsvar
3 -- Väntar på att rörelsevakten ska indikera rörelse
4 -- Drift 

PlcNode Buffer
Klass Buffer
Typ PlcNode
Flags INVISIBLE
Kropp DevBody