119 lines
2.9 KiB
Plaintext
119 lines
2.9 KiB
Plaintext
# This file defines two groups equivalent to the groups defined in testioc.json
|
|
# Dependencies: testioc.db
|
|
|
|
# Group $(user):tableExample
|
|
# Use +id mapping: to present as a epics NTTable
|
|
# with two columns of doubles taken from $(user):vectorExampleD1 and $(user):vectorExampleD2
|
|
# Get metadata (alarms, etc) from $(user):vectorExampleD1
|
|
record(aai, "$(user):groupExampleAS") {
|
|
field(FTVL, "STRING")
|
|
field(NELM, "2")
|
|
field(INP , {const:["Column A", "Column B"]})
|
|
info(Q:group, {
|
|
"$(user):tableExample":{
|
|
+id:"epics:nt/NTTable:1.0",
|
|
+atomic:false,
|
|
"labels":{+type:"plain", +channel:"VAL"}
|
|
}
|
|
})
|
|
field(TPRO, "1")
|
|
}
|
|
|
|
record(waveform, "$(user):vectorExampleD1") {
|
|
field(FTVL, "DOUBLE")
|
|
field(NELM, "10")
|
|
info(Q:group, {
|
|
"$(user):tableExample":{
|
|
"":{+type:"meta", +channel:"VAL"},
|
|
"value.A":{+type:"plain", +channel:"VAL", +putorder:1}
|
|
}
|
|
})
|
|
field(INP, {const:[10,20,30,40,50]})
|
|
field(TPRO, "1")
|
|
}
|
|
|
|
record(waveform, "$(user):vectorExampleD2") {
|
|
field(FTVL, "DOUBLE")
|
|
field(NELM, "10")
|
|
info(Q:group, {
|
|
"$(user):tableExample":{
|
|
"value.B":{+type:"plain", +channel:"VAL", +putorder:1}
|
|
}
|
|
})
|
|
field(INP, {const:[1.1,2.2,3.3,4.4,5.5]})
|
|
field(TPRO, "1")
|
|
}
|
|
|
|
record(longout, "$(user):groupExampleSave") {
|
|
field(MDEL, "-1") # ensure we always trigger group monitor
|
|
info(Q:group, {
|
|
"$(user):tableExample":{
|
|
"_save":{+type:"proc",
|
|
+channel:"VAL",
|
|
+putorder:2,
|
|
+trigger:"*"}
|
|
}
|
|
})
|
|
field(TPRO, "1")
|
|
}
|
|
|
|
# Group $(user):structExample
|
|
# This is an example of a structure that does not correspond to an EPICS normative type
|
|
record("*", "$(user):aiExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"ai":{+channel:"VAL", +putorder:0}
|
|
}
|
|
})
|
|
}
|
|
record("*", "$(user):calcExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"calc":{+channel:"VAL", +putorder:1}
|
|
}
|
|
})
|
|
}
|
|
|
|
record("*", "$(user):stringExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"string":{+channel:"VAL", +putorder:0}
|
|
}
|
|
})
|
|
}
|
|
|
|
record("*", "$(user):arrayExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"array":{+channel:"VAL", +putorder:0}
|
|
}
|
|
})
|
|
}
|
|
|
|
record("*", "$(user):longExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"sa[0].long":{+channel:"VAL", +putorder:0}
|
|
}
|
|
})
|
|
}
|
|
|
|
record("*", "$(user):enumExample") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"sa[0].enum":{+channel:"VAL", +putorder:0}
|
|
}
|
|
})
|
|
}
|
|
|
|
record(longout, "$(user):structExampleSave") {
|
|
info(Q:group, {
|
|
"$(user):structExample":{
|
|
"_save":{+type:"proc",
|
|
+channel:"VAL",
|
|
+putorder:2,
|
|
+trigger:"*"}
|
|
}
|
|
})
|
|
}
|