Files
marte_dev_tools/examples/test_app.marte
2026-01-22 02:51:36 +01:00

6417 lines
223 KiB
Plaintext

+NiDevice = {
Class = NI9157Device
NiRioDeviceName = "RIO0"
NiRioSerialNumber = "0x01E4B4D5"
NiRioGenFile = "/opt/codac/ampegon-ps-tb/BitStreams/AmpegonPsTb_NI9159_V2.lvbitx"
NiRioGenSignature = "455F662BA8258B060FD324C9DEF38604"
Open = 1
Run = 1
Reset = 1
Clear = 1
ResetPostSleepMs = 120
}
+StateMachine = {
Class = StateMachine
+INITIAL = {
Class = ReferenceContainer
+START = {
Class = StateMachineEvent
NextState = "PRE_CFG"
NextStateError = "ERROR"
Timeout = 0
+OpenDANWriterT1 = {
Class = Message
Destination = "TbTestApp.Data.DANWriterT1"
Function = OpenStream
Mode = ExpectsReply
}
+OpenDANWriterT2 = {
Class = Message
Destination = "TbTestApp.Data.DANWriterT2"
Function = OpenStream
Mode = ExpectsReply
}
+OpenDANWriterT3 = {
Class = Message
Destination = "TbTestApp.Data.DANWriterT3"
Function = OpenStream
Mode = ExpectsReply
}
+ChangeToStateIdleMsg = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = PreCfg
}
}
+StartNextStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StartNextStateExecution
Mode = ExpectsReply
}
}
}
+PRE_CFG = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 1
}
}
// Enable DANWriterWriteT1
+EnableDANWriterWriteT1 = {
Class = Message
Destination = TbTestApp.Functions.DANWriterWriteEnable
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = DANWriterEnable_DDB1
SignalValue = 1
}
}
}
+GOTO_MXI_CFG = {
Class = StateMachineEvent
NextState = "MXI_CFG"
NextStateError = "ERROR"
Timeout = 0
// Prepare Next State
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareRun = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = MxiCfg
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
+GOTO_CFG_ERROR = {
Class = StateMachineEvent
NextState = "CFG_ERROR"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareCfgError = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = CfgError
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+MXI_CFG = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 2
}
}
// Trigger MXIConfigurationSupervisor Configuration
+MxiCfgSup_MsgMode_1 = {
Class = Message
Destination = TbTestApp.Functions.MXIConfigurationSupervisor
Function = MXIOperation
+Parameters = {
Class = ConfigurationDatabase
param1 = 1
param2 = null
param3 = null
param4 = null
}
}
}
+GOTO_PLC_CFG = {
Class = StateMachineEvent
NextState = "PLC_CFG"
NextStateError = "ERROR"
Timeout = 0
// Prepare Next State
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareRun = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = PlcCfg
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
+GOTO_CFG_ERROR = {
Class = StateMachineEvent
NextState = "CFG_ERROR"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareCfgError = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = CfgError
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+PLC_CFG = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 3
}
}
// Trigger PLCConfigurationSupervisor Configuration
+PlcCfgSup_MsgMode_0 = {
Class = Message
Destination = TbTestApp.Functions.PlcConfigurationSupervisor
Function = TriggerSelected
+Parameters = {
Class = ConfigurationDatabase
param1 = 0
param2 = null
param3 = null
param4 = null
}
}
}
+GOTO_TEST_RUN = {
Class = StateMachineEvent
NextState = "TEST_RUN"
NextStateError = "ERROR"
Timeout = 0
// Prepare Next State
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareRun = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = TestRun
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
+GOTO_CFG_ERROR = {
Class = StateMachineEvent
NextState = "CFG_ERROR"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareCfgError = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = CfgError
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+TEST_RUN = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 4
}
}
}
+GOTO_TEST_POST = {
Class = StateMachineEvent
NextState = "TEST_POST"
NextStateError = "ERROR"
Timeout = 0
// Prepare Next State
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareTestPost = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = TestPost
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+TEST_POST = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 5
}
}
}
+GOTO_TEST_DONE = {
Class = StateMachineEvent
NextState = "TEST_DONE"
NextStateError = "ERROR"
Timeout = 0
// Trigger PLCConfigurationSupervisor Disable
// Not used in this test
// Trigger MXIConfigurationSupervisor Disable
+MxiCfgSup_MsgMode_2 = {
Class = Message
Destination = TbTestApp.Functions.MXIConfigurationSupervisor
Function = MXIOperation
+Parameters = {
Class = ConfigurationDatabase
param1 = 2
param2 = null
param3 = null
param4 = null
}
}
// Flush DANWriterT2
+FlushDANWriterT2 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT2
Function = CloseStream
Mode = ExpectsReply
}
// Flush FileWriterBufferT2
+FlushFileWriterBufferT2 = {
Class = Message
Destination = TbTestApp.Data.FileWriterBufferT2
Function = FlushFile
Mode = ExpectsReply
}
// Flush DANWriterT3
+FlushDANWriterT3 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT3
Function = CloseStream
Mode = ExpectsReply
}
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareTestDone = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = TestDone
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+TEST_DONE = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 7
}
}
}
+TEST_DONE_TASKS = {
Class = StateMachineEvent
NextState = "TEST_DONE"
NextStateError = "ERROR"
Timeout = 0
// Disable DANWriterWriteT1
+DisableDANWriterWriteT1 = {
Class = Message
Destination = TbTestApp.Functions.DANWriterWriteEnable
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = DANWriterEnable_DDB1
SignalValue = 0
}
}
// Flush DANWriterT1
+FlushDANWriterT1 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT1
Function = CloseStream
Mode = ExpectsReply
}
}
+GOTO_PRE_CFG = {
Class = StateMachineEvent
NextState = "PRE_CFG"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PreparePreCfg = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = PreCfg
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+CFG_ERROR = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 8
}
}
// Trigger PLCConfigurationSupervisor Disable
// Not used in this test
// Trigger MXIConfigurationSupervisor Disable
+MxiCfgSup_MsgMode_2 = {
Class = Message
Destination = TbTestApp.Functions.MXIConfigurationSupervisor
Function = MXIOperation
+Parameters = {
Class = ConfigurationDatabase
param1 = 2
param2 = null
param3 = null
param4 = null
}
}
// Disable DANWriterWriteT1
+DisableDANWriterWriteT1 = {
Class = Message
Destination = TbTestApp.Functions.DANWriterWriteEnable
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = DANWriterEnable_DDB1
SignalValue = 0
}
}
// Flush DANWriterTreeT1
+FlushDANWriterT1 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT1
Function = CloseStream
Mode = ExpectsReply
}
// Flush DANWriterTreeT2
+FlushDANWriterT2 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT2
Function = CloseStream
Mode = ExpectsReply
}
// Flush FileWriterBufferT2
+FlushFileWriterBufferT2 = {
Class = Message
Destination = TbTestApp.Data.FileWriterBufferT2
Function = FlushFile
Mode = ExpectsReply
}
// Flush DANWriterTreeT3
+FlushDANWriterT3 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT3
Function = CloseStream
Mode = ExpectsReply
}
}
+GOTO_PRE_CFG = {
Class = StateMachineEvent
NextState = "PRE_CFG"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PreparePreCfg = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = PreCfg
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
+ERROR = {
Class = ReferenceContainer
+ENTER = {
Class = ReferenceContainer
// Set Current State
+SetCurrentState = {
Class = Message
Destination = TbTestApp.Functions.AppStateMachineState
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = SMState_DDB1
SignalValue = 9
}
}
// Trigger PLCConfigurationSupervisor Disable
// Not used in this test
// Trigger MXIConfigurationSupervisor Disable
+MxiCfgSup_MsgMode_2 = {
Class = Message
Destination = TbTestApp.Functions.MXIConfigurationSupervisor
Function = MXIOperation
+Parameters = {
Class = ConfigurationDatabase
param1 = 2
param2 = null
param3 = null
param4 = null
}
}
// Disable DANWriterWriteT1
+DisableDANWriterWriteT1 = {
Class = Message
Destination = TbTestApp.Functions.DANWriterWriteEnable
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = DANWriterEnable_DDB1
SignalValue = 0
}
}
// Flush DANWriterTreeT1
+FlushDANWriterT1 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT1
Function = CloseStream
Mode = ExpectsReply
}
// Flush DANWriterTreeT2
+FlushDANWriterT2 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT2
Function = CloseStream
Mode = ExpectsReply
}
// Flush FileWriterBufferT2
+FlushFileWriterBufferT2 = {
Class = Message
Destination = TbTestApp.Data.FileWriterBufferT2
Function = FlushFile
Mode = ExpectsReply
}
// Flush DANWriterTreeT3
+FlushDANWriterT3 = {
Class = Message
Destination = TbTestApp.Data.DANWriterT3
Function = CloseStream
Mode = ExpectsReply
}
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PrepareError = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = Error
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
+GOTO_PRE_CFG = {
Class = StateMachineEvent
NextState = "PRE_CFG"
NextStateError = "ERROR"
Timeout = 0
+StopCurrentStateExecutionMsg = {
Class = Message
Destination = TbTestApp
Function = StopCurrentStateExecution
Mode = ExpectsReply
}
+PreparePreCfg = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = PrepareNextState
+Parameters = {
Class = ConfigurationDatabase
param1 = PreCfg
}
}
+GoToNextState = {
Class = Message
Destination = TbTestApp
Mode = ExpectsReply
Function = StartNextStateExecution
}
}
}
}
$TbTestApp = {
Class = RealTimeApplication
+Functions = {
Class = ReferenceContainer
// ----------- T1 START ----------- //
// Slow Timer Thread - Configuration and monitoring
// ------ TIMER ------ //
+Timer = {
Class = IOGAM
InputSignals = {
Counter = {
DataSource = Timer
Type = uint32
}
//!cast(uint32, uint64): because...
Time = {
Frequency = 100
DataSource = Timer
Type = uint64
}
AbsoluteTime = {
DataSource = Timer
Type = uint64
}
}
OutputSignals = {
//!implicit: defined because....
Counter_DDB1 = {
DataSource = DDB1
Type = uint32
}
Time_DDB1 = {
DataSource = DDB1
Type = uint32
}
AbsTimeSrc_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
+CurrentTime_T1 = {
Class = SystemClockGAM
OutputSignals = {
AbsTimeT1_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
+TimeConverter = {
Class = AbsTimeConverterGAM
InputSignals = {
AbsTimeSrc_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
OutputSignals = {
AbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
// ------------------- //
// ----- RX PATH ----- //
+MXIRead = {
Class = IOGAM
InputSignals = {
hl_tx_spi_done = {
DataSource = MXIRegistersRead
Type = bool
NumberOfElements = 1
Trigger = 1
}
hl_rx_spi_done = {
DataSource = MXIRegistersRead
Type = bool
NumberOfElements = 1
}
dsc_ao_0_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_ao_1_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_ao_2_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_mo_0_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_mo_1_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_do_n_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_fs_0_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_fs_1_ctr_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_full_mod_out = {
DataSource = MXIRegistersRead
Type = uint8
NumberOfElements = 1
}
dsc_acq_en_out = {
DataSource = MXIRegistersRead
Type = bool
NumberOfElements = 1
}
dsc_ts_status = {
DataSource = MXIRegistersRead
Type = bool
NumberOfElements = 1
}
dsc_ts_out = {
DataSource = MXIRegistersRead
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
MXI_HL_TX_SPI_DONE_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_HL_RX_SPI_DONE_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_DSC_AO_0_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_AO_1_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_AO_2_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_MO_0_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_MO_1_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_DO_N_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_FS_0_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_FS_1_CTR_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_FULL_MOD_OUT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DSC_ACQ_EN_OUT_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_DSC_TS_STATUS_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_DSC_TS_OUT_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
}
}
+MXIModuleFullFlagSplitter = {
Class = BitSplitterGAM
InputSignals = {
DigitalSignal = {
Alias = MXI_DSC_FULL_MOD_OUT_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Bit_0 = {
Alias = MXI_DSC_AO_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_1 = {
Alias = MXI_DSC_AO_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_2 = {
Alias = MXI_DSC_AO_2_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_3 = {
Alias = MXI_DSC_MO_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_4 = {
Alias = MXI_DSC_MO_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_5 = {
Alias = MXI_DSC_DO_N_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_6 = {
Alias = MXI_DSC_FS_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
Bit_7 = {
Alias = MXI_DSC_FS_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
}
}
}
+MXIMasterTime = {
Class = TimeArrayGAM
TimePerTicks = 25
TimeStep = 500
InputSignals = {
MXI_DSC_TS_OUT_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
MXIAbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
+PlcPacketRx = {
Class = IOGAM
InputSignals = {
PlcReceivedAbsTime = {
DataSource = SdnPlcSub
Alias = Header
NumberOfElements = 48
Type = uint8
Ranges = {{32, 39}}
Trigger = 1
}
PLC_HEADER = {
DataSource = SdnPlcSub
Type = uint8
NumberOfElements = 8
}
ACK_CFG = {
DataSource = SdnPlcSub
Type = uint8
NumberOfElements = 1
}
ACK_SMC = {
DataSource = SdnPlcSub
Type = uint8
NumberOfElements = 1
}
STATE_CFG = {
DataSource = SdnPlcSub
Type = uint8
NumberOfElements = 1
}
STATE_SMC = {
DataSource = SdnPlcSub
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
PlcPacketRx_AbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
PlcPacketRx_HEADER_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 8
NumberOfDimensions = 1
}
PlcPacketRx_ACK_CFG_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcPacketRx_ACK_SMC_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcPacketRx_STATE_CFG_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcPacketRx_STATE_SMC_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
// ------------------- //
// ---- CONST GAM ---- //
+AppStateMachineState = {
Class = ConstantGAM
OutputSignals = {
SMState_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
}
}
+DANWriterWriteEnable = {
Class = ConstantGAM
OutputSignals = {
DANWriterEnable_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
}
}
+MXISupervisorVariables = {
Class = ConstantGAM
OutputSignals = {
MXIConfigurationSupervisor_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
MXIConfigurationSupervisor_Mode_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
}
}
+MXIBaseConfigurationVariables = {
Class = ConstantGAM
OutputSignals = {
MXI_RST_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
Default = 1
}
MXI_HL_TX_1_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_TX_2_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_TX_3_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_TX_OPT_TRG_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
Default = 1
}
MXI_HL_RX_1_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_2_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_3_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_4_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_5_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_6_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_7_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 4
}
MXI_HL_RX_OPT_TRG_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
Default = 1
}
MXI_DBG_EN_SEL_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
Default = 1
}
MXI_DBG_EN_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
Default = 0
}
}
}
+MXIDsFifoAcqEnVariables = {
Class = ConstantGAM
OutputSignals = {
MXI_ACQ_EN_PAT_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
Default = 0xAAAAAAAAAAAAAAAA
}
}
}
+PlcPacketTxVariables = {
Class = ConstantGAM
OutputSignals = {
PlcPacketTx_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 0
}
PlcPacketTx_Select_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 0
}
PlcPacketTx_HeaderNF_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 11
}
PlcPacketTx_HeaderNI_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 10
}
PlcPacketTx_HeaderNC_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 2
}
PlcPacketTx_HeaderNS_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 0
}
PlcPacketTx_HeaderNA_DDB1 = {
DataSource = DDB1
Type = uint8
Default = 0
}
PlcPacketTx_HeaderS_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 3
Default = {0 0 0}
}
}
}
+StateMachineTasksDelay = {
Class = ConstantGAM
OutputSignals = {
CycleCounterReset_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
DelayCycles_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
Default = 50
}
}
}
+AcquisitionStatusDaq = {
Class = ConstantGAM
OutputSignals = {
AcquisitionStatusT2_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
}
}
+AcquisitionStatusDbg = {
Class = ConstantGAM
OutputSignals = {
AcquisitionStatusT3_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
Default = 0
}
}
}
// ------------------- //
// ---- FLOW CTRL ---- //
+MXIConfigurationSupervisor = {
Class = MXIConfigurationSupervisorGAM
InputSignals = {
// --- Trigger Signals --- //
TriggerInput = {
Alias = MXIConfigurationSupervisor_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
ModeInput = {
Alias = MXIConfigurationSupervisor_Mode_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// --- Monitor Signals --- //
// Base Configuration
BaseDone = {
Alias = MXIBaseConfigurationDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
BaseStatus = {
Alias = MXIBaseConfigurationStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Acquisition Enable
AcqEnDone = {
Alias = MXIAcquisitionEnableDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AcqEnStatus = {
Alias = MXIAcquisitionEnableStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Triplet Configuration
TripletDone = {
Alias = MXITripletConfigurationDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TripletStatus = {
Alias = MXITripletConfigurationStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
// --- Trigger Signals --- //
// Base Configuration
BaseTrigger = {
Alias = MXIBaseConfiguration_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
BaseMode = {
Alias = MXIBaseConfiguration_Mode_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Acquisition Configuration
AcqTrigger = {
Alias = MXIAcquisitionEnable_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Triplet Configuration
TripletTrigger = {
Alias = MXITripletConfiguration_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Status Signals
CfgDone = {
Alias = MXIConfigurationSupervisor_Done_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgError = {
Alias = MXIConfigurationSupervisor_Error_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgStatus = {
Alias = MXIConfigurationSupervisor_Status_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+MXIBaseConfiguration = {
Class = MXIBaseConfigurationGAM
ConfigurationStepTimeOutMs = 50
InputSignals = {
// Timer and activation signals
TimerAbsTimeUs = {
Alias = AbsTime_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
TriggerInput = {
Alias = MXIBaseConfiguration_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
ModeInput = {
Alias = MXIBaseConfiguration_Mode_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Monitoring Signals
HlTxDone = {
Alias = MXI_HL_TX_SPI_DONE_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
HlRxDone = {
Alias = MXI_HL_RX_SPI_DONE_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
DscStatus = {
Alias = MXI_DSC_TS_STATUS_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
// Trigger Signals
TriggerReset = {
Alias = Trigger_MXIWriteRst_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TriggerHotLink = {
Alias = Trigger_MXIWriteHlOpt_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TriggerEnable = {
Alias = Trigger_MXIWriteEn_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TriggerDebug = {
Alias = Trigger_MXIWriteDbg_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Data Signals
Enable = {
Alias = MXI_EN_IN_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
// Status Signals
CfgDone = {
Alias = MXIBaseConfigurationDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgStatus = {
Alias = MXIBaseConfigurationStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+MXIAcquisitionEnable = {
Class = MXIAcquisitionEnableGAM
ConfigurationStepTimeOutMs = 50
InputSignals = {
// Timer and activation signals
TimerAbsTimeUs = {
Alias = AbsTime_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
TriggerInput = {
Alias = MXIAcquisitionEnable_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Monitoring Signals
AcqEnStatus = {
Alias = MXI_DSC_ACQ_EN_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
// Trigger Signals
TriggerAcquisition = {
Alias = Trigger_MXIWriteIDsFifoAcqEn_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Status Signals
CfgDone = {
Alias = MXIAcquisitionEnableDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgStatus = {
Alias = MXIAcquisitionEnableStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+MXITripletConfiguration = {
Class = MXITripletConfigurationGAM
ConfigurationStepTimeOutMs = 5000
ReplayEvents = 3
+Channels = {
Class = ReferenceContainer
+AnalogueOutput_0 = {
Class = TripletsContainer
Type = AnalogueOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 1, 0x3FFF0000, 0x2000},
{ 2, 5100000000, 0x00036FF2, 0x3ADA},
{ 3, 5200000000, 0x00036FF2, 0x2000}
}
}
+AnalogueOutput_1 = {
Class = TripletsContainer
Type = AnalogueOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 1, 0x3FFF0000, 0x2000},
{ 2, 5140000000, 0x00036FF2, 0x3FFF},
{ 3, 5150000000, 0x00036FF2, 0x2000}
}
}
+AnalogueOutput_2 = {
Class = TripletsContainer
Type = AnalogueOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 1, 0x3FFF0000, 0x2000},
{ 2, 5140000000, 0x00036FF2, 0x3FFF},
{ 3, 5150000000, 0x00036FF2, 0x2000}
}
}
+ModulationOutput_0 = {
Class = TripletsContainer
Type = ModulationOutput
StartTimeToTimeStampTicks = 25
ParamTimeToTicks = 500
Triplets = {
{ 1, 1, 0, 0}
}
}
+ModulationOutput_1 = {
Class = TripletsContainer
Type = ModulationOutput
StartTimeToTimeStampTicks = 25
ParamTimeToTicks = 500
Triplets = {
{ 1, 1, 0, 0}
}
}
+DigitalOutput_N = {
Class = TripletsContainer
Type = DigitalOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 5098000000, 0, 0, 0, 0, 1},
{ 2, 5202000000, 0, 0, 0, 0, 0}
}
}
+FastShutdownOutput_0 = {
Class = TripletsContainer
Type = FastShutdownOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 1, 0, 16, 8}
}
}
+FastShutdownOutput_1 = {
Class = TripletsContainer
Type = FastShutdownOutput
StartTimeToTimeStampTicks = 25
Triplets = {
{ 1, 1, 0, 16, 8}
}
}
}
InputSignals = {
TimerAbsTimeUs = {
Alias = MXIAbsTime_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
TriggerInput = {
Alias = MXITripletConfiguration_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AnalogueOutput_0_Counter = {
Alias = MXI_DSC_AO_0_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AnalogueOutput_0_Full = {
Alias = MXI_DSC_AO_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
AnalogueOutput_1_Counter = {
Alias = MXI_DSC_AO_1_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AnalogueOutput_1_Full = {
Alias = MXI_DSC_AO_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
AnalogueOutput_2_Counter = {
Alias = MXI_DSC_AO_2_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AnalogueOutput_2_Full = {
Alias = MXI_DSC_AO_2_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
ModulationOutput_0_Counter = {
Alias = MXI_DSC_MO_0_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
ModulationOutput_0_Full = {
Alias = MXI_DSC_MO_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
ModulationOutput_1_Counter = {
Alias = MXI_DSC_MO_1_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
ModulationOutput_1_Full = {
Alias = MXI_DSC_MO_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
DigitalOutput_N_Counter = {
Alias = MXI_DSC_DO_N_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
DigitalOutput_N_Full = {
Alias = MXI_DSC_DO_N_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
FastShutdown_0_Counter = {
Alias = MXI_DSC_FS_0_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
FastShutdown_0_Full = {
Alias = MXI_DSC_FS_0_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
FastShutdown_1_Counter = {
Alias = MXI_DSC_FS_1_CTR_OUT_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
FastShutdown_1_Full = {
Alias = MXI_DSC_FS_1_FULL_OUT_DDB1
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
TriggerTriplets = {
Alias = Trigger_MXIWriteDsFifoConfig_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TripletsPacket = {
Alias = MXI_PCK_TRIPLETS_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 16
NumberOfDimensions = 1
}
CfgDone = {
Alias = MXITripletConfigurationDone_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgError = {
Alias = MXITripletConfigurationError_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgStatus = {
Alias = MXITripletConfigurationStatus_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+PlcConfigurationSupervisor = {
Class = PlcConfigurationSupervisorGAM
ReplyTimeOutMs = 10000
+Configurations = {
Class = ReferenceContainer
+ConfigSet_0_Start = {
Class = ReferenceContainer
+ConfigStep_0_ChangeToState2 = {
Class = PlcConfigurationContainer
Floats = { 0.0 35.0 0.0 35.0 15.0 15.0 20.0 20.0 20000.0 0.0 0.2 }
Integers = { 1000 1000 1 1 0 1 1000 1 2 2 }
Commands = { 0 1 }
}
+ConfigStep_1_SetParameters = {
Class = PlcConfigurationContainer
Floats = { 0.0 35.0 0.0 35.0 15.0 15.0 20.0 20.0 20000.0 0.0 0.2 }
Integers = { 1000 1000 1 1 1 1 1000 1 0 2 }
Commands = { 1 0 }
}
+ConfigStep_2_SetParameters = {
Class = PlcConfigurationContainer
Floats = { 0.0 35.0 0.0 35.0 15.0 15.0 20.0 20.0 20000.0 0.0 0.2 }
Integers = { 1000 1000 1 1 0 1 1000 1 0 2 }
Commands = { 1 0 }
}
+ConfigStep_3_ChangeToState3 = {
Class = PlcConfigurationContainer
Floats = { 0.0 35.0 0.0 35.0 15.0 15.0 20.0 20.0 20000.0 0.0 0.2 }
Integers = { 1000 1000 1 1 0 1 1000 1 3 2 }
Commands = { 0 1 }
}
}
}
InputSignals = {
// Timer and activation signals
TimerAbsTimeUs = {
Alias = AbsTime_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
TriggerInput = {
Alias = PlcPacketTx_Trigger_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
SelectInput = {
Alias = PlcPacketTx_Select_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Monitor Signals
PLCReadAbsTime = {
Alias = PlcPacketRx_AbsTime_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
PLCReadAckCfg = {
Alias = PlcPacketRx_ACK_CFG_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PLCReadAckSmc = {
Alias = PlcPacketRx_ACK_SMC_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PLCReadStateCfg = {
Alias = PlcPacketRx_STATE_CFG_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PLCReadStateSmc = {
Alias = PlcPacketRx_STATE_SMC_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
// Trigger Signals
TriggerOutput = {
Alias = PlcPacketTx_TrgOut_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// PLC Signals
VB1TREF = {
Alias = PlcPacketTx_VB1TREF_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB1 = {
Alias = PlcPacketTx_VB1_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB2TREF = {
Alias = PlcPacketTx_VB2TREF_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB2 = {
Alias = PlcPacketTx_VB2_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB1RR = {
Alias = PlcPacketTx_VB1RR_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB2RR = {
Alias = PlcPacketTx_VB2RR_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB1TH = {
Alias = PlcPacketTx_VB1TH_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB2TH = {
Alias = PlcPacketTx_VB2TH_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VKTH = {
Alias = PlcPacketTx_VKTH_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VK = {
Alias = PlcPacketTx_VK_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
PSKT = {
Alias = PlcPacketTx_PSKT_DDB1
DataSource = DDB1
Type = float32
NumberOfElements = 1
}
VB1UP = {
Alias = PlcPacketTx_VB1UP_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
VB2UP = {
Alias = PlcPacketTx_VB2UP_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
VB1TSEL = {
Alias = PlcPacketTx_VB1TSEL_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
VB2TSEL = {
Alias = PlcPacketTx_VB2TSEL_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
VKSEL = {
Alias = PlcPacketTx_VKSEL_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
BODR = {
Alias = PlcPacketTx_BODR_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
VKUP = {
Alias = PlcPacketTx_VKUP_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
MDKF = {
Alias = PlcPacketTx_MDKF_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
CSTAT = {
Alias = PlcPacketTx_CSTAT_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
COMOD = {
Alias = PlcPacketTx_COMOD_DDB1
DataSource = DDB1
Type = uint16
NumberOfElements = 1
}
CFG_MOD = {
Alias = PlcPacketTx_CFG_MOD_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
SM_MOD = {
Alias = PlcPacketTx_SM_MOD_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Status Flags
CfgDone = {
Alias = PlcConfigurationSupervisor_Done_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgError = {
Alias = PlcConfigurationSupervisor_Error_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
CfgStatus = {
Alias = PlcConfigurationSupervisor_Status_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
// ------------------- //
// ----- TX PATH ----- //
+MXIWriteRst = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteRst_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_RST_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
rst_in = {
DataSource = MXIRegistersWriteRst
Type = bool
NumberOfElements = 1
Trigger = 1
}
}
}
+MXIWriteHlOpt = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteHlOpt_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_TX_1_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_TX_2_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_TX_3_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_TX_OPT_TRG_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_HL_RX_1_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_2_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_3_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_4_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_5_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_6_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_7_OPT_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_HL_RX_OPT_TRG_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
hl_tx_1_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
Trigger = 1
}
hl_tx_2_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_tx_3_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_tx_opt_trg = {
DataSource = MXIRegistersWriteHlOpt
Type = bool
NumberOfElements = 1
}
hl_rx_1_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_2_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_3_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_4_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_5_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_6_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_7_opt = {
DataSource = MXIRegistersWriteHlOpt
Type = uint8
NumberOfElements = 1
}
hl_rx_opt_trg = {
DataSource = MXIRegistersWriteHlOpt
Type = bool
NumberOfElements = 1
}
}
}
+MXIWriteEn = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteEn_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_EN_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
dsc_en_in = {
DataSource = MXIRegistersWriteEn
Type = bool
NumberOfElements = 1
Trigger = 1
}
}
}
+MXIWriteDbg = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteDbg_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_DBG_EN_SEL_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
MXI_DBG_EN_IN_DDB1 = {
DataSource = DDB1
Type = bool
NumberOfElements = 1
}
}
OutputSignals = {
dbg_en_sel_in = {
DataSource = MXIRegistersDgbEn
Type = bool
NumberOfElements = 1
Trigger = 1
}
dbg_en_in = {
DataSource = MXIRegistersDgbEn
Type = bool
NumberOfElements = 1
}
}
}
+MXIWriteDsFifoAcqEn = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteIDsFifoAcqEn_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_ACQ_EN_PAT_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
FIFO0_U64_WR = {
DataSource = MXIDsFifoAcqEn
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 1
Trigger = 1
}
}
}
+MXIWriteDsFifoConfig = {
Class = TriggeredIOGAM
InputSignals = {
Trigger_MXIWriteDsFifoConfig_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXI_PCK_TRIPLETS_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 16
NumberOfDimensions = 1
}
}
OutputSignals = {
FIFO0_U64_WR = {
DataSource = MXIDsFifoConfig
Type = uint64
NumberOfElements = 16
NumberOfDimensions = 1
Trigger = 1
}
}
}
+PlcPacketTx = {
Class = TriggeredIOGAM
InputSignals = {
PlcPacketTx_TrgOut_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderNF_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderNI_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderNC_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderNS_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderNA_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_HeaderS_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfDimensions = 1
NumberOfElements = 3
}
PlcPacketTx_VB1TREF_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB1_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB2TREF_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB2_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB1RR_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB2RR_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB1TH_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB2TH_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VKTH_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VK_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_PSKT_DDB1 = {
DataSource = DDB1
Type = float32
}
PlcPacketTx_VB1UP_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_VB2UP_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_VB1TSEL_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_VB2TSEL_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_VKSEL_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_BODR_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_VKUP_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_MDKF_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_CSTAT_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_COMOD_DDB1 = {
DataSource = DDB1
Type = uint16
}
PlcPacketTx_CFG_MOD_DDB1 = {
DataSource = DDB1
Type = uint8
}
PlcPacketTx_SM_MOD_DDB1 = {
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
HeaderNF = {
DataSource = SdnPlcPub
Type = uint8
Trigger = 1
}
HeaderNI = {
DataSource = SdnPlcPub
Type = uint8
}
HeaderNC = {
DataSource = SdnPlcPub
Type = uint8
}
HeaderNS = {
DataSource = SdnPlcPub
Type = uint8
}
HeaderNA = {
DataSource = SdnPlcPub
Type = uint8
}
HeaderS = {
DataSource = SdnPlcPub
Type = uint8
NumberOfElements = 3
}
VB1TREF = {
DataSource = SdnPlcPub
Type = float32
}
VB1 = {
DataSource = SdnPlcPub
Type = float32
}
VB2TREF = {
DataSource = SdnPlcPub
Type = float32
}
VB2 = {
DataSource = SdnPlcPub
Type = float32
}
VB1RR = {
DataSource = SdnPlcPub
Type = float32
}
VB2RR = {
DataSource = SdnPlcPub
Type = float32
}
VB1TH = {
DataSource = SdnPlcPub
Type = float32
}
VB2TH = {
DataSource = SdnPlcPub
Type = float32
}
VKTH = {
DataSource = SdnPlcPub
Type = float32
}
VK = {
DataSource = SdnPlcPub
Type = float32
}
PSKT = {
DataSource = SdnPlcPub
Type = float32
}
VB1UP = {
DataSource = SdnPlcPub
Type = uint16
}
VB2UP = {
DataSource = SdnPlcPub
Type = uint16
}
VB1TSEL = {
DataSource = SdnPlcPub
Type = uint16
}
VB2TSEL = {
DataSource = SdnPlcPub
Type = uint16
}
VKSEL = {
DataSource = SdnPlcPub
Type = uint16
}
BODR = {
DataSource = SdnPlcPub
Type = uint16
}
VKUP = {
DataSource = SdnPlcPub
Type = uint16
}
MDKF = {
DataSource = SdnPlcPub
Type = uint16
}
CSTAT = {
DataSource = SdnPlcPub
Type = uint16
}
COMOD = {
DataSource = SdnPlcPub
Type = uint16
}
CFG = {
DataSource = SdnPlcPub
Type = uint8
}
SM = {
DataSource = SdnPlcPub
Type = uint8
}
}
}
// ------------------- //
// -- MON/STATE CTRL - //
+AppMonitor = {
Class = TestMonitorGAM
InputSignals = {
AbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
MXIAbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
SMState_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIConfigurationSupervisor_Status_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Status_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
ExtStateTransition_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AbortConfigurationState_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
TerminateRunningState_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+EventMessageBypassPreCfg = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// App Driven -> From PRE_CFG (1) send to MXI_CFG (2)
+AppMonitorTempBypass_PRE_CFG_GOTO_MXI_CFG = {
Class = EventConditionTrigger
EventTrigger = {
Command_SMState_DDB1 = 1
}
+TST_PRE_CFG_GOTO_MXI_CFG = {
Class = Message
Destination = StateMachine
Function = GOTO_MXI_CFG
Mode = ExpectsReply
}
}
}
InputSignals = {
Command_SMState_DDB1 = {
Alias = SMState_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Clear_SMState_DDB1 = {
DataSource = DDB1
Type = uint32
}
}
}
+AcquisitionStatusMonitor = {
Class = MathExpressionGAM
Expression = "
AcqStatus_DDB1 = (uint8)(
(uint8)(AcquisitionStatusT2_DDB1) == (uint8)(1) &&
(uint8)(AcquisitionStatusT3_DDB1) == (uint8)(1)
);
"
InputSignals = {
AcquisitionStatusT2_DDB1 = {
DataSource = DDB1
Type = uint8
}
AcquisitionStatusT3_DDB1 = {
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
AcqStatus_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+AcquisitionStatusMessages = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// App Driven -> From TEST_RUN (4) send to TEST_POST (5)
+TriggerStateTransition_TEST_RUN_GOTO_TEST_POST = {
Class = EventConditionTrigger
EventTrigger = {
Command_AcqStatus_DDB1 = 1
}
+TST_TEST_RUN_GOTO_TEST_POST = {
Class = Message
Destination = StateMachine
Function = GOTO_TEST_POST
Mode = ExpectsReply
}
}
}
InputSignals = {
Command_AcqStatus_DDB1 = {
Alias = AcqStatus_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Clear_AcqStatus_DDB1 = {
DataSource = DDB1
Type = uint32
}
}
}
+CycleCounterT1 = {
Class = CycleCounterGAM
ResetOnStateChange = 1
ZeroIfReset = 1
Step = 1
InputSignals = {
Reset = {
Alias = CycleCounterReset_DDB1
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
CycleCounter = {
Alias = CycleCounter_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
}
}
+TestPostTasksDelay = {
Class = MathExpressionGAM
Expression = "
Tasks_Trigger_DDB1 = (uint8)((uint64)(CycleCounter_DDB1) > (uint64)(DelayCycles_DDB1));
"
InputSignals = {
CycleCounter_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
DelayCycles_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
Tasks_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
}
}
+TestPostGotoTestDone = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// Application driven -> When in TEST_POST (5) go to TEST_DONE (7)
+AppMonitorTempBypass_TEST_POST_CALL_GOTO_TEST_DONE = {
Class = EventConditionTrigger
EventTrigger = {
Command_Tasks_Trigger_DDB1 = 1
Signal_SMState_DDB1 = 5
}
+TAF_TEST_POST_GOTO_TEST_DONE = {
Class = Message
Destination = StateMachine
Function = GOTO_TEST_DONE
Mode = ExpectsReply
}
}
}
InputSignals = {
Command_Tasks_Trigger_DDB1 = {
Alias = Tasks_Trigger_DDB1
DataSource = DDB1
Type = uint8
}
Signal_SMState_DDB1 = {
Alias = SMState_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Clear_Tasks_Trigger_DDB1 = {
DataSource = DDB1
Type = uint32
}
}
}
+TestDoneCallTasks = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// BYPASS AppMonitor -> When in TEST_DONE (7) call TEST_DONE_TASKS
+AppMonitorTempBypass_TEST_POST_CALL_TEST_DONE_TASKS = {
Class = EventConditionTrigger
EventTrigger = {
Command_Tasks_Trigger_DDB1 = 1
Signal_SMState_DDB1 = 7
}
+TAF_TEST_DONE_TEST_DONE_TASKS = {
Class = Message
Destination = StateMachine
Function = TEST_DONE_TASKS
Mode = ExpectsReply
}
}
}
InputSignals = {
Command_Tasks_Trigger_DDB1 = {
Alias = Tasks_Trigger_DDB1
DataSource = DDB1
Type = uint8
}
Signal_SMState_DDB1 = {
Alias = SMState_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Clear_Tasks_Trigger_DDB1 = {
DataSource = DDB1
Type = uint32
}
}
}
+EventMessages = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// Ext Driven -> From PRE_CFG (1) send to CFG_ERROR (6)
+TriggerStateTransition_PRE_CFG_GOTO_CFG_ERROR = {
Class = EventConditionTrigger
EventTrigger = {
Command_ExtStateTransition_DDB1 = 2
Signal_SMState_DDB1 = 1
}
+TST_PRE_CFG_GOTO_CFG_ERROR = {
Class = Message
Destination = StateMachine
Function = GOTO_CFG_ERROR
Mode = ExpectsReply
}
}
// App Driven ->From MXI_CFG (2) send to PLC_CFG (3)
+TriggerStateTransition_MXI_CFG_GOTO_PLC_CFG = {
Class = EventConditionTrigger
EventTrigger = {
Command_MXIConfigurationSupervisor_Done_DDB1 = 1
Command_MXIConfigurationSupervisor_Error_DDB1 = 0
Signal_SMState_DDB1 = 2
}
+TST_MXI_CFG_GOTO_PLC_CFG = {
Class = Message
Destination = StateMachine
Function = GOTO_PLC_CFG
Mode = ExpectsReply
}
}
// App Driven ->From MXI_CFG (2) send to CFG_ERROR (6)
+TriggerStateTransition_MXI_CFG_GOTO_CFG_ERROR = {
Class = EventConditionTrigger
EventTrigger = {
Command_MXIConfigurationSupervisor_Error_DDB1 = 1
Signal_SMState_DDB1 = 2
}
+TST_MXI_CFG_GOTO_CFG_ERROR = {
Class = Message
Destination = StateMachine
Function = GOTO_CFG_ERROR
Mode = ExpectsReply
}
}
// App Driven ->From PLC_CFG (3) send to TEST_RUN (4)
+TriggerStateTransition_PLC_CFG_GOTO_TEST_RUN = {
Class = EventConditionTrigger
EventTrigger = {
Command_PlcConfigurationSupervisor_Done_DDB1 = 1
Command_PlcConfigurationSupervisor_Error_DDB1 = 0
Signal_SMState_DDB1 = 3
}
+TST_PLC_CFG_GOTO_TEST_RUN = {
Class = Message
Destination = StateMachine
Function = GOTO_TEST_RUN
Mode = ExpectsReply
}
}
// App Driven ->From PLC_CFG (3) send to CFG_ERROR (6)
+TriggerStateTransition_PLC_CFG_GOTO_CFG_ERROR = {
Class = EventConditionTrigger
EventTrigger = {
Command_PlcConfigurationSupervisor_Error_DDB1 = 1
Signal_SMState_DDB1 = 3
}
+TST_PLC_CFG_GOTO_CFG_ERROR = {
Class = Message
Destination = StateMachine
Function = GOTO_CFG_ERROR
Mode = ExpectsReply
}
}
// Ext Driven -> From {PRE_CFG (1), MXI_CFG (2), PLC_CFG (3)} to CFG_ERROR (6)
+ForceStateTransition_ANY_GOTO_CFG_ERROR = {
Class = EventConditionTrigger
EventTrigger = {
Command_AbortConfigurationState_DDB1 = 1
}
+FST_ANY_GOTO_CFG_ERROR = {
Class = Message
Destination = StateMachine
Function = GOTO_CFG_ERROR
Mode = ExpectsReply
}
}
// Ext Driven -> TEST_RUN (4) to TEST_POST (5)
+ForceStateTransition_TEST_RUN_GOTO_TEST_POST = {
Class = EventConditionTrigger
EventTrigger = {
Command_TerminateRunningState_DDB1 = 1
}
+FST_TEST_RUN_GOTO_TEST_POST = {
Class = Message
Destination = StateMachine
Function = GOTO_TEST_POST
Mode = ExpectsReply
}
}
}
InputSignals = {
Command_ExtStateTransition_DDB1 = {
Alias = ExtStateTransition_DDB1
DataSource = DDB1
Type = uint8
}
Command_AbortConfigurationState_DDB1 = {
Alias = AbortConfigurationState_DDB1
DataSource = DDB1
Type = uint8
}
Command_TerminateRunningState_DDB1 = {
Alias = TerminateRunningState_DDB1
DataSource = DDB1
Type = uint8
}
Command_MXIConfigurationSupervisor_Done_DDB1 = {
Alias = MXIConfigurationSupervisor_Done_DDB1
DataSource = DDB1
Type = uint8
}
Command_MXIConfigurationSupervisor_Error_DDB1 = {
Alias = MXIConfigurationSupervisor_Error_DDB1
DataSource = DDB1
Type = uint8
}
Command_PlcConfigurationSupervisor_Done_DDB1 = {
Alias = PlcConfigurationSupervisor_Done_DDB1
DataSource = DDB1
Type = uint8
}
Command_PlcConfigurationSupervisor_Error_DDB1 = {
Alias = PlcConfigurationSupervisor_Error_DDB1
DataSource = DDB1
Type = uint8
}
Signal_SMState_DDB1 = {
Alias = SMState_DDB1
DataSource = DDB1
Type = uint8
}
}
OutputSignals = {
Clear_ExtStateTransition_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_AbortConfigurationState_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_TerminateRunningState_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_MXIConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_MXIConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_PlcConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint32
}
Clear_PlcConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint32
}
}
}
// ------------------- //
// ----- STORAGE ----- //
+StoreStartPulseTime_T1 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
ResetCycles = 1
InputSignals = {
DANWriterEnable_DDB1 = {
Type = uint8
DataSource = DDB1
}
AbsTimeT1_DDB1 = {
DataSource = DDB1
Type = uint64
}
InitTime_1_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
OutputSignals = {
InitTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
+StoreStopPulseTime_T1 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
Negated = 1
ResetCycles = 1
InputSignals = {
DANWriterEnable_DDB1 = {
Type = uint8
DataSource = DDB1
}
AbsTimeT1_DDB1 = {
DataSource = DDB1
Type = uint64
}
FinalTime_1_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
OutputSignals = {
FinalTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
+DANWriterWriteData = {
Class = IOGAM
InputSignals = {
DANWriterEnable_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Time Signals
TimeSamples_DDB1 = {
Alias = AbsTimeT1_DDB1
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
AbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
MXIAbsTime_DDB1 = {
DataSource = DDB1
Type = uint64
NumberOfElements = 1
}
// State
SMState_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
AcqStatus_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor
MXIConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIConfigurationSupervisor_Status_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Base Configuration
MXIBaseConfiguration_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIBaseConfiguration_Mode_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIBaseConfigurationDone_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIBaseConfigurationStatus_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Acquisition Enable
MXIAcquisitionEnable_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIAcquisitionEnableDone_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXIAcquisitionEnableStatus_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Triplet Configuration
MXITripletConfiguration_Trigger_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXITripletConfigurationDone_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
MXITripletConfigurationError_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// PLC Supervisor
PlcPacketTx_TrgOut_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Done_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Error_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
PlcConfigurationSupervisor_Status_DDB1 = {
DataSource = DDB1
Type = uint8
NumberOfElements = 1
}
// Statistics
T1_PreCfg_CycleTime = {
Alias = PreCfg.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_MxiCfg_CycleTime = {
Alias = MxiCfg.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_PlcCfg_CycleTime = {
Alias = PlcCfg.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_TestRun_CycleTime = {
Alias = TestRun.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_TestPost_CycleTime = {
Alias = TestPost.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_CfgError_CycleTime = {
Alias = CfgError.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_Error_CycleTime = {
Alias = Error.Thread1Cfg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_FirstGAM_ReadTime = {
Alias = TimeConverter_ReadTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
T1_LastGAM_ExecTime = {
Alias = EventMessages_ExecTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
}
InitTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
FinalTime_DDB1 = {
DataSource = DDB1
Type = uint64
}
InitTime_Save_DDB1 = {
Alias = InitTime_DDB1
DataSource = DDB1
Type = uint64
}
FinalTime_Save_DDB1 = {
Alias = FinalTime_DDB1
DataSource = DDB1
Type = uint64
}
}
OutputSignals = {
DANWriterT1_Trigger = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_TimeSamples = {
DataSource = DANWriterT1
Type = uint64
NumberOfElements = 1
}
DANWriterT1_Time = {
DataSource = DANWriterT1
Type = uint64
NumberOfElements = 1
}
DANWriterT1_MXIAbsTime = {
DataSource = DANWriterT1
Type = uint64
NumberOfElements = 1
}
DANWriterT1_SMState = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_AcqStatus = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor
DANWriterT1_MXICfgSupDone = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXICfgSupError = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXICfgSupStatus = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Base Configuration
DANWriterT1_MXIBaseCfgTrg = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXIBaseCfgMode = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXIBaseCfgDone = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXIBaseCfgStatus = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Acquisition Enable
DANWriterT1_MXIAcqEnTrg = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXIAcqEnDone = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXIAcqEnStatus = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// MXI Supervisor - Triplet Configuration
DANWriterT1_MXITrpCfgTrg = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXITrpCfgDone = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_MXITrpCfgError = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// PLC Supervisor
DANWriterT1_PlcCfgSupTxTrg = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_PlcCfgSupDone = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_PlcCfgSupError = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
DANWriterT1_PlcCfgSupStatus = {
DataSource = DANWriterT1
Type = uint8
NumberOfElements = 1
}
// Statistics
DANWriterT1_PreCfg_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_MxiCfg_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_PlcCfg_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_TestRun_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_TestPost_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_CfgError_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_Error_CycleTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_FirstGAM_ReadTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
DANWriterT1_LastGAM_ExecTime = {
DataSource = DANWriterT1
Type = uint32
NumberOfElements = 1
}
InitTime_L = {
DataSource = EpicsOutput_T1
Type = uint32
}
InitTime_H = {
DataSource = EpicsOutput_T1
Type = uint32
}
FinalTime_L = {
DataSource = EpicsOutput_T1
Type = uint32
}
FinalTime_H = {
DataSource = EpicsOutput_T1
Type = uint32
}
InitTime_1_DDB1 = {
DataSource = DDB1
Type = uint64
}
FinalTime_1_DDB1 = {
DataSource = DDB1
Type = uint64
}
}
}
// ------------------- //
// ------------ T1 END ------------ //
// ----------- T2 START ----------- //
// Fast Thread - GET ACQ Data + WaveformMonitors + DANWriterWriter2
// ----- RX PATH ----- //
+MxiDataUsFifoDataT2 = {
Class = IOGAM
InputSignals = {
MXIUpstreamData = {
DataSource = MXIUsFifoDataT2
Type = uint64
NumberOfElements = 3001
NumberOfDimensions = 1
Trigger = 1
Frequency = 0
}
MXIUpstreamDataErrorCheck = {
Alias = ErrorCheck
DataSource = MXIUsFifoDataT2
Type = uint32
NumberOfElements = 1
}
}
OutputSignals = {
USC_TS_VALUE_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
USC_AI_0_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_1_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_2_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_3_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_4_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_5_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_6_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_7_VALUE_NU_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DI_62_0_VALUES_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DATA_ERRORCHECK_DDB2 = {
DataSource = DDB2
Type = uint32
NumberOfElements = 1
}
}
}
+DigitalInputSplitterT2 = {
Class = BitSplitterGAM
InputSignals = {
DigitalInputs = {
Alias = USC_DI_62_0_VALUES_DDB2
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
OutputSignals = {
DigitalInput_0 = {
Alias = USC_DI_0_VALUES_DDB2
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_1 = {
Alias = USC_DI_1_VALUES_DDB2
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+TimeConversionT2 = {
Class = TimeArrayGAM
TimePerTicks = 25 // 25 ns / tick
TimeStep = 500 // 500 ns
InputSignals = {
USC_TS_VALUE_DDB2 = { // FPGA Clock Ticks
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
TimeArrayNs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+TimeConversionT2_Abs = {
Class = TimeArrayGAM
TimePerTicks = 25 // 25 ns / tick
TimeStep = 500 // 500 ns
AbsoluteTime = 1
InputSignals = {
USC_TS_VALUE_DDB2 = { // FPGA Clock Ticks
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
TimeArrayNs_Abs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+MXIMasterTimeT2 = {
Class = IOGAM
InputSignals = {
TimeArrayNs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0,0}}
}
}
OutputSignals = {
MXIAbsTime_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
// ------------------- //
// ---- CONST GAM ---- //
+DANWriterWriteDataWindowLimitsT2 = {
Class = ConstantGAM
OutputSignals = {
DANWriterWriteDataWindowLowerLimit_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
Default = 5000000000
}
DANWriterWriteDataWindowUpperLimit_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
Default = 6000000000
}
}
}
// ------------------- //
// ---- FLOW CTRL ---- //
+DANWriterWriteDataWindowT2 = {
Class = MathExpressionGAM
Expression = "
DANWriterWriterEnable_DDB2 = (uint8)(((uint64)(MXIAbsTime_DDB2) >= (uint64)(DANWriterWriteDataWindowLowerLimit_DDB2))
&& ((uint64)(MXIAbsTime_DDB2) <= (uint64)(DANWriterWriteDataWindowUpperLimit_DDB2)));
DANWriterWriterDone_DDB2 = (uint8)((uint64)(MXIAbsTime_DDB2) > (uint64)(DANWriterWriteDataWindowUpperLimit_DDB2));
"
InputSignals = {
MXIAbsTime_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
DANWriterWriteDataWindowLowerLimit_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
DANWriterWriteDataWindowUpperLimit_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
DANWriterWriterEnable_DDB2 = {
DataSource = DDB2
Type = uint8
}
DANWriterWriterDone_DDB2 = {
DataSource = DDB2
Type = uint8
}
}
}
// ------------------- //
// -- MON/STATE CTRL - //
+AppMonitorT2 = {
Class = TestMonitorGAM
InputSignals = {
MXIAbsTime_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1
}
DANWriterWriterDone_DDB2 = {
DataSource = DDB2
Type = uint8
NumberOfElements = 1
}
}
OutputSignals = {
AbortRunningState_DDB2 = {
DataSource = DDB2
Type = uint8
NumberOfElements = 1
}
}
}
+ExecutionMonitorT2 = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// App Driven -> Notify T1 that T2 acquisition/storage is completed
+StatusNotificationT2 = {
Class = EventConditionTrigger
EventTrigger = {
Command_DANWriterWriterDone_DDB2 = 1
}
+NOTIFY_T1_STATUS_T2 = {
Class = Message
Destination = TbTestApp.Functions.AcquisitionStatusDaq
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = AcquisitionStatusT2_DDB1
SignalValue = 1
}
}
}
}
InputSignals = {
Command_DANWriterWriterDone_DDB2 = {
Alias = DANWriterWriterDone_DDB2
DataSource = DDB2
Type = uint8
}
}
OutputSignals = {
Clear_DANWriterWriterDone_DDB2 = {
DataSource = DDB2
Type = uint32
}
}
}
// ------------------- //
// ----- STORAGE ----- //
+StoreStartPulseTime_T2 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
ResetCycles = 1
InputSignals = {
DANWriterWriterEnable_DDB2 = {
Type = uint8
DataSource = DDB2
}
TimeArrayNs_Abs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
InitTime_1_DDB2 = {
DataSource = DDB2
Type = uint64
}
}
OutputSignals = {
InitTime_DDB2 = {
DataSource = DDB2
Type = uint64
}
}
}
+StoreStopPulseTime_T2 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
Negated = 1
ResetCycles = 1
InputSignals = {
DANWriterWriterEnable_DDB2 = {
Type = uint8
DataSource = DDB2
}
TimeArrayNs_Abs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
FinalTime_1_DDB2 = {
DataSource = DDB2
Type = uint64
}
}
OutputSignals = {
FinalTime_DDB2 = {
DataSource = DDB2
Type = uint64
}
}
}
+DANWriterWriteDataT2 = {
Class = IOGAM
InputSignals = {
DANWriterWriterEnable_DDB2 = {
DataSource = DDB2
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
TimeArrayNs_Abs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
TimeArrayNs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_0_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_1_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_2_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_3_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_4_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_5_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_6_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DI_0_VALUES_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DI_1_VALUES_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DATA_ERRORCHECK_DDB2 = {
DataSource = DDB2
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T2_PlcCfg_CycleTime = {
Alias = PlcCfg.Thread2Daq_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T2_TestRun_CycleTime = {
Alias = TestRun.Thread2Daq_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T2_TestPost_CycleTime = {
Alias = TestPost.Thread2Daq_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T2_FirstGAM_ReadTime = {
Alias = DigitalInputSplitterT2_ReadTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T2_LastGAM_ExecTime = {
Alias = ExecutionMonitorT2_ExecTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
InitTime_DDB2 = {
DataSource = DDB2
Type = uint64
}
FinalTime_DDB2 = {
DataSource = DDB2
Type = uint64
}
InitTime_Save_DDB2 = {
Alias = InitTime_DDB2
DataSource = DDB2
Type = uint64
}
FinalTime_Save_DDB2 = {
Alias = FinalTime_DDB2
DataSource = DDB2
Type = uint64
}
}
OutputSignals = {
DANWriterT2_Trigger = {
DataSource = DANWriterT2
Type = uint8
NumberOfElements = 1
}
DANWriterT2_TimeSamples = {
DataSource = DANWriterT2
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
DANWriterT2_Time = {
DataSource = DANWriterT2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_0_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_1_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_2_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_3_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_4_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_5_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_6_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_DI_0_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_DI_1_VALUE = {
DataSource = DANWriterT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_ERRORCHECK = {
DataSource = DANWriterT2
Type = uint32
}
DANWriterT2_PlcCfg_CycleTime = {
DataSource = DANWriterT2
Type = uint32
}
DANWriterT2_TestRun_CycleTime = {
DataSource = DANWriterT2
Type = uint32
}
DANWriterT2_TestPost_CycleTime = {
DataSource = DANWriterT2
Type = uint32
}
DANWriterT2_FirstGAM_ReadTime = {
DataSource = DANWriterT2
Type = uint32
}
DANWriterT2_LastGAM_ExecTime = {
DataSource = DANWriterT2
Type = uint32
}
InitTime_L = {
DataSource = EpicsOutput_T2
Type = uint32
}
InitTime_H = {
DataSource = EpicsOutput_T2
Type = uint32
}
FinalTime_L = {
DataSource = EpicsOutput_T2
Type = uint32
}
FinalTime_H = {
DataSource = EpicsOutput_T2
Type = uint32
}
InitTime_1_DDB2 = {
DataSource = DDB2
Type = uint64
}
FinalTime_1_DDB2 = {
DataSource = DDB2
Type = uint64
}
}
}
+FileWriterBufferDataT2 = {
Class = IOGAM
InputSignals = {
FileWriterBufferEnable_DDB2 = {
Alias = DANWriterWriterEnable_DDB2
DataSource = DDB2
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
TimeArrayNs_DDB2 = {
DataSource = DDB2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_0_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_1_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_AI_2_VALUE_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
USC_DI_0_VALUES_DDB2 = {
DataSource = DDB2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
OutputSignals = {
FileWriterT2_Trigger = {
DataSource = FileWriterBufferT2
Type = uint8
NumberOfElements = 1
}
FileWriterT2_Time = {
DataSource = FileWriterBufferT2
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
FileWriterT2_USC_AI_0_VALUE = {
DataSource = FileWriterBufferT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
FileWriterT2_USC_AI_1_VALUE = {
DataSource = FileWriterBufferT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
FileWriterT2_USC_AI_2_VALUE = {
DataSource = FileWriterBufferT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
FileWriterT2_USC_DI_0_VALUE = {
DataSource = FileWriterBufferT2
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
// ------------------- //
// ------------ T2 END ------------ //
// ----------- T3 START ----------- //
// Fast Thread - Get DEBUG Data + DANWriterWriter 3
// ----- RX PATH ----- //
+MxiDataUsFifoDataT3 = {
Class = IOGAM
InputSignals = {
MXIUpstreamDebug = {
DataSource = MXIUsFifoDebugT3
Type = uint64
NumberOfElements = 2001
NumberOfDimensions = 1
Trigger = 1
Frequency = 0
}
MXIUpstreamDebugErrorCheck = {
Alias = ErrorCheck
DataSource = MXIUsFifoDebugT3
Type = uint32
NumberOfElements = 1
}
}
OutputSignals = {
DBG_TS_VALUE_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
DBG_AO_0_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_1_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_2_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_3_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_62_0_VALUES_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DATA_ERRORCHECK_DDB3 = {
DataSource = DDB3
Type = uint32
NumberOfElements = 1
}
}
}
+DigitalInputSplitterT3 = {
Class = BitSplitterGAM
InputSignals = {
DigitalInputs = {
Alias = DBG_DO_62_0_VALUES_DDB3
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
OutputSignals = {
DigitalInput_0 = {
Alias = DBG_MO_0_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_1 = {
Alias = DBG_MO_1_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_2 = {
Alias = DBG_DO_0_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_3 = {
Alias = DBG_DO_1_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_4 = {
Alias = DBG_DO_2_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_5 = {
Alias = DBG_DO_3_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_6 = {
Alias = DBG_DO_4_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_7 = {
Alias = DBG_MOD1_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_8 = {
Alias = DBG_MOD2_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_9 = {
Alias = DBG_FS1_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_10 = {
Alias = DBG_FS2_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DigitalInput_11 = {
Alias = DBG_PWON_VALUES_DDB3
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+TimeConversionT3 = {
Class = TimeArrayGAM
TimePerTicks = 25 // 25 ns / tick
TimeStep = 500 // 500 ns
InputSignals = {
DBG_TS_VALUE_DDB3 = { // FPGA Clock Ticks
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
TimeArrayNs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+TimeConversionT3_Abs = {
Class = TimeArrayGAM
TimePerTicks = 25 // 25 ns / tick
TimeStep = 500 // 500 ns
AbsoluteTime = 1
InputSignals = {
DBG_TS_VALUE_DDB3 = { // FPGA Clock Ticks
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
TimeArrayNs_Abs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
}
}
+MXIMasterTimeT3 = {
Class = IOGAM
InputSignals = {
TimeArrayNs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0,0}}
}
}
OutputSignals = {
MXIAbsTime_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
// ------------------- //
// ---- CONST GAM ---- //
+DANWriterWriteDataWindowLimitsT3 = {
Class = ConstantGAM
OutputSignals = {
DANWriterWriteDataWindowLowerLimit_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
Default = 5000000000
}
DANWriterWriteDataWindowUpperLimit_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
Default = 6000000000
}
}
}
// ------------------- //
// ---- FLOW CTRL ---- //
+DANWriterWriteDataWindowT3 = {
Class = MathExpressionGAM
Expression = "
DANWriterWriterEnable_DDB3 = (uint8)(((uint64)(MXIAbsTime_DDB3) >= (uint64)(DANWriterWriteDataWindowLowerLimit_DDB3))
&& ((uint64)(MXIAbsTime_DDB3) <= (uint64)(DANWriterWriteDataWindowUpperLimit_DDB3)));
DANWriterWriterDone_DDB3 = (uint8)((uint64)(MXIAbsTime_DDB3) > (uint64)(DANWriterWriteDataWindowUpperLimit_DDB3));
"
InputSignals = {
MXIAbsTime_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
DANWriterWriteDataWindowLowerLimit_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
DANWriterWriteDataWindowUpperLimit_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
}
OutputSignals = {
DANWriterWriterEnable_DDB3 = {
DataSource = DDB3
Type = uint8
}
DANWriterWriterDone_DDB3 = {
DataSource = DDB3
Type = uint8
}
}
}
// ------------------- //
// -- MON/STATE CTRL - //
+AppMonitorT3 = {
Class = TestMonitorGAM
InputSignals = {
MXIAbsTime_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1
}
DANWriterWriterEnable_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1
}
DANWriterWriterDone_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1
}
}
}
+ExecutionMonitorT3 = {
Class = MessageGAM
TriggerOnChange = 1
+Events = {
Class = ReferenceContainer
// App Driven -> Notify T1 that T3 acquisition/storage is completed
+StatusNotificationT3 = {
Class = EventConditionTrigger
EventTrigger = {
Command_DANWriterWriterDone_DDB3 = 1
}
+NOTIFY_T1_STATUS_T3 = {
Class = Message
Destination = TbTestApp.Functions.AcquisitionStatusDbg
Function = SetOutput
+Parameters = {
Class = ConfigurationDatabase
SignalName = AcquisitionStatusT3_DDB1
SignalValue = 1
}
}
}
}
InputSignals = {
Command_DANWriterWriterDone_DDB3 = {
Alias = DANWriterWriterDone_DDB3
DataSource = DDB3
Type = uint8
}
}
OutputSignals = {
Clear_DANWriterWriterDone_DDB3 = {
DataSource = DDB3
Type = uint32
}
}
}
// ------------------- //
// ----- STORAGE ----- //
+StoreStartPulseTime_T3 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
ResetCycles = 1
InputSignals = {
DANWriterWriterEnable_DDB3 = {
Type = uint8
DataSource = DDB3
}
TimeArrayNs_Abs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
InitTime_1_DDB3 = {
DataSource = DDB3
Type = uint64
}
}
OutputSignals = {
InitTime_DDB3 = {
DataSource = DDB3
Type = uint64
}
}
}
+StoreStopPulseTime_T3 = {
Class = TriggerEnableGAM
NumberOfTriggers = 1
Negated = 1
ResetCycles = 1
InputSignals = {
DANWriterWriterEnable_DDB3 = {
Type = uint8
DataSource = DDB3
}
TimeArrayNs_Abs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
FinalTime_1_DDB3 = {
DataSource = DDB3
Type = uint64
}
}
OutputSignals = {
FinalTime_DDB3 = {
DataSource = DDB3
Type = uint64
}
}
}
+DANWriterWriteDataT3 = {
Class = IOGAM
InputSignals = {
DANWriterWriterEnable_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
TimeArrayNs_Abs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
Ranges = {{0, 0}}
}
TimeArrayNs_DDB3 = {
DataSource = DDB3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_0_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_1_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_AO_2_VALUE_DDB3 = {
DataSource = DDB3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_MO_0_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_MO_1_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_0_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_1_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_2_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_3_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DO_4_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_MOD1_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_MOD2_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_FS1_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_FS2_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_PWON_VALUES_DDB3 = {
DataSource = DDB3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DBG_DATA_ERRORCHECK_DDB3 = {
DataSource = DDB3
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T3_PlcCfg_CycleTime = {
Alias = PlcCfg.Thread3Dbg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T3_TestRun_CycleTime = {
Alias = TestRun.Thread3Dbg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T3_TestPost_CycleTime = {
Alias = TestPost.Thread3Dbg_CycleTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T3_FirstGAM_ReadTime = {
Alias = DigitalInputSplitterT3_ReadTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
T3_LastGAM_ReadTime = {
Alias = ExecutionMonitorT3_ExecTime
DataSource = Timings
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
InitTime_DDB3 = {
DataSource = DDB3
Type = uint64
}
FinalTime_DDB3 = {
DataSource = DDB3
Type = uint64
}
InitTime_Save_DDB3 = {
Alias = InitTime_DDB3
DataSource = DDB3
Type = uint64
}
FinalTime_Save_DDB3 = {
Alias = FinalTime_DDB3
DataSource = DDB3
Type = uint64
}
}
OutputSignals = {
DANWriterT3_Trigger = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
DANWriterT3_TimeSamples = {
DataSource = DANWriterT3
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
DANWriterT3_Time = {
DataSource = DANWriterT3
Type = uint64
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_0_VALUE = {
DataSource = DANWriterT3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_1_VALUE = {
DataSource = DANWriterT3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_2_VALUE = {
DataSource = DANWriterT3
Type = uint16
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MO_0_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MO_1_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_0_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_1_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_2_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_3_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_4_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MOD1_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MOD2_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_FS1_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_FS2_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_PWON_VALUE = {
DataSource = DANWriterT3
Type = uint8
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_ERRORCHECK = {
DataSource = DANWriterT3
Type = uint32
}
DANWriterT3_PlcCfg_CycleTime = {
DataSource = DANWriterT3
Type = uint32
}
DANWriterT3_TestRun_CycleTime = {
DataSource = DANWriterT3
Type = uint32
}
DANWriterT3_TestPost_CycleTime = {
DataSource = DANWriterT3
Type = uint32
}
DANWriterT3_FirstGAM_ReadTime = {
DataSource = DANWriterT3
Type = uint32
}
DANWriterT3_LastGAM_ExecTime = {
DataSource = DANWriterT3
Type = uint32
}
InitTime_L = {
DataSource = EpicsOutput_T3
Type = uint32
}
InitTime_H = {
DataSource = EpicsOutput_T3
Type = uint32
}
FinalTime_L = {
DataSource = EpicsOutput_T3
Type = uint32
}
FinalTime_H = {
DataSource = EpicsOutput_T3
Type = uint32
}
InitTime_1_DDB3 = {
DataSource = DDB3
Type = uint64
}
FinalTime_1_DDB3 = {
DataSource = DDB3
Type = uint64
}
}
}
// ------------------- //
// ------------ T3 END ------------ //
}
+Data = {
Class = ReferenceContainer
DefaultDataSource = DDB1
// ----------- T1 START ----------- //
// Slow Timer Thread - Configuration and monitoring
+DDB1 = {
Class = GAMDataSource
}
+LoggerDataSource = {
Class = LoggerDataSource
}
+Timings = {
Class = TimingDataSource
}
+Timer = {
Class = LinuxTimer
ExecutionMode = RealTimeThread
SleepNature = Busy
SleepPercentage = 0
Phase = 0
CPUMask = 0x00000100
Signals = {
Counter = {
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
Time = {
Type = uint32
NumberOfElements = 1
NumberOfDimensions = 0
}
AbsoluteTime = {
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
+MXIRegistersRead = {
Class = NI9157::NI9157MxiDataSource
RunNi = 0
NI9157DevicePath = NiDevice
NumberOfPacketsInFIFO = 10
BlockIfNotRunning = 0
Signals = {
hl_tx_spi_done = { // TX SPI done (all)
Type = bool
NumberOfElements = 1
}
hl_rx_spi_done = { // RX SPI done (all)
Type = bool
NumberOfElements = 1
}
dsc_ao_0_ctr_out = { // AO 0 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_ao_1_ctr_out = { // AO 1 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_ao_2_ctr_out = { // AO 2 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_mo_0_ctr_out = { // MO 0 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_mo_1_ctr_out = { // MO 1 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_do_n_ctr_out = { // DO N Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_fs_0_ctr_out = { // FS 0 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_fs_1_ctr_out = { // FS 1 Accepted Triplet Counter
Type = uint8
NumberOfElements = 1
}
dsc_full_mod_out = { // Modules FIFO Full status flag
Type = uint8
NumberOfElements = 1
}
dsc_acq_en_out = { // USC Acquisition Enable
Type = bool
NumberOfElements = 1
}
dsc_ts_status = { // Timestamp generation status
Type = bool
NumberOfElements = 1
}
dsc_ts_out = { // Timestamp current value
Type = uint64
NumberOfElements = 1
}
}
}
+MXIRegistersWriteRst = {
Class = NI9157::NI9157MxiDataSource
RunNi = 0
NI9157DevicePath = NiDevice
NumberOfPacketsInFIFO = 10
BlockIfNotRunning = 0
Signals = {
rst_in = { // Reset Firmware (toggle switch)
Type = bool
NumberOfElements = 1
}
}
}
+MXIRegistersWriteEn = {
Class = NI9157::NI9157MxiDataSource
RunNi = 0
NI9157DevicePath = NiDevice
NumberOfPacketsInFIFO = 10
BlockIfNotRunning = 0
Signals = {
dsc_en_in = { // Enable DSC
Type = bool
NumberOfElements = 1
}
}
}
+MXIRegistersDgbEn = {
Class = NI9157::NI9157MxiDataSource
RunNi = 0
NI9157DevicePath = NiDevice
NumberOfPacketsInFIFO = 10
BlockIfNotRunning = 0
Signals = {
dbg_en_sel_in = { // DBG Enable Selector (0 -> dbg_en_in driven, 1-> dsc_acq_en_out driven)
Type = bool
NumberOfElements = 1
}
dbg_en_in = { // DBG Enable Input (usable when dbg_en_sel_in <= 1'b0)
Type = bool
NumberOfElements = 1
}
}
}
+MXIRegistersWriteHlOpt = {
Class = NI9157::NI9157MxiDataSource
RunNi = 0
NI9157DevicePath = NiDevice
NumberOfPacketsInFIFO = 10
BlockIfNotRunning = 0
Signals = {
hl_tx_1_opt = { // HL TX 1 CFG
Type = uint8
NumberOfElements = 1
}
hl_tx_2_opt = { // HL TX 2 CFG
Type = uint8
NumberOfElements = 1
}
hl_tx_3_opt = { // HL TX 3 CFG
Type = uint8
NumberOfElements = 1
}
hl_tx_opt_trg = { // Trigger HL TX configuration (toggle switch)
Type = bool
NumberOfElements = 1
}
hl_rx_1_opt = { // HL RX 1 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_2_opt = { // HL RX 2 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_3_opt = { // HL RX 3 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_4_opt = { // HL RX 4 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_5_opt = { // HL RX 5 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_6_opt = { // HL RX 6 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_7_opt = { // HL RX 7 CFG
Type = uint8
NumberOfElements = 1
}
hl_rx_opt_trg = { // Trigger HL RX configuration (toggle switch)
Type = bool
NumberOfElements = 1
}
}
}
+MXIDsFifoAcqEn = {
Class = NI9157::NI9157MxiDataSource
NI9157DevicePath = NiDevice
RunNi = 0
NumberOfPacketsInFIFO = 1
BlockIfNotRunning = 0
Signals = {
FIFO0_U64_WR = {
Type = uint64
NumberOfElements = 1
NumberOfDimensions = 1
}
}
}
+MXIDsFifoConfig = {
Class = NI9157::NI9157MxiDataSource
NI9157DevicePath = NiDevice
RunNi = 0
NumberOfPacketsInFIFO = 1
BlockIfNotRunning = 0
Signals = {
FIFO0_U64_WR = {
Type = uint64
NumberOfElements = 16
NumberOfDimensions = 1
}
}
}
+SdnPlcPub = {
Class = SDN::SDNPublisher
Interface = "eno2"
Address = "10.0.0.20:2004"
Topic = 0
NetworkByteOrder = 1
Signals = {
// Header Signals
HeaderNF = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
HeaderNI = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
HeaderNC = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
HeaderNS = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
HeaderNA = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
HeaderS = {
Type = uint8
NumberOfElements = 3
NumberOfDimensions = 1
}
// Float32 Signals
VB1TREF = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB1 = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2TREF = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2 = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB1RR = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2RR = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB1TH = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2TH = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VKTH = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
VK = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
PSKT = {
Type = float32
NumberOfElements = 1
NumberOfDimensions = 0
}
// UInt16 Signals
VB1UP = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2UP = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
VB1TSEL = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
VB2TSEL = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
VKSEL = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
BODR = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
VKUP = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
MDKF = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
CSTAT = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
COMOD = {
Type = uint16
NumberOfElements = 1
NumberOfDimensions = 0
}
// UInt8 Commands
CFG = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
SM = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
+SdnPlcSub = {
Class = SDN::SDNSubscriber
ExecutionMode = IndependentThread
Interface = "eno2"
Address = "10.0.0.22:2004"
CPUs = 0x00020000
Topic = 0
IgnoreTimeoutError = 1
Timeout = 0
Signals = {
Header = {
Type = uint8
NumberOfElements = 48
NumberOfDimensions = 1
}
PLC_HEADER = {
Type = uint8
NumberOfElements = 8
NumberOfDimensions = 1
}
ACK_CFG = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
ACK_SMC = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
STATE_CFG = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
STATE_SMC = {
Type = uint8
NumberOfElements = 1
NumberOfDimensions = 0
}
}
}
+DANWriterT1 = {
Class = DAN::DANSource
NumberOfBuffers = 300
CPUMask = 0x00040000
DanBufferMultiplier = 8
StackSize = 10000000
NumberOfPreTriggers = 0
NumberOfPostTriggers = 0
StoreOnTrigger = 1
ICProgName = MARTeAppRun
Signals = {
DANWriterT1_Trigger = {
Type = uint8
}
DANWriterT1_TimeSamples = {
Type = uint64
TimeSignal = 1
AbsoluteTime = 1
}
DANWriterT1_Time = {
Type = uint64
NodeName = "EC-GN-P5C:R_T1_Time"
Period = 10.0e-3
}
DANWriterT1_MXIAbsTime = {
Type = uint64
NodeName = "EC-GN-P5C:R_T1_MXIAbsTime"
Period = 10.0e-3
}
DANWriterT1_SMState = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_SMState"
Period = 10.0e-3
}
DANWriterT1_AcqStatus = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_AcqStatus"
Period = 10.0e-3
}
DANWriterT1_MXICfgSupDone = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXICfgSupDone"
Period = 10.0e-3
}
DANWriterT1_MXICfgSupError = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXICfgSupError"
Period = 10.0e-3
}
DANWriterT1_MXICfgSupStatus = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXICfgSupStatus"
Period = 10.0e-3
}
DANWriterT1_MXIBaseCfgTrg = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIBaseCfgTrg"
Period = 10.0e-3
}
DANWriterT1_MXIBaseCfgMode = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIBaseCfgMode"
Period = 10.0e-3
}
DANWriterT1_MXIBaseCfgDone = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIBaseCfgDone"
Period = 10.0e-3
}
DANWriterT1_MXIBaseCfgStatus = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIBaseCfgStatus"
Period = 10.0e-3
}
DANWriterT1_MXIAcqEnTrg = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIAcqEnTrg"
Period = 10.0e-3
}
DANWriterT1_MXIAcqEnDone = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIAcqEnDone"
Period = 10.0e-3
}
DANWriterT1_MXIAcqEnStatus = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXIAcqEnStatus"
Period = 10.0e-3
}
DANWriterT1_MXITrpCfgTrg = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXITrpCfgTrg"
Period = 10.0e-3
}
DANWriterT1_MXITrpCfgDone = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXITrpCfgDone"
Period = 10.0e-3
}
DANWriterT1_MXITrpCfgError = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_MXITrpCfgError"
Period = 10.0e-3
}
DANWriterT1_PlcCfgSupTxTrg = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_PlcCfgSupTxTrg"
Period = 10.0e-3
}
DANWriterT1_PlcCfgSupDone = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_PlcCfgSupDone"
Period = 10.0e-3
}
DANWriterT1_PlcCfgSupError = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_PlcCfgSupError"
Period = 10.0e-3
}
DANWriterT1_PlcCfgSupStatus = {
Type = uint8
NodeName = "EC-GN-P5C:R_T1_PlcCfgSupStatus"
Period = 10.0e-3
}
DANWriterT1_PreCfg_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_PreCfg_CT"
Period = 10.0e-3
}
DANWriterT1_MxiCfg_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_MxiCfg_CT"
Period = 10.0e-3
}
DANWriterT1_PlcCfg_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_PlcCfg_CT"
Period = 10.0e-3
}
DANWriterT1_TestRun_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_TestRun_CT"
Period = 10.0e-3
}
DANWriterT1_TestPost_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_TestPost_CT"
Period = 10.0e-3
}
DANWriterT1_CfgError_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_CfgError_CT"
Period = 10.0e-3
}
DANWriterT1_Error_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_Error_CT"
Period = 10.0e-3
}
DANWriterT1_FirstGAM_ReadTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_FirstGAM_RT"
Period = 10.0e-3
}
DANWriterT1_LastGAM_ExecTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T1_LastGAM_ET"
Period = 10.0e-3
}
}
}
+EpicsOutput_T1 = {
Class = EPICSCA::EPICSCAOutput
CPUs = 0xFF
NumberOfBuffers = 50
Signals = {
InitTime_L = {
PVName = EC-GN-P5C:R_T1_ONLINE_T_L
Type = uint32
}
InitTime_H = {
PVName = EC-GN-P5C:R_T1_ONLINE_T_H
Type = uint32
}
FinalTime_L = {
PVName = EC-GN-P5C:R_T1_OFFLINE_T_L
Type = uint32
}
FinalTime_H = {
PVName = EC-GN-P5C:R_T1_OFFLINE_T_H
Type = uint32
}
}
}
// ------------ T1 END ------------ //
// ----------- T2 START ----------- //
// Fast Thread - GET ACQ Data + WaveformMonitors + DANWriterWriter2
+DDB2 = {
Class = GAMDataSource
}
+MXIUsFifoDataT2 = {
Class = NI9157::NI9157CircularFifoReader
NumberOfBuffers = 300
CpuMask = 0x00008000
NI9157DevicePath = NiDevice
RunNi = 0
NumberOfPacketsInFIFO = 3
NonBlockSleepT = 1.0e-6
TriggerAfterNPackets = 1
Timeout = 1
FifoName = FIFO1_U64_RD
GetFirst = 1
CheckFrame = 1
+Checker = {
Class = MarkerBitChecker
SampleSize = 8
NumOfFrameForSync = 1
MarkerBitMask = 0x8000000000000000
ResetBitMask = 0xC000000000000000
}
Signals = {
MXIUpstreamData = {
Type = uint64
NumberOfDimensions = 1
NumberOfElements = 3001
HeaderSize = 8
// AI3[63:48] AI2[47:32] AI1[31:16] AI0[15:0]
// NU[63:48] AI6[47:32] AI5[31:16] AI4[15:0]
// NU[63:2] DI0[1] DI0[0]
PacketMemberSizes = {2, 2, 2, 2, 2, 2, 2, 2, 8}
}
ErrorCheck = {
Type = uint32
NumberOfElements = 1
}
}
}
+DANWriterT2 = {
Class = DAN::DANSource
NumberOfBuffers = 300
CPUMask = 0x00080000
DanBufferMultiplier = 8
StackSize = 10000000
NumberOfPreTriggers = 0
NumberOfPostTriggers = 0
StoreOnTrigger = 1
ICProgName = MARTeAppRun
Signals = {
DANWriterT2_Trigger = {
Type = uint8
}
DANWriterT2_TimeSamples = {
Type = uint64
TimeSignal = 1
AbsoluteTime = 1
}
DANWriterT2_Time = {
Type = uint64
NodeName = "EC-GN-P5C:R_T2_Time"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_0_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_0"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_1_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_2_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_2"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_3_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_3"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_4_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_4"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_5_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_5"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_AI_6_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_AI_6"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_DI_0_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_DI_0"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_USC_DI_1_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T2_USC_DI_1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT2_ERRORCHECK = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_ERRORCHECK"
Period = 500.0e-6
}
DANWriterT2_PlcCfg_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_PlcCfg_CT"
Period = 500.0e-6
}
DANWriterT2_TestRun_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_TestRun_CT"
Period = 500.0e-6
}
DANWriterT2_TestPost_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_TestPost_CT"
Period = 500.0e-6
}
DANWriterT2_FirstGAM_ReadTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_FirstGAM_RT"
Period = 500.0e-6
}
DANWriterT2_LastGAM_ExecTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T2_LastGAM_ET"
Period = 500.0e-6
}
}
}
+FileWriterBufferT2 = {
Class = FileDataSource::FileWriter
NumberOfBuffers = 300
CPUMask = 0x00400000
StackSize = 10000000
Filename = "/mnt/disktmpfs/AmpegonPsTb_Data/AmpegonPsTb_BinaryBuffers/TestRunBuffer_REGKEY_POST_BUILD_DAN_PREFIX5101001.bin"
Overwrite = "yes"
FileFormat = "binary"
StoreOnTrigger = 1
RefreshContent = 0
NumberOfPreTriggers = 0
NumberOfPostTriggers = 0
Signals = {
FileWriterT2_Trigger = {
Type = uint8
}
FileWriterT2_Time = {
Type = uint64
NumberOfElements = 1000
}
FileWriterT2_USC_AI_0_VALUE = {
Type = uint16
NumberOfElements = 1000
}
FileWriterT2_USC_AI_1_VALUE = {
Type = uint16
NumberOfElements = 1000
}
FileWriterT2_USC_AI_2_VALUE = {
Type = uint16
NumberOfElements = 1000
}
FileWriterT2_USC_DI_0_VALUE = {
Type = uint16
NumberOfElements = 1000
}
}
}
+EpicsOutput_T2 = {
Class = EPICSCA::EPICSCAOutput
CPUs = 0xFF
NumberOfBuffers = 50
Signals = {
InitTime_L = {
PVName = EC-GN-P5C:R_T2_ONLINE_T_L
Type = uint32
}
InitTime_H = {
PVName = EC-GN-P5C:R_T2_ONLINE_T_H
Type = uint32
}
FinalTime_L = {
PVName = EC-GN-P5C:R_T2_OFFLINE_T_L
Type = uint32
}
FinalTime_H = {
PVName = EC-GN-P5C:R_T2_OFFLINE_T_H
Type = uint32
}
}
}
// ------------ T2 END ------------ //
// ----------- T3 START ----------- //
// Fast Thread - Get DEBUG Data + DANWriterWriter 3
+DDB3 = {
Class = GAMDataSource
}
+MXIUsFifoDebugT3 = {
Class = NI9157::NI9157CircularFifoReader
NumberOfBuffers = 300
CpuMask = 0x00010000
NI9157DevicePath = NiDevice
RunNi = 0
NumberOfPacketsInFIFO = 3
NonBlockSleepT = 1.0e-6
TriggerAfterNPackets = 1
Timeout = 1
FifoName = FIFO2_U64_RD
GetFirst = 1
CheckFrame = 1
+Checker = {
Class = MarkerBitChecker
SampleSize = 8
NumOfFrameForSync = 1
MarkerBitMask = 0x8000000000000000
ResetBitMask = 0xC000000000000000
}
Signals = {
MXIUpstreamDebug = {
Type = uint64
NumberOfDimensions = 1
NumberOfElements = 2001
HeaderSize = 8
// NU[63:48] AO2[47:32] AO1[31:16] AO0[15:0]}
// NU[63:12] PWON[11] FS2[10] FS1[9] MOD2[8]
// MOD1[7] DO4[6] DO3[5] DO2[4]
// DO1[3] DO0[2] MO1[1] MO0[0]
PacketMemberSizes = {2, 2, 2, 2, 8}
}
ErrorCheck = {
Type = uint32
NumberOfElements = 1
}
}
}
+DANWriterT3 = {
Class = DAN::DANSource
NumberOfBuffers = 300
CPUMask = 0x00100000
DanBufferMultiplier = 8
StackSize = 10000000
NumberOfPreTriggers = 0
NumberOfPostTriggers = 0
StoreOnTrigger = 1
ICProgName = MARTeAppRun
Signals = {
DANWriterT3_Trigger = {
Type = uint8
}
DANWriterT3_TimeSamples = {
Type = uint64
TimeSignal = 1
AbsoluteTime = 1
}
DANWriterT3_Time = {
Type = uint64
NodeName = "EC-GN-P5C:R_T3_Time"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_0_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T3_DBG_AO_0"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_1_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T3_DBG_AO_1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_AO_2_VALUE = {
Type = uint16
NodeName = "EC-GN-P5C:R_T3_DBG_AO_2"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MO_0_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_MO_0"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MO_1_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_MO_1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_0_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_DO_0"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_1_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_DO_1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_2_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_DO_2"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_3_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_DO_3"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_DO_4_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_DO_4"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MOD1_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_MOD1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_MOD2_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_MOD2"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_FS1_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_FS1"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_FS2_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_FS2"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_DBG_PWON_VALUE = {
Type = uint8
NodeName = "EC-GN-P5C:R_T3_DBG_PWON"
Period = 500.0e-9
NumberOfElements = 1000
NumberOfDimensions = 1
}
DANWriterT3_ERRORCHECK = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_ERRORCHECK"
Period = 500.0e-6
}
DANWriterT3_PlcCfg_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_PlcCfg_CT"
Period = 500.0e-6
}
DANWriterT3_TestRun_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_TestRun_CT"
Period = 500.0e-6
}
DANWriterT3_TestPost_CycleTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_TestPost_CT"
Period = 500.0e-6
}
DANWriterT3_FirstGAM_ReadTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_FirstGAM_RT"
Period = 500.0e-6
}
DANWriterT3_LastGAM_ExecTime = {
Type = uint32
NodeName = "EC-GN-P5C:R_T3_LastGAM_ET"
Period = 500.0e-6
}
}
}
+EpicsOutput_T3 = {
Class = EPICSCA::EPICSCAOutput
CPUs = 0xFF
NumberOfBuffers = 50
Signals = {
InitTime_L = {
PVName = EC-GN-P5C:R_T3_ONLINE_T_L
Type = uint32
}
InitTime_H = {
PVName = EC-GN-P5C:R_T3_ONLINE_T_H
Type = uint32
}
FinalTime_L = {
PVName = EC-GN-P5C:R_T3_OFFLINE_T_L
Type = uint32
}
FinalTime_H = {
PVName = EC-GN-P5C:R_T3_OFFLINE_T_H
Type = uint32
}
}
}
// ------------ T3 END ------------ //
}
+States = {
Class = ReferenceContainer
+PreCfg = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, EventMessageBypassPreCfg, AcquisitionStatusMonitor, /*AcquisitionStatusMessages,
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
+MxiCfg = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
+PlcCfg = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
+Thread2Daq = {
Class = RealTimeThread
CPUs = 0x00000200
Functions = {
// RX PATH
MxiDataUsFifoDataT2, DigitalInputSplitterT2, TimeConversionT2, TimeConversionT2_Abs, MXIMasterTimeT2,
// CONST GAM
DANWriterWriteDataWindowLimitsT2,
// FLOW CTRL
DANWriterWriteDataWindowT2,
// MON/STATE CTRL
AppMonitorT2, ExecutionMonitorT2,
// STORAGE
StoreStartPulseTime_T2,
StoreStopPulseTime_T2,
DANWriterWriteDataT2, FileWriterBufferDataT2
}
}
+Thread3Dbg = {
Class = RealTimeThread
CPUs = 0x00000400
Functions = {
// RX PATH
MxiDataUsFifoDataT3, DigitalInputSplitterT3, TimeConversionT3, TimeConversionT3_Abs, MXIMasterTimeT3,
// CONST GAM
DANWriterWriteDataWindowLimitsT3,
// FLOW CTRL
DANWriterWriteDataWindowT3,
// TX PATH
// NOOP,
// MON/STATE CTR
AppMonitorT3, ExecutionMonitorT3,
// STORAGE
StoreStartPulseTime_T3,
StoreStopPulseTime_T3,
DANWriterWriteDataT3
}
}
}
}
+TestRun = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, AcquisitionStatusMessages,
/*CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
+Thread2Daq = {
Class = RealTimeThread
CPUs = 0x00000200
Functions = {
// RX PATH
MxiDataUsFifoDataT2, DigitalInputSplitterT2, TimeConversionT2, TimeConversionT2_Abs, MXIMasterTimeT2,
// CONST GAM
DANWriterWriteDataWindowLimitsT2,
// FLOW CTRL
DANWriterWriteDataWindowT2,
// MON/STATE CTRL
AppMonitorT2, ExecutionMonitorT2,
// STORAGE
StoreStartPulseTime_T2,
StoreStopPulseTime_T2,
DANWriterWriteDataT2, FileWriterBufferDataT2
}
}
+Thread3Dbg = {
Class = RealTimeThread
CPUs = 0x00000400
Functions = {
// RX PATH
MxiDataUsFifoDataT3, DigitalInputSplitterT3, TimeConversionT3, TimeConversionT3_Abs, MXIMasterTimeT3,
// CONST GAM
DANWriterWriteDataWindowLimitsT3,
// FLOW CTRL
DANWriterWriteDataWindowT3,
// TX PATH
// NOOP,
// MON/STATE CTR
AppMonitorT3, ExecutionMonitorT3,
// STORAGE
StoreStartPulseTime_T3,
StoreStopPulseTime_T3,
DANWriterWriteDataT3
}
}
}
}
+TestPost = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,*/
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, /*TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
+TestDone = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,*/
CycleCounterT1, TestPostTasksDelay, /*TestPostGotoTestDone,*/ TestDoneCallTasks, EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
+CfgError = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
+Error = {
Class = RealTimeState
+Threads = {
Class = ReferenceContainer
+Thread1Cfg = {
Class = RealTimeThread
CPUs = 0x00000100
Functions = {
// TIMER
Timer, CurrentTime_T1, TimeConverter,
// RX PATH
MXIRead, MXIModuleFullFlagSplitter, MXIMasterTime, PlcPacketRx,
// CONST GAM
AppStateMachineState, DANWriterWriteEnable, MXISupervisorVariables, MXIBaseConfigurationVariables,
MXIDsFifoAcqEnVariables, PlcPacketTxVariables, StateMachineTasksDelay,
AcquisitionStatusDaq, AcquisitionStatusDbg,
// FLOW CTRL
MXIConfigurationSupervisor, MXIBaseConfiguration,
MXIAcquisitionEnable, MXITripletConfiguration, PlcConfigurationSupervisor,
// TX PATH
MXIWriteRst, MXIWriteHlOpt, MXIWriteEn, MXIWriteDbg,
MXIWriteDsFifoAcqEn, MXIWriteDsFifoConfig, PlcPacketTx,
// MON/STATE CTRL
AppMonitor, /*EventMessageBypassPreCfg,*/ AcquisitionStatusMonitor, /*AcquisitionStatusMessages,
CycleCounterT1, TestPostTasksDelay, TestPostGotoTestDone, TestDoneCallTasks,*/ EventMessages,
// STORAGE
StoreStartPulseTime_T1,
StoreStopPulseTime_T1,
DANWriterWriteData
}
}
}
}
}
+Scheduler = {
Class = GAMScheduler
TimingDataSource = Timings
}
}