All Downloads are FREE. Search and download functionalities are using the official Maven repository.

data.nodescript.turnouts.Servo_with_frog.nodescript Maven / Gradle / Ivy

## Dieses Script erstellt Asseccory, Macro und ServoPort für Weichen
## es kann die Anzahl der Servos ausgewählt werden
##
## Es wurde nur für die OneControl geschrieben
##
##  
## history: 2017-12-26 Th.Gabriel, erste Version
##          2018-12-30 A. Kuhtz, neue OneControl/OneDriveTurn PIDs
##          2018-12-30 A. Kuhtz, Fix erste SwitchPort Nummer
##
## -------------- 1. Select Target
##application(text:de="Weichenantrieb mit Servo an OneControl", text:en="Turnout (servo) at OneControl", text:nl="Wisselaandrijving met Servo op de OneControl")
##instruction(text:de="Konfiguration von Servo für Weichensteuerung mit Herzstückpolarisierung", text:en="Configuration of servo for turnouts with frog polarization")
##author(Th. Gabriel)
##
##input($my_accessory:accessory, text:de="Nummer des ersten zu erzeugenden Accessory", text:en="Number of the first Accessory", default=0)
##input($my_macro:macro, text:de="Nummer des ersten Macros (Anzahl = 2* Accessory)", text:en="Number of the first macro (total = 2 * accessory)", default=0)
##input($my_Servo:servo, text:de="Nummer des ersten ServoPort", text:en="Number of the first servo port", default=0)
##input($my_ServoStart:int, text:de="Servo Startwert", text:en="servo start value", default=120)
##input($my_ServoEnde:int, text:de="Servo Endwert", text:en="servo end value", default=150)
##input($my_ServoLZ:int, text:de="Servo Laufzeit", text:en="servo speed", default=10)
##input($my_ServoAbzeit:int, text:de="Abschaltzeit(n * 20ms) Servospannung", text:en="Power OFF Servo (n * 20ms)", default=50)
##input($my_NameWeiche:int, text:de="Nummer der ersten Weiche(Name)", text:en="Number of the first turnout", default=1)
##input($my_AnzahlWeiche:int, text:de="Anzahl der Weichen", text:en="Number of turnouts", default=1)
##input($my_PowerPortYes:boolean, text:de="Powerausgang benutzen", text:en="Use powerport", default=true)
##input($my_Relais:boolean, text:de="Relais bistabil", text:en="Relais bi-stable", default=true)
##input($my_PowerPort:switch, text:de="Nummer des ersten Powerausgang", text:en="Number of the first power output", default=8)

## -------------- 2. set Parameters for Ports

##Prüfung auf Onecontrol von Opendcc
##require(vid="13", pid="117,140,141,142,122,143,144,145")
##requireVersion(min=1.0.0, max=3.0.0)

## Prüfung der Auswahl
## Accessory
#if ($node_accessory_count - $my_AnzahlWeiche - $my_accessory  < 0)
 $exceptionThrower.throwUserDefined("zu wenig Accessorys frei")
#end

## Makro
#if ($node_macro_count - 2 * $my_AnzahlWeiche - $my_macro  < 0)
 $exceptionThrower.throwUserDefined("zu wenig Makros frei")
#end

## Servo
#if ($node_servo_count - $my_AnzahlWeiche - $my_Servo  < 0)
 $exceptionThrower.throwUserDefined("zu wenig ServoPorts frei")
#end


## PowerPort
 ## Abfrage ob Powerausgang benötigt wird
 #if ($my_PowerPortYes)
  ## Abfrage für Relaisart bistabil/mono
  #if ($my_Relais)
   #if ($node_enabled_switch_count - 2 * $my_AnzahlWeiche - ($my_PowerPort - $node_first_switchport_number)  < 0)
    $exceptionThrower.throwUserDefined("zu wenig PowerPorts frei")
   #end 
  #else
   #if ($node_enabled_switch_count - $my_AnzahlWeiche - ($my_PowerPort - $node_first_switchport_number)  < 0)
    $exceptionThrower.throwUserDefined("zu wenig PowerPorts frei")
   #end
  #end
 #end

 
#set ($my_AnzahlWeiche = $my_AnzahlWeiche - 1)
#set($AsseccoyName = "Weiche")



#set($ServoStartWert = $my_ServoStart)     ## Startwert Servojustierung
#set($ServoEndWert = $my_ServoEnde)        ## Endwert Servojustierung
#set($ServoLaufzeit = $my_ServoLZ)         ## Umlaufzeit von Start bis Ende in ms
#set($ServoAbschaltzeit = $my_ServoAbzeit) ## abschaltzeit der Spannung nach Laufzeitende in n * 20ms 

## -------------- 3. execute part of the script

## Schleife läuft die Anzahl der zu erstellenen Weichen(Servos)
#foreach ( $Anzahl in [0..7])
 #if ( $Anzahl > $my_AnzahlWeiche )
  #break
 #end  

 #set($Accessory0 = $my_accessory + $Anzahl)

 #set($macro0 = $my_macro + 2 * $Anzahl)    ## need some additional macros
 #set($macro1 = $macro0 + 1)                ## need some additional macros

 ##bei bistabilen Relais werden 2 Ports benutzt, sonst 1 Port
 #if ($my_Relais)
  #set($HerzG = $my_PowerPort + 2 * $Anzahl)
  #set($HerzA = $HerzG + 1)
 #else
  #set($Herz = $my_PowerPort + $Anzahl)
 #end  
  
 #set($Servo0 = $my_Servo + $Anzahl)
 #set($ServoCV = 95 + $Servo0 * 16)

 #set($NameWeiche = $my_NameWeiche + $Anzahl)

 
 ## Ports: (set Parameters)
 ## Servo
 set servo ${Servo0} name="W${NameWeiche}"
 config port ptype=servo lowerlimit=${ServoStartWert} upperlimit=${ServoEndWert} turntime=${ServoLaufzeit} number=${Servo0}
 set CV $ServoCV $my_ServoAbzeit
 
 ## Macro
 set macro ${macro0} name="W${NameWeiche}G"
 set macro ${macro1} name="W${NameWeiche}A"

 ## Ausgang
 ## Abfrage ob Powerausgang benötigt wird
 #if ($my_PowerPortYes)
  ## Abfrage für Relaisart bistabil/mono
  #if ($my_Relais)
   set switch ${HerzG} name="HerzW${NameWeiche}G"
   set switch ${HerzA} name="HerzW${NameWeiche}A"
   config port ptype=switch iotype=1 ticks=50 number=${HerzG}
   config port ptype=switch iotype=1 ticks=50 number=${HerzA}

   ## erstellt Macros mit 2 PowerPorts
   select macro ${macro0} ##Weiche grade 
   config macro repeat=1 slowdown=1
   add step ptype=macro action=stop name="W${NameWeiche}A"
   add step ptype=servo action=start target=0 name="W${NameWeiche}"
   add step delay=200 ptype=switch action=on name="HerzW${NameWeiche}G"

   select macro ${macro1} ##Weiche abzweig 
   config macro repeat=1 slowdown=1
   add step ptype=macro action=stop name="W${NameWeiche}G"
   add step ptype=servo action=start name="W${NameWeiche}" target=100
   add step delay=200 ptype=switch action=on name="HerzW${NameWeiche}A"
 
  #else
  
   set switch ${Herz} name="HerzW${NameWeiche}"
   config port ptype=switch iotype=0 ticks=0 number=${Herz}
   
   ## erstellt Macros mit 1 PowerPorts
   select macro ${macro0} ##Weiche grade 
   config macro repeat=1 slowdown=1
   add step ptype=macro action=stop name="W${NameWeiche}A"
   add step ptype=servo action=start target=0 name="W${NameWeiche}"
   add step delay=200 ptype=switch action=off name="HerzW${NameWeiche}"

   select macro ${macro1} ##Weiche abzweig 
   config macro repeat=1 slowdown=1
   add step ptype=macro action=stop name="W${NameWeiche}G"
   add step ptype=servo action=start name="W${NameWeiche}" target=100
   add step delay=200 ptype=switch action=on name="HerzW${NameWeiche}"  
  
  #end 
#else

 ## erstellt Macros ohne PowerPorts
 select macro ${macro0} ##Weiche grade 
 config macro repeat=1 slowdown=1
 add step ptype=macro action=stop name="W${NameWeiche}A"
 add step ptype=servo action=start target=0 name="W${NameWeiche}"

 select macro ${macro1} ##Weiche abzweig 
 config macro repeat=1 slowdown=1
 add step ptype=macro action=stop name="W${NameWeiche}G"
 add step ptype=servo action=start name="W${NameWeiche}" target=100
 
#end  


 ## Define Accessory
 set accessory ${Accessory0} name="${AsseccoyName}${NameWeiche}"
 select accessory ${Accessory0}
 add aspect 0 macroname="W${NameWeiche}G"
 add aspect 1 macroname="W${NameWeiche}A"
 config accessory startup restore ## restore; none; aspect=1
 
#end




© 2015 - 2024 Weber Informatics LLC | Privacy Policy