From 2991286fd799fce26af06d626929f2c26c1bc689 Mon Sep 17 00:00:00 2001 From: ferrog Date: Mon, 9 Feb 2026 10:59:18 +0000 Subject: [PATCH] Fixing --- EC-GN-JA-PCF-IN/pom.xml | 6 + .../src/main/resources/dan/DAN_ACQ.xml | 151 ++++++++++++++++++ .../src/state_machine/0_initial.marte | 12 ++ .../Configurations/src/thread3/datasync.marte | 2 +- .../src/thread4/adc_2_dan.marte | 35 ++-- .../src/thread5/dio_dan_writer.marte | 4 +- .../Configurations/src/variables.marte | 13 +- .../src/main/scripts/ec-gn-ja-pcf-gy.sh | 20 +-- ec-gn-ja-pcf-sdd-in | 2 +- generate.sh | 8 +- ...EC-GN-P01-PCF0CORE_userPreDriverConf.patch | 52 +++--- 11 files changed, 240 insertions(+), 65 deletions(-) create mode 100644 EC-GN-JA-PCF-IN/src/main/resources/dan/DAN_ACQ.xml diff --git a/EC-GN-JA-PCF-IN/pom.xml b/EC-GN-JA-PCF-IN/pom.xml index 92d6344..3add21c 100755 --- a/EC-GN-JA-PCF-IN/pom.xml +++ b/EC-GN-JA-PCF-IN/pom.xml @@ -146,6 +146,12 @@ of the distribution package.. target="/etc/opt/codac/${project.artifactId}"> * + + * + + + + + 1.0.0 + + + danFloat + 100000 + + DM_BLOCK2D_VAR + DATA_D0 + NO_CHECK + 1000 + 1 + UTC + + 20 + 10000 + 2 + + + + DAQ + v1.0 + 0 + 0 + + + + + + + + + + + + + + + + + + danUInt8 + 100000 + + DM_BLOCK2D_VAR + DATA_D0 + NO_CHECK + 1000 + 1 + UTC + + 20 + 10000 + 2 + + + + DAQ + v1.0 + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + danUInt32 + 100000 + + DM_BLOCK2D_VAR + DATA_D0 + NO_CHECK + 1000 + 1 + UTC + + 20 + 10000 + 2 + + + + DAQ + v1.0 + 0 + 0 + + + + + + + + + + + + ALL + + ${DAN_INTERFACE_NAME} + + + IF_FAIL_NEXT + ${DAN_ARCHIVE_MASTER} + ${DAN_ARCHIVE_SLAVE} + + + + + + diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_machine/0_initial.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_machine/0_initial.marte index f1d10e2..c3ddee5 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_machine/0_initial.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/state_machine/0_initial.marte @@ -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" + } } } diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread3/datasync.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread3/datasync.marte index aa75979..9191f50 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread3/datasync.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread3/datasync.marte @@ -4,7 +4,7 @@ +Data = { +SynchThread = { Class = RealTimeThreadSynchronisation - Timeout = 0xFFFFFFFF + Timeout = 100 Signals = { PXI6259_Status = { Type = uint32 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread4/adc_2_dan.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread4/adc_2_dan.marte index 70d8698..521a9b3 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread4/adc_2_dan.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread4/adc_2_dan.marte @@ -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 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread5/dio_dan_writer.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread5/dio_dan_writer.marte index 9175bb2..724c70d 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread5/dio_dan_writer.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/thread5/dio_dan_writer.marte @@ -5,8 +5,8 @@ +DANDIODataSource = { Class = "DAN::DANSource" - NumberOfBuffers = 10 - CPUMask = 15 + NumberOfBuffers = 1000 + CPUMask = @cpus_dio StackSize = 10000000 DanBufferMultiplier = 4 StoreOnTrigger = 0 diff --git a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/variables.marte b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/variables.marte index 924324b..fd78941 100644 --- a/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/variables.marte +++ b/EC-GN-JA-PCF-IN/src/main/resources/qst-gyrotron-fast-controller/Configurations/src/variables.marte @@ -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 diff --git a/EC-GN-JA-PCF-IN/src/main/scripts/ec-gn-ja-pcf-gy.sh b/EC-GN-JA-PCF-IN/src/main/scripts/ec-gn-ja-pcf-gy.sh index 9ef27bf..3da8830 100644 --- a/EC-GN-JA-PCF-IN/src/main/scripts/ec-gn-ja-pcf-gy.sh +++ b/EC-GN-JA-PCF-IN/src/main/scripts/ec-gn-ja-pcf-gy.sh @@ -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 diff --git a/ec-gn-ja-pcf-sdd-in b/ec-gn-ja-pcf-sdd-in index d6370e2..80ccaff 160000 --- a/ec-gn-ja-pcf-sdd-in +++ b/ec-gn-ja-pcf-sdd-in @@ -1 +1 @@ -Subproject commit d6370e2c9e783022b22ce6d34accc699d503cdbf +Subproject commit 80ccaff4ce0a75b00c01c6c82ffbda42af7d5d37 diff --git a/generate.sh b/generate.sh index 41c4d4c..1c32e5e 100755 --- a/generate.sh +++ b/generate.sh @@ -66,7 +66,8 @@ if [[ ${ok} != "0" ]]; then rm -rf ${project_name}/* cp -rf ${project_name}-IN/* ${project_name}/ cp -rf ${project_name}-IN/.[^.]* ${project_name}/ - cp -rn tmp_resources/* ${project_name}/src/main/resources + rm -rf tmp_resources/qst-gyrotron-fast-controller/Configurations + cp -rn tmp_resources/* ${project_name}/src/main/resources/ rm -rf tmp_resources # /bin/cp -rf /opt/codac/marte2-extensions/templates ${project_name,,}-sdd-in/SDD_IN/ # /bin/cp -f templates/* ${project_name,,}-sdd-in/SDD_IN/templates @@ -91,13 +92,12 @@ if [[ ${ok} != "0" ]]; then # cat patches/EC-GN-P01-PCF0CORE_sddPreDriverConf.patch ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/sddPreDriverConf.cmd > sddPreDriverConf_patched.cmd # mv -f sddPreDriverConf_patched.cmd ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/sddPreDriverConf.cmd -# cat patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/userPreDriverConf.cmd > userPreDriverConf_patched.cmd -# mv -f userPreDriverConf_patched.cmd ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/userPreDriverConf.cmd + cat patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/userPreDriverConf.cmd > userPreDriverConf_patched.cmd + mv -f userPreDriverConf_patched.cmd ${project_name}/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/userPreDriverConf.cmd # sed -i 's+# Add all the support libraries needed by this IOC+# Add all the support libraries needed by this IOC\n-include $(EPICS_ROOT)/mk/asyn.mk\n-include $(EPICS_ROOT)/mk/picmg.mk\n-include $(EPICS_ROOT)/mk/stream.mk\n-include $(EPICS_ROOT)/mk/nisync-epics.mk\n-include $(EPICS_ROOT)/mk/nisync-generalTime.mk\n-include $(EPICS_ROOT)/mk/nixseries-epics.mk\n-include $(EPICS_ROOT)/mk/pxi6259-epics.mk\n-include $(EPICS_ROOT)/mk/pxi6528-epics.mk+g' EC-GN-JA-PCF/src/main/epics/EC-GN-P01App/src/Makefile # sed -i 's+epicsEnvSet("\(.*\)")+epicsEnvSet("\1:${TOP}/iocBoot/iocEC-GN-P01-PCF0CORE")+g' EC-GN-JA-PCF/src/main/epics/iocBoot/iocEC-GN-P01-PCF0CORE/envSystem -echo OK fi cid=$((cid+1)) diff --git a/patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch b/patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch index 1fe790b..a7585b3 100644 --- a/patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch +++ b/patches/EC-GN-P01-PCF0CORE_userPreDriverConf.patch @@ -5,42 +5,42 @@ ### PXIe-6368 setup ## AO Port ## -asynXseriesResetAoConfiguration("ni6368_0") -asynXseriesStaticAo("ni6368_0") -asynXseriesAddAoChannel("ni6368_0", 0, 0) -asynXseriesAddAoChannel("ni6368_0", 1, 0) -asynXseriesAddAoChannel("ni6368_0", 2, 0) -asynXseriesAddAoChannel("ni6368_0", 3, 0) -asynXseriesLoadAoConfiguration("ni6368_0") -asynXseriesStartAo("ni6368_0") +#asynXseriesResetAoConfiguration("ni6368_0") +#asynXseriesStaticAo("ni6368_0") +#asynXseriesAddAoChannel("ni6368_0", 0, 0) +#asynXseriesAddAoChannel("ni6368_0", 1, 0) +#asynXseriesAddAoChannel("ni6368_0", 2, 0) +#asynXseriesAddAoChannel("ni6368_0", 3, 0) +#asynXseriesLoadAoConfiguration("ni6368_0") +#asynXseriesStartAo("ni6368_0") -asynXseriesResetAoConfiguration("ni6368_1") -asynXseriesStaticAo("ni6368_1") -asynXseriesAddAoChannel("ni6368_1", 0, 0) -asynXseriesAddAoChannel("ni6368_1", 1, 0) -asynXseriesAddAoChannel("ni6368_1", 2, 0) -asynXseriesAddAoChannel("ni6368_1", 3, 0) -asynXseriesLoadAoConfiguration("ni6368_1") -asynXseriesStartAo("ni6368_1") +#asynXseriesResetAoConfiguration("ni6368_1") +#asynXseriesStaticAo("ni6368_1") +#asynXseriesAddAoChannel("ni6368_1", 0, 0) +#asynXseriesAddAoChannel("ni6368_1", 1, 0) +#asynXseriesAddAoChannel("ni6368_1", 2, 0) +#asynXseriesAddAoChannel("ni6368_1", 3, 0) +#asynXseriesLoadAoConfiguration("ni6368_1") +#asynXseriesStartAo("ni6368_1") ## AI Port ## ### PXI-6259 setup -pxi6259_ai_start_trig(0, 1, 0, 0) #boardnumber, enable, trigger_source, trigger_edge -pxi6259_ai_start_trig(1, 1, 0, 0) #boardnumber, enable, trigger_source, trigger_edge +#pxi6259_ai_start_trig(0, 1, 0, 0) #boardnumber, enable, trigger_source, trigger_edge +#pxi6259_ai_start_trig(1, 1, 0, 0) #boardnumber, enable, trigger_source, trigger_edge ### PXI-6528 setup ### set change detection to both -pxi6528_set_port_change_detection("ni6528_0", 0, 255, 255) -pxi6528_set_port_change_detection("ni6528_0", 1, 255, 255) -pxi6528_set_port_change_detection("ni6528_0", 2, 255, 255) +#pxi6528_set_port_change_detection("ni6528_0", 0, 255, 255) +#pxi6528_set_port_change_detection("ni6528_0", 1, 255, 255) +#pxi6528_set_port_change_detection("ni6528_0", 2, 255, 255) -pxi6528_set_port_change_detection("ni6528_1", 0, 255, 255) -pxi6528_set_port_change_detection("ni6528_1", 1, 255, 255) -pxi6528_set_port_change_detection("ni6528_1", 2, 255, 255) +#pxi6528_set_port_change_detection("ni6528_1", 0, 255, 255) +#pxi6528_set_port_change_detection("ni6528_1", 1, 255, 255) +#pxi6528_set_port_change_detection("ni6528_1", 2, 255, 255) ### enable IO intr mode -pxi6528_enable_io_intr_scanning("ni6528_0") -pxi6528_enable_io_intr_scanning("ni6528_1") +#pxi6528_enable_io_intr_scanning("ni6528_0") +#pxi6528_enable_io_intr_scanning("ni6528_1")