Difference between revisions of "V4 DBD Examples"
From EPICSWIKI
MartyKraimer (talk | contribs) |
MartyKraimer (talk | contribs) |
||
| Line 1: | Line 1: | ||
Example Record Types Sept | Example Record Types Sept 27 2005 | ||
= Overview = | = Overview = | ||
This document present proposed V4 replacements for a few of the | This document present proposed V4 replacements for a few of the | ||
| Line 18: | Line 18: | ||
readonly(yes) | readonly(yes) | ||
} | } | ||
field(out, | field(out, | ||
link(out,array(string[3]) = { | |||
"outputLinkInt64", | |||
"outputLinkFloat64", | |||
"asynInt32", | |||
"asynFloat64" | |||
} )) | |||
) | |||
field(outputRateOfChange, float64) | field(outputRateOfChange, float64) | ||
field(desiredOutputLink, link(in)) | field(desiredOutputLink, | ||
link(in,array(string[2]) = { | |||
"monitorLinkFloat64", | |||
"inputLinkFloat64" | |||
} )) | |||
) | |||
field(closedLoop, bool) | field(closedLoop, bool) | ||
field(outputIncremental, bool) | field(outputIncremental, bool) | ||
| Line 49: | Line 61: | ||
readonly(yes) | readonly(yes) | ||
} | } | ||
field(simOutputLink, link(out)) | field(simOutputLink, | ||
field(simModeLink, link(in)) | link(out,array(string[2]) = { | ||
"outputLinkInt64", | |||
"outputLinkFloat64", | |||
} )) | |||
) | |||
field(simModeLink, | |||
link(in,array(string[2]) = { | |||
"monitorLinkString", | |||
"inputLinkString" | |||
} )) | |||
) | |||
field(simMode, bool) | field(simMode, bool) | ||
field(simSevr, menu(menuAlarmSevr)) | field(simSevr, menu(menuAlarmSevr)) | ||
| Line 89: | Line 112: | ||
} | } | ||
} | } | ||
} | } | ||
<center> | <center> | ||
| Line 101: | Line 123: | ||
struct(CalcInpLink) { | struct(CalcInpLink) { | ||
field(link,link(in)) | field(link,link(in)) | ||
link(in,array(string[2]) = { | |||
"monitorLinkFloat64", | |||
"inputLinkFloat64" | |||
} )) | |||
) | |||
field(value,float64) | field(value,float64) | ||
} | } | ||
record(CalcRecord) extends RecordCommon { | record(CalcRecord) extends RecordCommon { | ||
field(result,float64) { | field(result,float64) { | ||
| Line 161: | Line 189: | ||
field(unknownStateSeverity, menu(menuAlarmSevr)) | field(unknownStateSeverity, menu(menuAlarmSevr)) | ||
field(changeStateSeverity, menu(menuAlarmSevr)) | field(changeStateSeverity, menu(menuAlarmSevr)) | ||
field(inp, | field(inp, | ||
link(in,array(string[3]) = { | |||
"inputLinkOctet", | |||
"asynDigital", | |||
} )) | |||
) | |||
field(rawValue, array(octet[])) { | field(rawValue, array(octet[])) { | ||
design(no) | design(no) | ||
| Line 172: | Line 205: | ||
readonly(yes) | readonly(yes) | ||
} | } | ||
view(choice) { | view(choice) { | ||
property(value, value) { | property(value, value) { | ||
| Line 204: | Line 232: | ||
} | } | ||
field(reArm,bool) | field(reArm,bool) | ||
field( | field(io, | ||
link(inout,array(string[4]) = { | |||
"monitorLinkArrayOctet", | |||
"monitorLinkArrayBoolean", | |||
"monitorLinkArrayInt16", | |||
"monitorLinkArrayInt32", | |||
"monitorLinkArrayInt64", | |||
"monitorLinkArrayFloat32", | |||
"monitorLinkArrayFloat64", | |||
"monitorLinkArrayString", | |||
"inputLinkArrayOctet", | |||
"inputLinkArrayBoolean", | |||
"inputLinkArrayInt16", | |||
... all input and link types | |||
} )) | |||
) | |||
field(units,string) | field(units,string) | ||
field(displayLimit,struct(DisplayLimit)) | field(displayLimit,struct(DisplayLimit)) | ||
| Line 211: | Line 254: | ||
readonly(yes) | readonly(yes) | ||
} | } | ||
view(value) { | view(value) { | ||
property(value, value) { | property(value, value) { | ||
Revision as of 15:23, 27 September 2005
Example Record Types Sept 27 2005
Overview
This document present proposed V4 replacements for a few of the V3 record types.
aoRecord
aoRecord.dbd might be defined as follows:
include "dbCommon.dbd"
record(AoRecord) extends RecordCommon {
field(value, float64) {
asl(0)
}
field(outValue, float64) {
readonly(yes)
}
field(out,
link(out,array(string[3]) = {
"outputLinkInt64",
"outputLinkFloat64",
"asynInt32",
"asynFloat64"
} ))
)
field(outputRateOfChange, float64)
field(desiredOutputLink,
link(in,array(string[2]) = {
"monitorLinkFloat64",
"inputLinkFloat64"
} ))
)
field(closedLoop, bool)
field(outputIncremental, bool)
field(convert, menu(menuConvert)) {
special(yes)
}
field(linearConvert, struct(LinearConvert)) {
special(yes)
}
field(units, string)
field(displayLimit, struct(DisplayLimit))
field(controlLimit, struct(ControlLimit))
field(alarmLimit, struct(AlarmLimit))
field(alarmDeadband, float64)
field(rawValue, int64) {
design(no)
}
field(prevRawValue, int64) {
design(no)
readonly(yes)
}
field(readBackValue, int64) {
design(no)
readonly(yes)
}
field(init, bool) {
design(no)
readonly(yes)
}
field(simOutputLink,
link(out,array(string[2]) = {
"outputLinkInt64",
"outputLinkFloat64",
} ))
)
field(simModeLink,
link(in,array(string[2]) = {
"monitorLinkString",
"inputLinkString"
} ))
)
field(simMode, bool)
field(simSevr, menu(menuAlarmSevr))
field(invalidAction, menu(menuIvoa))
field(invalidValue, float64)
field(outValueModified, bool) {
design(no)
readonly(yes)
}
view(value) {
property(value, value) {
property(units, units)
property(timeStamp, time)
property(alarmSeverity, alarmSeverity)
property(alarmStatus, alarmStatus)
property(displayLimit, displayLimit)
property(controlLimit, controlLimit)
property(alarmLimit, alarmLimit)
}
}
view(output) {
property(value, outValue) {
property(units, units)
property(timeStamp, time)
property(alarmSeverity, alarmSeverity)
property(alarmStatus, alarmStatus)
property(displayLimit, displayLimit)
}
}
view(raw) {
property(value, rawValue) {
property(timeStamp, time)
}
}
view(readback) {
property(value, readBackValue) {
property(timeStamp, time)
}
}
}
calcRecord
calcRecord.dbd defines the following:
include "dbCommon.dbd"
struct(CalcInpLink) {
field(link,link(in))
link(in,array(string[2]) = {
"monitorLinkFloat64",
"inputLinkFloat64"
} ))
)
field(value,float64)
}
record(CalcRecord) extends RecordCommon {
field(result,float64) {
asl(0)
}
field(calc,string) {
special(yes)
}
field(input,array(struct(CalcInpLink)[]))
field(units,string)
field(displayLimit,struct(DisplayLimit))
field(alarmLimit,struct(AlarmLimit))
field(alarmDeadband,float64)
field(lastValueAlarmed,float64) {
design(no)
readonly(yes)
}
field(rpcl,private("char *"))
view(result) {
property(value, result) {
property(units, units)
property(timeStamp, time)
property(alarmSeverity, alarmSeverity)
property(alarmStatus, alarmStatus)
property(displayLimit, displayLimit)
property(alarmLimit, alarmLimit)
}
}
view(expression) {
property(value, calc)
}
}
mbbiRecord
mbbiRecord.dbd could be:
include "dbCommon.dbd"
struct(MbbiState) {
field(name, string)
field(value, array(octet[]))
field(severity, menu(menuAlarmSevr))
}
record(MbbiRecord) extends RecordCommon {
field(state, array(struct(MbbiState)[])) {
special(yes)
}
- NOTE: stateName needed because enum must refer to array of string
field(stateName,array(string[])) {
design(no) readonly(yes)
}
field(value, enum(stateName)) {
asl(0)
}
field(unknownStateSeverity, menu(menuAlarmSevr))
field(changeStateSeverity, menu(menuAlarmSevr))
field(inp,
link(in,array(string[3]) = {
"inputLinkOctet",
"asynDigital",
} ))
)
field(rawValue, array(octet[])) {
design(no)
readonly(yes)
}
field(hardwareShift, int16) {
readonly(yes)
}
field(hardwareMask, array(octet[]) {
readonly(yes)
}
view(choice) {
property(value, value) {
property(timeStamp, time)
property(alarmSeverity, alarmSeverity)
property(alarmStatus, alarmStatus)
}
}
view(raw) {
property(value, raw) {
property(timeStamp, time)
}
}
}
waveformRecord
waveformRecord.dbd defines the following:
include "dbCommon.dbd"
record(WaveformRecord) extends RecordCommon {
field(value, array([])) {
asl(0)
special(yes)
}
field(reArm,bool)
field(io,
link(inout,array(string[4]) = {
"monitorLinkArrayOctet",
"monitorLinkArrayBoolean",
"monitorLinkArrayInt16",
"monitorLinkArrayInt32",
"monitorLinkArrayInt64",
"monitorLinkArrayFloat32",
"monitorLinkArrayFloat64",
"monitorLinkArrayString",
"inputLinkArrayOctet",
"inputLinkArrayBoolean",
"inputLinkArrayInt16",
... all input and link types
} ))
)
field(units,string)
field(displayLimit,struct(DisplayLimit))
field(busy,bool) {
design(no)
readonly(yes)
}
view(value) {
property(value, value) {
property(units, units)
property(timeStamp, time)
property(alarmSeverity, alarmSeverity)
property(alarmStatus, alarmStatus)
property(displayLimit, displayLimit)
}
}
}