187 lines
6.2 KiB
JSON
187 lines
6.2 KiB
JSON
{
|
|
"$App": {
|
|
"Class": "RealTimeApplication",
|
|
"+Data": {
|
|
"Class": "ReferenceContainer",
|
|
"+RTTimer": {
|
|
"Class": "LinuxTimer",
|
|
"SleepNature": "Busy",
|
|
"CPUMask": 2,
|
|
"Locked": 1,
|
|
"Signals": {
|
|
"Counter": {
|
|
"Type": "uint32"
|
|
},
|
|
"Time": {
|
|
"Type": "uint32"
|
|
}
|
|
}
|
|
},
|
|
"+Timing": {
|
|
"Class": "TimingDataSource",
|
|
"Locked": 1
|
|
},
|
|
"+DDB0": {
|
|
"Class": "GAMDataSource",
|
|
"Locked": 1,
|
|
"Signals": {
|
|
"Time": {
|
|
"Type": "uint32"
|
|
},
|
|
"Times": {
|
|
"Type": "uint32",
|
|
"NumberOfDimensions": 1,
|
|
"NumberOfElements": 3
|
|
},
|
|
"Amplitudes": {
|
|
"Type": "float32",
|
|
"NumberOfDimensions": 1,
|
|
"NumberOfElements": 3
|
|
}
|
|
}
|
|
},
|
|
"+EpicsIn": {
|
|
"Class": "EPICSCA::EPICSCAInput",
|
|
"Locked": 1,
|
|
"Signals": {
|
|
"Amplitude": {
|
|
"Type": "float32",
|
|
"PVName": "Amplitude"
|
|
},
|
|
"Frequency": {
|
|
"Type": "float32",
|
|
"PVName": "Frequency"
|
|
}
|
|
}
|
|
},
|
|
"DefaultDataSource": "DDB0",
|
|
"+Logger": {
|
|
"Class": "OnChangeLoggerDataSource",
|
|
"Locked": 1,
|
|
"Signals": {
|
|
"Times": {
|
|
"Type": "uint32",
|
|
"NumberOfDimensions": 1,
|
|
"NumberOfElements": 3
|
|
},
|
|
"Amplitudes": {
|
|
"Type": "float32",
|
|
"NumberOfDimensions": 1,
|
|
"NumberOfElements": 3
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"+Functions": {
|
|
"+TimerGAM": {
|
|
"Class": "IOGAM",
|
|
"InputSignals": {
|
|
"Time": {
|
|
"Frequency": 100,
|
|
"DataSource": "RTTimer",
|
|
"Type": "uint32",
|
|
"Alias": "Time"
|
|
}
|
|
},
|
|
"OutputSignals": {
|
|
"Time": {
|
|
"DataSource": "DDB0",
|
|
"Type": "uint32",
|
|
"Alias": "Time"
|
|
}
|
|
}
|
|
},
|
|
"+Chai": {
|
|
"Class": "ChaiGAM",
|
|
"Code": "global g = 4;\nfun() {\n\tg = g + 1;\n\ty[0] = -A;\n \ty[1] = A;\n\ty[2] = -A;\n\tt[0] = g;\n\tif (freq <= 0) {\n\t\tt[1] = 0;\n\t\tt[2] = 0;\n\t} else {\n\t\tt[1] = int(5e5 / freq);\n\t\tt[2] = int(1e6 / freq);\n\t}\n}",
|
|
"InputSignals": {
|
|
"A": {
|
|
"DataSource": "EpicsIn",
|
|
"Type": "float32",
|
|
"Alias": "Amplitude"
|
|
},
|
|
"freq": {
|
|
"DataSource": "EpicsIn",
|
|
"Type": "float32",
|
|
"Alias": "Frequency"
|
|
}
|
|
},
|
|
"OutputSignals": {
|
|
"t": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "DDB0",
|
|
"Type": "uint32",
|
|
"Alias": "Times"
|
|
},
|
|
"y": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "DDB0",
|
|
"Type": "float32",
|
|
"Alias": "Amplitudes"
|
|
}
|
|
}
|
|
},
|
|
"Class": "ReferenceContainer",
|
|
"+LogGAM": {
|
|
"Class": "IOGAM",
|
|
"InputSignals": {
|
|
"t": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "DDB0",
|
|
"Type": "uint32",
|
|
"Alias": "Times"
|
|
},
|
|
"y": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "DDB0",
|
|
"Type": "float32",
|
|
"Alias": "Amplitudes"
|
|
}
|
|
},
|
|
"OutputSignals": {
|
|
"times": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "Logger",
|
|
"Type": "uint32",
|
|
"Alias": "Times"
|
|
},
|
|
"amplitudes": {
|
|
"NumberOfElements": 3,
|
|
"NumberOfDimensions": 1,
|
|
"DataSource": "Logger",
|
|
"Type": "float32",
|
|
"Alias": "Amplitudes"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"+States": {
|
|
"Class": "ReferenceContainer",
|
|
"+Exec": {
|
|
"Class": "RealTimeState",
|
|
"+Threads": {
|
|
"+Comm": {
|
|
"Class": "RealTimeThread",
|
|
"CPUs": 1,
|
|
"Functions": [
|
|
"TimerGAM",
|
|
"Chai",
|
|
"LogGAM"
|
|
]
|
|
},
|
|
"Class": "ReferenceContainer"
|
|
}
|
|
}
|
|
},
|
|
"+Scheduler": {
|
|
"Class": "GAMScheduler",
|
|
"TimingDataSource": "Timing"
|
|
}
|
|
}
|
|
}
|