All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
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