This commit is contained in:
ferrog
2026-02-09 10:59:18 +00:00
parent f47135f20c
commit 2991286fd7
11 changed files with 240 additions and 65 deletions
+6
View File
@@ -146,6 +146,12 @@ of the distribution package..
target="/etc/opt/codac/${project.artifactId}">
<include>*</include>
</include>
<include type="file"
source="main/resources/dan/"
targetroot="SYSTEM_ROOT"
target="/etc/opt/codac/${project.artifactId}">
<include>*</include>
</include>
<!-- Scripts -->
<include type="script"
scriptType="helper"
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DAN Configuration
Root: danApi
CODAC-VERSION: 5.1b5
WARNING: This is an automatically generated file. PLEASE DO NOT MODIFY.
-->
<danApi>
<version>1.0.0</version>
<ICprogram name="JADA_RF01App">
<source name="FastAnalogDAN_float32">
<itemDanType>danFloat</itemDanType>
<maxTransferRate>100000</maxTransferRate>
<advancedSource>
<dataModel>DM_BLOCK2D_VAR</dataModel>
<streamType>DATA_D0</streamType>
<checkPolicy>NO_CHECK</checkPolicy>
<queueSize>1000</queueSize>
<profMonitoring>1</profMonitoring>
<timeFormat>UTC</timeFormat>
<debug>
<srvChunkHeaderSize>20</srvChunkHeaderSize>
<srvChunkSize>10000</srvChunkSize>
<srvBufferSize>2</srvBufferSize>
</debug>
</advancedSource>
<deviceInfo>
<deviceName>DAQ</deviceName>
<deviceVersion>v1.0</deviceVersion>
<operationalMode>0</operationalMode>
<manufactureCode>0</manufactureCode>
</deviceInfo>
<channelsInfo sequence="SEQUENCIAL">
<channel number="0" variable="EC-GN-P01:GY_APS_V_MEAS" label="EC-GN-P01:GY_APS_V_MEAS" status="ENABLE"></channel>
<channel number="1" variable="EC-GN-P01:GY_APS_I_MEAS" label="EC-GN-P01:GY_APS_I_MEAS" status="ENABLE"></channel>
<channel number="2" variable="EC-GN-P01:GY_BPS_V_MEAS" label="EC-GN-P01:GY_BPS_V_MEAS" status="ENABLE"></channel>
<channel number="3" variable="EC-GN-P01:GY_BPS_I_MEAS" label="EC-GN-P01:GY_BPS_I_MEAS" status="ENABLE"></channel>
<channel number="4" variable="EC-GN-P01:GY_MHV_V_MEAS" label="EC-GN-P01:GY_MHV_V_MEAS" status="ENABLE"></channel>
<channel number="5" variable="EC-GN-P01:GY_MHV_I_MEAS" label="EC-GN-P01:GY_MHV_I_MEAS" status="ENABLE"></channel>
<channel number="6" variable="EC-GN-P01:GY_ARC1_V_MEAS" label="EC-GN-P01:GY_ARC1_V_MEAS" status="ENABLE"></channel>
<channel number="7" variable="EC-GN-P01:GY_ARC2_V_MEAS" label="EC-GN-P01:GY_ARC2_V_MEAS" status="ENABLE"></channel>
<channel number="8" variable="EC-GN-P01:GY_ARC3_V_MEAS" label="EC-GN-P01:GY_ARC3_V_MEAS" status="ENABLE"></channel>
<channel number="9" variable="EC-GN-P01:GY_RF_V_MEAS" label="EC-GN-P01:GY_RF_V_MEAS" status="ENABLE"></channel>
</channelsInfo>
</source>
<source name="DANDIODataSource_uint8">
<itemDanType>danUInt8</itemDanType>
<maxTransferRate>100000</maxTransferRate>
<advancedSource>
<dataModel>DM_BLOCK2D_VAR</dataModel>
<streamType>DATA_D0</streamType>
<checkPolicy>NO_CHECK</checkPolicy>
<queueSize>1000</queueSize>
<profMonitoring>1</profMonitoring>
<timeFormat>UTC</timeFormat>
<debug>
<srvChunkHeaderSize>20</srvChunkHeaderSize>
<srvChunkSize>10000</srvChunkSize>
<srvBufferSize>2</srvBufferSize>
</debug>
</advancedSource>
<deviceInfo>
<deviceName>DAQ</deviceName>
<deviceVersion>v1.0</deviceVersion>
<operationalMode>0</operationalMode>
<manufactureCode>0</manufactureCode>
</deviceInfo>
<channelsInfo sequence="SEQUENCIAL">
<channel number="0" variable="EC-GN-P01:GYA_APS_READY" label="EC-GN-P01:GYA_APS_READY" status="ENABLE"></channel>
<channel number="1" variable="EC-GN-P01:GYA_APS_FLT" label="EC-GN-P01:GYA_APS_FLT" status="ENABLE"></channel>
<channel number="2" variable="EC-GN-P01:GYA_BPS_READY" label="EC-GN-P01:GYA_BPS_READY" status="ENABLE"></channel>
<channel number="3" variable="EC-GN-P01:GYA_BPS_FLT" label="EC-GN-P01:GYA_BPS_FLT" status="ENABLE"></channel>
<channel number="4" variable="EC-GN-P01:MHVPS_OV" label="EC-GN-P01:MHVPS_OV" status="ENABLE"></channel>
<channel number="5" variable="EC-GN-P01:MHVPS_OC" label="EC-GN-P01:MHVPS_OC" status="ENABLE"></channel>
<channel number="6" variable="EC-GN-P01:MHVPS_FLT" label="EC-GN-P01:MHVPS_FLT" status="ENABLE"></channel>
<channel number="7" variable="EC-GN-P01:MHVPS_READY" label="EC-GN-P01:MHVPS_READY" status="ENABLE"></channel>
<channel number="8" variable="EC-GN-P01:ECPC_MOD" label="EC-GN-P01:ECPC_MOD" status="ENABLE"></channel>
<channel number="9" variable="EC-GN-P01:FAST_TRIP" label="EC-GN-P01:FAST_TRIP" status="ENABLE"></channel>
<channel number="10" variable="EC-GN-P01:CRIO_RV1" label="EC-GN-P01:CRIO_RV1" status="ENABLE"></channel>
<channel number="11" variable="EC-GN-P01:CRIO_RV2" label="EC-GN-P01:CRIO_RV2" status="ENABLE"></channel>
<channel number="12" variable="EC-GN-P01:CRIO_RV3" label="EC-GN-P01:CRIO_RV3" status="ENABLE"></channel>
<channel number="13" variable="EC-GN-P01:PLC_ITL" label="EC-GN-P01:PLC_ITL" status="ENABLE"></channel>
<channel number="14" variable="EC-GN-P01:PLC_STANDBY" label="EC-GN-P01:PLC_STANDBY" status="ENABLE"></channel>
<channel number="15" variable="EC-GN-P01:PLC_READY" label="EC-GN-P01:PLC_READY" status="ENABLE"></channel>
<channel number="16" variable="EC-GN-P01:PLC_ON" label="EC-GN-P01:PLC_ON" status="ENABLE"></channel>
<channel number="17" variable="EC-GN-P01:PLC_PERMIT" label="EC-GN-P01:PLC_PERMIT" status="ENABLE"></channel>
<channel number="18" variable="EC-GN-P01:PLC_OP_SELECTED" label="EC-GN-P01:PLC_OP_SELECTED" status="ENABLE"></channel>
<channel number="19" variable="EC-GN-P01:PLC_CC_OP_SELECTED" label="EC-GN-P01:PLC_CC_OP_SELECTED" status="ENABLE"></channel>
<channel number="20" variable="EC-GN-P01:PLC_SYNCMODE" label="EC-GN-P01:PLC_SYNCMODE" status="ENABLE"></channel>
<channel number="21" variable="EC-GN-P01:TRIGGER" label="EC-GN-P01:TRIGGER" status="ENABLE"></channel>
<channel number="22" variable="EC-GN-P01:BEAM_ON_STAT" label="EC-GN-P01:BEAM_ON_STAT" status="ENABLE"></channel>
<channel number="23" variable="EC-GN-P01:HVARMED" label="EC-GN-P01:HVARMED" status="ENABLE"></channel>
<channel number="24" variable="EC-GN-P01:HVINJECTION" label="EC-GN-P01:HVINJECTION" status="ENABLE"></channel>
<channel number="25" variable="EC-GN-P01:RFON" label="EC-GN-P01:RFON" status="ENABLE"></channel>
</channelsInfo>
</source>
<source name="DANDIODataSource_uint32">
<itemDanType>danUInt32</itemDanType>
<maxTransferRate>100000</maxTransferRate>
<advancedSource>
<dataModel>DM_BLOCK2D_VAR</dataModel>
<streamType>DATA_D0</streamType>
<checkPolicy>NO_CHECK</checkPolicy>
<queueSize>1000</queueSize>
<profMonitoring>1</profMonitoring>
<timeFormat>UTC</timeFormat>
<debug>
<srvChunkHeaderSize>20</srvChunkHeaderSize>
<srvChunkSize>10000</srvChunkSize>
<srvBufferSize>2</srvBufferSize>
</debug>
</advancedSource>
<deviceInfo>
<deviceName>DAQ</deviceName>
<deviceVersion>v1.0</deviceVersion>
<operationalMode>0</operationalMode>
<manufactureCode>0</manufactureCode>
</deviceInfo>
<channelsInfo sequence="SEQUENCIAL">
<channel number="0" variable="EC-GN-P01:PXI6528_Status" label="EC-GN-P01:PXI6528_Status" status="ENABLE"></channel>
<channel number="1" variable="EC-GN-P01:BEAM_ON_TIME" label="EC-GN-P01:BEAM_ON_TIME" status="ENABLE"></channel>
<channel number="2" variable="EC-GN-P01:RFON_TIME" label="EC-GN-P01:RFON_TIME" status="ENABLE"></channel>
</channelsInfo>
</source>
<danStreamer name="DANSTREAMER0">
<link>ALL</link>
<internal>
<danInterface>${DAN_INTERFACE_NAME}</danInterface>
<!-- GGC
<danInterface>eno1</danInterface>
-->
<servers>
<policy>IF_FAIL_NEXT</policy>
<server >${DAN_ARCHIVE_MASTER}</server>
<server >${DAN_ARCHIVE_SLAVE}</server>
<!-- GGC
<server>10.142.0.24</server>
<server>10.142.0.24</server>
-->
</servers>
</internal>
</danStreamer>
</ICprogram>
</danApi>
@@ -42,5 +42,17 @@
SignalValue = 0
}
}
+OpenDANWriterDIO = {
Class = Message
Destination = RTApp.Data.DANDIODataSource
Function = "OpenStream"
Mode = "ExpectsReply"
}
+OpenDANWriterAI = {
Class = Message
Destination = RTApp.Data.FastAnalogDAN
Function = "OpenStream"
Mode = "ExpectsReply"
}
}
}
@@ -4,7 +4,7 @@
+Data = {
+SynchThread = {
Class = RealTimeThreadSynchronisation
Timeout = 0xFFFFFFFF
Timeout = 100
Signals = {
PXI6259_Status = {
Type = uint32
@@ -13,58 +13,54 @@
Calibrate = 1 // Optional (default is 0). If disabled the signals show raw acquired value (signal type must be int16). If enabled the samples already converted accordingly to the declared InputRange. In this case the signal type must be float32
Signals = {
Counter = {
Type = uint64
ResetOnBufferChange = 1
}
Time = {
Type = uint64
}
Status = {
Type = uint32
NumberOfElements = @slow_clock
}
GY_APS_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 0
}
GY_APS_I_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 1
}
GY_BPS_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 2
}
GY_BPS_I_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 3
}
GY_MHV_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 4
}
GY_MHV_I_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 5
}
GY_ARC1_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 6
}
GY_ARC2_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 7
}
GY_ARC3_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 8
}
GY_RF_V_MEAS = {
Type = float32
NumberOfElements = @slow_clock
ChannelId = 9
}
}
@@ -89,7 +85,6 @@
Signals = {
PXI6368_Status = {
Type = uint32
NumberOfElements = @slow_clock
}
GY_APS_V_MEAS = {
Type = float32
@@ -135,7 +130,7 @@
}
+FastAnalogDAN = {
Class = "DAN::DANSource"
NumberOfBuffers = 10
NumberOfBuffers = 1000
CPUMask = @cpus_adc
StackSize = 10000000
DanBufferMultiplier = 4
@@ -315,37 +310,47 @@
InputSignals = {
Status = {
DataSource = FastADC
Frequency = 1
Frequency = 1000
}
GY_APS_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_APS_I_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_BPS_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_BPS_I_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_MHV_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_MHV_I_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_ARC1_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_ARC2_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_ARC3_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
GY_RF_V_MEAS = {
DataSource = FastADC
Samples = @slow_clock
}
}
OutputSignals = {
@@ -469,11 +474,9 @@
PXI6368_Status_Async = {
Alias = PXI6368_Status
DataSource = DDB4
Ranges = { { 0, 0 } }
}
PXI6368_Status = {
DataSource = DDB4
Ranges = { { 0, 0 } }
}
GY_APS_V_MEAS_Async = {
Alias = GY_APS_V_MEAS
@@ -5,8 +5,8 @@
+DANDIODataSource = {
Class = "DAN::DANSource"
NumberOfBuffers = 10
CPUMask = 15
NumberOfBuffers = 1000
CPUMask = @cpus_dio
StackSize = 10000000
DanBufferMultiplier = 4
StoreOnTrigger = 0
@@ -35,9 +35,10 @@
#let dec_index: int = (@fast_slow_ratio - 1)
// CPUS pinning
#var cpus_epics: uint = 0x1
#var cpus_sdn: uint = 0x2
#var cpus_rt: uint = 0x4
#var cpus_adc: uint = 0x8
#var cpus_dan: uint = 0x10
#var cpus_wg: uint = 0x20
#var cpus_epics: uint = 0x8
#var cpus_sdn: uint = 0x10
#var cpus_rt: uint = 0x20
#var cpus_adc: uint = 0x40
#var cpus_dio: uint = 0x80
#var cpus_dan: uint = 0x100
#var cpus_wg: uint = 0x200
@@ -10,18 +10,20 @@ if [[ ! -d ${FOLDER} ]]; then
mkdir -p ${FOLDER}
fi
rm -rf ${FOLDER}
mkdir -p ${FOLDER}
/bin/cp -rf ${SRC}/* ${FOLDER}
cd ${FOLDER}
#make -f Makefile.cfg clean
#make -f Makefile.cfg
CFG_FILE=${FOLDER}/out/${CFG}.marte
#TODO
#/bin/sed -i "s/SDN_IFACE/$PON_INTERFACE_NAME/g" ${CFG_FILE}
#/bin/sed -i "s/TH1_CPU/$TH1_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH2_CPU/$TH2_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH3_CPU/$TH3_CPU/g" ${CFG_FILE}
#/bin/sed -i "s/TH4_CPU/$TH4_CPU/g" ${CFG_FILE}
./mdt build -P src -o ./out/${CFG}.cfg
CFG_FILE=${FOLDER}/out/${CFG}.cfg
export DAN_INTERFACE_NAME=$(cat /etc/codac/networks | grep DAN_DEVICE | cut -d '=' -f 2)
export DAN_ARCHIVE_MASTER=4509dn-cpu-0002-d1:9998
export DAN_ARCHIVE_SLAVE=4509dn-cpu-0002-d1:9998
/opt/codac/bin/danApiTool api init ${FOLDER}/DAN_ACQ.xml
${MARTe2_DIR}/Bin/MARTeApp.ex -f ${CFG_FILE} -l RealTimeLoader -m StateMachine:Start
/opt/codac/bin/danApiTool api close all