Files
ISTTOK/epics/css/sys-mng-opi/CSS/cfg-files/MARTe-WaterTank-EPICS.cfg
2019-10-21 16:02:55 +01:00

1003 lines
20 KiB
INI

LoggerAddress = "localhost"
LoggerPort = 32767
DefaultCPUs = 1
Version = "$Id: MARTe-WaterTank.cfg,v 1.5 2010/04/20 15:42:02 ppcc_dev Exp $"
+WEB = {
Class = HttpGroupResource
+BROWSE = {
Title = "Http Object Browser"
Class = HttpGCRCBrowser
AddReference = {MARTe StateMachine OBJBROWSE THRBROWSE CFGUpload HTTPSignalServer MatlabSignalServer FlotPlot}
}
+RGRAPH_LIB_DIR = {
Class = HttpDirectoryResource
BaseDir = "../3rdPartyLibs/RGraph/libraries"
}
+PLOTTING_GAM_DIR = {
Class = HttpDirectoryResource
BaseDir = "../GAMs/PlottingGAM"
}
+FLOT_DIR = {
Class = HttpDirectoryResource
BaseDir = "../3rdPartyLibs/flot"
}
}
+HTTPSERVER = {
Class = HttpService
VerboseLevel = 10
Port = 8085
HttpRelayURL = "ignore.me:1234"
Root = WEB
}
+OBJBROWSE = {
Class = HttpClassListResource
}
+THRBROWSE = {
Class = HttpThreadListResource
}
+MatlabSignalServer = {
Class = MATLABHandler
}
+FlotPlot = {
Class = FlotPlot
}
+HTTPSignalServer = {
Class = SignalServer
}
+CFGUpload = {
Class = CFGUploader
}
+TCPMessageHandler = {
Class = TCPMessageHandler
ServerPort = 9090
//CPUMask = 8
}
+TCPConfigurationHandler = {
Class = TCPConfigurationHandler
ServerPort = 10010
//CPUMask = 8
MARTeLocation = MARTe
}
+StateMachine = {
Class = StateMachine
VerboseLevel = 10
+OFF = {
Class = StateMachineState
StateCode = 0x0
+START = {
Class = StateMachineEvent
Value = START
NextState = READY
+SWITCH_ON = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Sender = StateMachine
Destinations = "HTTPSERVER MARTe"
Flags = NoReply
Message = {
Class = Message
Content = START
}
}
}
}
+READY = {
Class = StateMachineState
StateCode = 0x500
+START_PULSE_SEQUENCE = {
Class = StateMachineEvent
NextState = INITIALISING
Code = 0x701
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PREPULSECHECK
}
}
+UPDATE_MSS = {
Class = MessageEnvelope
Destination = MatlabSignalServer
+MESSAGE = {
Class = Message
Content = AUTODETECT
}
}
+UPDATE_SS = {
Class = MessageEnvelope
Destination = HTTPSignalServer
+MESSAGE = {
Class = Message
Content = AUTODETECT
}
}
+UPDATE_FLOT = {
Class = MessageEnvelope
Destination = FlotPlot
+MESSAGE = {
Class = Message
Content = AUTODETECT
}
}
}
+UNRECOVERABLE = {
Class = StateMachineEvent
NextState = UNRECOVERABLE
Code = 0x776
}
+CONFIG_ERROR = {
Class = StateMachineEvent
NextState = CONFIG_ERROR
Code = 0x777
}
+CONFIG_OK = {
Class = StateMachineEvent
NextState = SAMESTATE
Code = 0x778
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = COULD.BE.A.MIMIC
+SENDSTATE = {
Class = Message
Code = 0x500
}
}
}
+SWITCH_OFF = {
Class = StateMachineEvent
Value = STOP
NextState = READY
Code = 0x005
+STOPALL = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Sender = StateMachine
Destinations = "HTTPSERVER MARTe"
Flags = NoReply
Message = {
Class = Message
Content = STOP
}
}
}
}
+INITIALISING = {
Class = StateMachineState
StateCode = 0x508
+PRE_PULSE_CHECKS_FINISHED = {
Class = StateMachineEvent
NextState = INITIALISED
Code = 0x705
}
+ABORT = {
Class = StateMachineEvent
NextState = READY
Code = 0x702
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PULSESTOP
}
}
}
}
+INITIALISED = {
Class = StateMachineState
StateCode = 0x504
+START_PULSE = {
Class = StateMachineEvent
NextState = EXECUTING
Code = 0x708
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PULSESTART
}
}
}
+ABORT = {
Class = StateMachineEvent
NextState = READY
Code = 0x702
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PULSESTOP
}
}
}
}
+EXECUTING = {
Class = StateMachineState
StateCode = 0x505
+ENTER = {
Class = MessageEnvelope
Destination = COULD.BE.A.MIMIC
+SENDSTATE = {
Class = Message
}
}
+ABORT = {
Class = StateMachineEvent
NextState = READY
Code = 0x702
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PULSESTOP
}
}
}
+END_PULSE = {
Class = StateMachineEvent
NextState = POST_PULSE
Code = 0x709
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = PULSESTOP
}
}
}
}
+POST_PULSE = {
Class = StateMachineState
StateCode = 0x507
+ENTER = {
Class = MessageEnvelope
Destination = COULD.BE.A.MIMIC
+SENDSTATE = {
Class = Message
}
}
+PULSE_CHECKS_FINISHED = {
Class = StateMachineEvent
NextState = READY
Code = 0x703
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = MARTe
+MESSAGE = {
Class = Message
Content = COLLECTIONCOMPLETED
}
}
}
}
+NOT_READY = {
Class = StateMachineState
StateCode = 0x601
+ACTIVATE = {
Class = StateMachineEvent
NextState = READY
Code = 0x705
}
}
+CONFIG_ERROR = {
Class = StateMachineState
StateCode = 0x601
+ENTER = {
Class = MessageEnvelope
Destination = COULD.BE.A.MIMIC
+SENDSTATE = {
Class = Message
}
}
+CONFIG_OK = {
Class = StateMachineEvent
NextState = READY
Code = 0x778
+NOTIFY = {
Class = MessageEnvelope
Sender = StateMachine
Destination = COULD.BE.A.MIMIC
+SENDSTATE = {
Class = Message
Code = 0x500
}
}
}
}
+UNRECOVERABLE = {
Class = StateMachineState
StateCode = 0x601
+DEFAULT = {
Class = StateMachineEvent
UserCode = 0
NextState = UNRECOVERABLE
}
}
+COMM_ERROR = {
Class = StateMachineState
StateCode = 0x601
+ABORT = {
Class = StateMachineEvent
NextState = SAMESTATE
Code = 0x702
}
}
+DEFAULT = {
Class = StateMachineState
StateCode = 0x601
+ABORT = {
Class = StateMachineEvent
NextState = READY
Code = 0x702
}
}
}
+MARTeMenu = {
Class = MarteSupLib::MARTeMenu
AddReference = MARTe.MARTe
Title = "MARTe Menu"
+MenuA = {
Class = MenuContainer
Title = "State Machine"
+ABORT = {
Class = SendMessageMenuEntry
Title = Abort
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = ABORT
Code = 0x702
}
}
}
+START_PULSE_SEQUENCE = {
Class = SendMessageMenuEntry
Title = "Start Pulse Sequence"
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = START_PULSE_SEQUENCE
Code = 0x701
}
}
}
+PRE_PULSE_CHECKS_FINISHED = {
Class = SendMessageMenuEntry
Title = "Pre Pulse Checks Finished"
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = PRE_PULSE_CHECKS_FINISHED
Code = 0x705
}
}
}
+START_PULSE = {
Class = SendMessageMenuEntry
Title = "Start Pulse"
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = START_PULSE
Code = 0x708
}
}
}
+END_PULSE = {
Class = SendMessageMenuEntry
Title = "End Pulse"
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = END_PULSE
Code = 0x709
}
}
}
+PULSE_CHECKS_FINISHED = {
Class = SendMessageMenuEntry
Title = "Pulse Checks Finished"
Envelope = {
Class = MessageEnvelope
Sender = MARTeMenu
Destination = StateMachine
+Message = {
Class = Message
Content = PULSE_CHECKS_FINISHED
Code = 0x703
}
}
}
}
}
+EPICSLib = {
Class = EPICSHandler
RunOnCPU_event = 16
RunOnCPU = 2
PREFIX = TEST-MNGR-PCF1:
asyncScan = true
debugLevel = 0
asyncDelay = 0.1
maxSimultAsyncIO = 100
scanOn = true
ProcessVariable = {
pv_1 = {
INP = "CycleUsecTime"
VAL = 0
NAME = STMA-CYCL-TIME-G
PINI = "No"
DTYP = "MARTe-translator"
DESC = "MARTe Cycle Time"
SYNC = excasIoSync
LOPR = 0
EGU = "us"
SCAN = "Passive"
TYPE = aitEnumFloat64
}
pv_98 = {
INP = "usecTime"
VAL = 0
NAME = STMA-USEC-TIME-G
PINI = "NO"
DTYP = "MARTe-translator"
DESC = "MARTe Absolute Time"
SYNC = excasIoSync
LOPR = 0
EGU = "us"
SCAN = "Passive"
TYPE = aitEnumUint32
}
pv_99 = {
HSV = "MINOR"
LOLO = 0
SYNC = excasIoSync
HHSV = "MAJOR"
LSV = "MINOR"
EGU = "Volts"
LOPR = 0
MDEL = 0
PREC = 2
HIHI = 9
INP = "pumpVoltage"
ADEL = 0
LOW = 0
TYPE = aitEnumFloat64
HYST = 0
NAME = STMA-PUMP-VOLT-G
LLSV = "MAJOR"
SMOO = 0
PINI = "NO"
DTYP = "MARTe-translator"
HIGH = 8
SCAN = "Passive"
VAL = 0
DESC = "MARTe Pump Voltage"
HOPR = 10
}
pv_100 = {
LOLO = 0
HSV = "MINOR"
HYST = 0
NAME = STMA-WTER-HGHT-G
SMOO = 0
LLSV = "MAJOR"
PINI = "NO"
DTYP = "MARTe-translator"
SYNC = excasIoSync
LSV = "MINOR"
HHSV = "MAJOR"
HIGH = 8
LOPR = 0
MDEL = 0
PREC = 2
SCAN = "Passive"
HIHI = 9
INP = "waterHeight"
VAL = 0
DESC = "MARTe Water Height"
ADEL = 0
LOW = 0
TYPE = aitEnumFloat64
HOPR = 10
}
}
}
+MARTe = {
Class = MARTeContainer
Level1Name = LEVEL1
StateMachineName = StateMachine
MenuContainerName = MARTe
+MARTe = {
Class = MenuContainer
}
+DriverPool = {
Class = GCReferenceContainer
+TimerBoard = {
Class = GenericTimerDrv
CPUMask = 1
NumberOfOutputs = 0
TimerUsecPeriod = 1000
NumberOfInputs = 2
SynchronizationMethod = Synchronizing
}
}
+Messages = {
Class = GCReferenceContainer
+FatalErrorMessage = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Destinations = StateMachine
Flags = NoReply
Message = {
Class = Message
Content = UNRECOVERABLE
Code = 0x776
}
}
+ConfigLoadErrorMessage = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Destinations = StateMachine
Flags = NoReply
Message = {
Class = Message
Content = CONFIG_ERROR
Code = 0x777
}
}
+ConfigLoadOKMessage = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Destinations = StateMachine
Flags = NoReply
Message = {
Class = Message
Content = CONFIG_OK
Code = 0x778
}
}
+SafetyErrorMessage = {
Class = MessageDeliveryRequest
MsecTimeOut = 1000
Destinations = MARTe
Flags = NoReply
Message = {
Class = Message
Content = ERROR
}
}
}
+ExternalTimeTriggeringService = {
Class = InterruptDrivenTTS
TsOfflineUsecPhase = 0
TsOnlineUsecPhase = 0
TsOfflineUsecPeriod = 1000
TsOnlineUsecPeriod = 1000
TimeModule = {
BoardName = TimerBoard
}
}
+Thread_1 = {
Class = RealTimeThread
SafetyMsecSleep = 1
RunOnCPU = 2
TriggeringServiceName = MARTe.ExternalTimeTriggeringService
OfflineSemaphoreTimeout = 50
ThreadPriority = 28
SMStatusChangeMsecTimeout = 1000
RTStatusChangeMsecTimeout = 1000
+DDB = {
Class = DDB
}
+Timer = {
Class = IOGAMs::TimeInputGAM
TriggeringServiceName = ExternalTimeTriggeringService
BoardName = TimerBoard
Signals = {
time = {
SignalName = usecTime
SignalType = uint32
}
counter = {
SignalName = counter
SignalType = int32
}
}
}
+WaveformGen = {
Class = WaveformGenerator
UsecTimeType = uint32
UsecTime = usecTime
+waterHeightReference = {
Class = WaveformClassSine
Gain = 1
Offset = 2.5
Frequency = 0.1
Tend = 2000
}
+zeroSignal = {
Class = WaveformClassPoints
TimeVector = {0 1}
ValueVector = {0 0}
Frequency = 1
Tend = 2000
}
}
+PIDGAM = {
Class = PIDGAM
TEnd = 2000.0
SamplingTime = 0.001
Ki = 2.00
Kd = 0.20
TStart = 0.0
ControllerOn = On
Kp = 3.00
InputSignals = {
PIDInput = {
SignalName = PIDIn
SignalType = PIDGAMInputStructure
FlatNamed = True
}
}
OutputSignals = {
PIDOutput = {
SignalName = PIDOut
SignalType = PIDGAMOutputStructure
FlatNamed = True
}
}
Remappings = {
InputInterface = {
feedforward = zeroSignal
usecTime = usecTime
reference = waterHeightReference
measurement = waterHeight
}
OutputInterface = {
feedback = pumpVoltageRequest
integratorState = pidIntState
controlSignal = pumpVoltageRequest
error = pidHeightError
}
}
}
+WaterTank = {
Class = WaterTank
MinVoltage = 0
MaxVoltage = 5
TankArea = 20.0
aFlowRate = 20.0
AnimationEnabled = 1
SVGFileLocation = "../../GAMs/WaterTank/WaterTank.svg"
bFlowRate = 50.0
InputSignals = {
usecTime = {
SignalName = usecTime
SignalType = uint32
}
voltage = {
SignalName = pumpVoltageRequest
SignalType = float
}
}
OutputSignals = {
height = {
SignalName = waterHeight
SignalType = float
}
pumpVoltage = {
SignalName = pumpVoltage
SignalType = float
}
}
}
+Statistic = {
Class = WebStatisticGAM
Verbose = True
FrequencyOfVerbose = 2000000
Signals = {
SignalU = {
SignalName = usecTime
SignalType = uint32
}
Signal0 = {
SignalName = CycleUsecTime
SignalType = float
}
Signal1 = {
SignalName = waterHeightReference
SignalType = float
}
Signal2 = {
SignalName = waterHeight
SignalType = float
}
Signal3 = {
SignalName = pumpVoltageRequest
SignalType = float
}
Signal4 = {
SignalName = pumpVoltage
SignalType = float
}
Signal5 = {
SignalName = TimerAbsoluteUsecTime
SignalType = float
}
Signal6 = {
SignalName = WaveformGenAbsoluteUsecTime
SignalType = float
}
Signal7 = {
SignalName = PIDGAMAbsoluteUsecTime
SignalType = float
}
Signal8 = {
SignalName = WaterTankAbsoluteUsecTime
SignalType = float
}
Signal9 = {
SignalName = StatisticAbsoluteUsecTime
SignalType = float
}
Signal10 = {
SignalName = CollectionAbsoluteUsecTime
SignalType = float
}
Signal11 = {
SignalName = TimerRelativeUsecTime
SignalType = float
}
Signal12 = {
SignalName = WaveformGenRelativeUsecTime
SignalType = float
}
Signal13 = {
SignalName = PIDGAMRelativeUsecTime
SignalType = float
}
Signal14 = {
SignalName = WaterTankRelativeUsecTime
SignalType = float
}
Signal15 = {
SignalName = StatisticRelativeUsecTime
SignalType = float
}
Signal16 = {
SignalName = CollectionRelativeUsecTime
SignalType = float
}
}
}
+PlottingGAM = {
Class = PlottingGAM::PlottingGAM
HttpRefreshMsecTime = 500
+Window1 = {
Class = PlotWindow::PlotWindow
YAxisScale = "Linear"
OnlyPositiveY = Yes
PlotPixelHeight = 350
PlotPixelWidth = 1250
XAxisScaleFactor = 0.001
XAxisSignalName = usecTime
XLabel = "Time (ms)"
YLabel = "cm"
XAxisSignalType = uint32
PlotLastNBuffers = 3
InputSignals = {
Signal1 = {
SignalName = waterHeightReference
SignalType = float
}
Signal2 = {
SignalName = waterHeight
SignalType = float
}
}
}
+Window3 = {
Class = PlotWindow::PlotWindow
YAxisScale = "linear"
OnlyPositiveY = Yes
PlotPixelHeight = 350
PlotPixelWidth = 1250
XAxisScaleFactor = 0.001
XAxisSignalName = usecTime
XLabel = "Time (ms)"
YLabel = "Cycle time (s)"
XAxisSignalType = uint32
PlotLastNBuffers = 500
InputSignals = {
Signal1 = {
SignalName = CycleUsecTime
SignalType = float
}
}
}
}
+Collection = {
Class = CollectionGAMs::DataCollectionGAM
TimeSignalType = uint32
UsecTimeSignalName = usecTime
PreTrigger = 200
NOfAcquisitionSamples = 400000
EventTrigger = {
MaxFastAcquisitionPoints = 800
PointsForSingleFastAcquisition = 400
TimeWindow0 = {
UsecPeriod = 1000
NOfSamples = 40000
}
}
Signals = {
CLOCK = {
SignalName = usecTime
Cal1 = 1.000000e-06
SignalType = uint32
Cal0 = 0.0
JPFName = "TIME"
}
CycleTime = {
SignalName = CycleUsecTime
SignalType = float
JPFName = "CycleTime"
}
WaterReference = {
SignalName = waterHeightReference
SignalType = float
JPFName = "WaterHeightReference"
}
WaterHeight = {
SignalName = waterHeight
SignalType = float
JPFName = "WaterHeight"
}
PumpVoltageReq = {
SignalName = pumpVoltageRequest
SignalType = float
JPFName = "PumpVoltageRequest"
}
PumpVoltage = {
SignalName = pumpVoltage
SignalType = float
JPFName = "PumpVoltage"
}
PIDError = {
SignalName = pidHeightError
SignalType = float
JPFName = "PIDError"
}
PIDIntState = {
SignalName = pidIntState
SignalType = float
JPFName = "PIDIntState"
}
Signal5 = {
SignalName = TimerAbsoluteUsecTime
SignalType = float
JPFName = "TimerAbsoluteUsecTime"
}
Signal6 = {
SignalName = WaveformGenAbsoluteUsecTime
SignalType = float
JPFName = "WaveformGenAbsoluteUsecTime"
}
Signal7 = {
SignalName = PIDGAMAbsoluteUsecTime
SignalType = float
JPFName = "PIDGAMAbsoluteUsecTime"
}
Signal8 = {
SignalName = WaterTankAbsoluteUsecTime
SignalType = float
JPFName = "WaterTankAbsoluteUsecTime"
}
Signal9 = {
SignalName = StatisticAbsoluteUsecTime
SignalType = float
JPFName = "StatisticAbsoluteUsecTime"
}
Signal10 = {
SignalName = CollectionAbsoluteUsecTime
SignalType = float
JPFName = "CollectionAbsoluteUsecTime"
}
Signal11 = {
SignalName = TimerRelativeUsecTime
SignalType = float
JPFName = "TimerRelativeUsecTime"
}
Signal12 = {
SignalName = WaveformGenRelativeUsecTime
SignalType = float
JPFName = "WaveformGenRelativeUsecTime"
}
Signal13 = {
SignalName = PIDGAMRelativeUsecTime
SignalType = float
JPFName = "PIDGAMRelativeUsecTime"
}
Signal14 = {
SignalName = WaterTankRelativeUsecTime
SignalType = float
JPFName = "WaterTankRelativeUsecTime"
}
Signal15 = {
SignalName = StatisticRelativeUsecTime
SignalType = float
JPFName = "StatisticRelativeUsecTime"
}
Signal16 = {
SignalName = CollectionRelativeUsecTime
SignalType = float
JPFName = "CollectionRelativeUsecTime"
}
}
}
+EPICSStream = {
Class = EPICSGAM
UsecTimeSignalName = usecTime
TimeSignalType = uint32
SignalsServer = EPICSLib
NOfAcquisitionSamples = 2000
Signals = {
sign1 = {
SignalName = CycleUsecTime
ServerSubSampling = 100
SignalType = float
ServerName = TEST-MNGR-PCF1:STMA-CYCL-TIME-G
}
sign98 = {
SignalName = usecTime
ServerSubSampling = 100
SignalType = uint32
ServerName = TEST-MNGR-PCF1:STMA-USEC-TIME-G
}
sign99 = {
SignalName = pumpVoltage
ServerSubSampling = 100
SignalType = float
ServerName = TEST-MNGR-PCF1:STMA-PUMP-VOLT-G
}
sign100 = {
SignalName = waterHeight
ServerSubSampling = 100
SignalType = float
ServerName = TEST-MNGR-PCF1:STMA-WTER-HGHT-G
}
}
}
Online = "Timer WaveformGen PIDGAM WaterTank PlottingGAM Statistic Collection EPICSStream"
Offline = "Timer PlottingGAM Statistic EPICSStream"
}
}