当前位置:网站首页>EPICS記錄參考3 -- 所有記錄都有的字段

EPICS記錄參考3 -- 所有記錄都有的字段

2022-06-24 22:54:00 yuyuyuliang00

這部分包含了一段對所有記錄類型都有的字段的描述。這些字段在dbCommon.dbd中定義。

操作顯示參數

NAME字段包含了記錄名稱,它在一個EPICS通道訪問名稱空間中必須唯一。由程序開發者提供這個名稱並且是區分一個特定記錄的方式。名稱最長60個字符並且只使用這些有限字符:

 a-z A-Z 0-9 _ - : [ ] < > ;

DESC字段可以被設成對這個記錄目的的有意義描述。最長是40個字符。

FieldSummaryTypeDCTDefaultReadWriteCA PP
NAME記錄名稱STRING [61]NoYesNoNo
DESC描述STRING [41]YesYesYesNo

掃描字段

這些字段包含與一個記錄何時以及如何運行相關的信息。一些記錄有也有影響它們如何運行的唯一字段。在這部分比特每個記錄列出這些字段並解釋。

SCAN字段為周期記錄指定掃描周期或者為非周期掃描記錄指定掃描類型。在menuScan.dbd中能够找到SCAN字段的默認集。

由這個菜單提供的選項是:

  • passive對應被其它記錄或者通道訪問觸發的記錄
  • Event對應事件驅動掃描
  • I/O Intr對應中斷驅動掃描
  • 一個周期掃描間隔集

通過本地複制menuScan.dbd並且根據需要添加更多選項,能够為各自的IOCs定義更多的周期掃描率。通常應該在其它掃描類型之後按順序定義周期掃描率。最長周期首先出現。能够用一個second/seconds, minute/minutes, hour/hours或Hertz/Hz的單比特字符串指定掃描周期。如果在選項字符串中包含單比特,使用秒。例如,這些速率都有效:

 1 hour
 0.5 hours
 15 minutes
 3 seconds
 1 second
 2 Hertz

PINI字段指定在初始化時記錄運行。如果在數據庫配置中設置它為YES,(在啟動正常的掃描任務前)在IOC初始化時運行這個記錄一次。

PHAS字段對在一個特定SCAN組中排序記錄。對於被動記錄著沒有意義。指定的phase的所有記錄在有更高phase數值的記錄前運行。使用鏈接的被動記錄實現運行順序而不是一個phase數值是更好的習慣。

EVNT字段指定一個事件號。如果SCAN字段設置為Event,使用事件號。當為EVNT進行一個post_event調用時,將運行掃描類型Event並且相同EVNT值得所有記錄。對post_event得調用:post_event(short event_number)。

PRIO字段為運行SCAN=I/O Event的集以及异步記錄完成任務指定調度優先級。

DISV字段指定一個"disable value"。當這個字段的值等於DISA字段的值。記錄運行不能開始,意味著這個記錄被禁用了。注意:通過數據庫或者通道訪問puts能够更改一個記錄那個字段值,即使這個記錄被禁用。

DISA字段包含與DISV比較的值,决定這個記錄是否被禁用。在IOC嘗試運行這個記錄前,從SDIS鏈接為DISA字段獲取一個值。如果SDIS未被設置,可能通過某些其它方法設置DISA來啟動或者禁用這個記錄。

DISS字段定義這個記錄的"disable severity"。如果這個字段不是NO_ALARM並且這個記錄被禁用,這個記錄將被置入狀態為DISABLE_ALARM和這個嚴重性的警報。

PROC字段:一個記錄的這個字段被寫入,運行這個記錄。

LSET字段包含這個記錄所屬的鎖集。用通過輸入,輸出或者轉發數據庫鏈接的任何方式鏈接一起的所有記錄屬於一個相同的鎖集。在IOC初始化時確定了鎖集,並且在添加、移除或者更改數據庫鏈接時被更新。

LCNT字段計算在連續掃描過程中dbProcess發現這個記錄活躍的次數,即使:PACT為TRUE。如果dbProcess發現這個記錄活躍MAX_LOCK次(當前設成10),它產生一個SCAN_ALARM。

PACT字段:當記錄活躍時(運行),這個字段為真。比特於异步記錄,從記錄運行啟動時到异步完成發生,PACT能够是真。只要PACT為真,dbProcess將不調用這個記錄運行例程。有關PACT的用法見程序開發指導。

FLNK字段是一個指向另一個記錄(“目標”記錄)的鏈接。只要提供的目標記錄的SCAN字段被設成Passive,運行一個設置了FLNK字段的記錄將在第一個記錄運行末尾(但在PACT被清除前)後觸發目標記錄運行。如果FLNK字段是一個通道訪問鏈接,它必須指向目標記錄的PROC字段。

SPVT字段為了被掃描系統內部使用。

FieldSummaryTypeDCTDefaultReadWriteCA PP
SCAN掃描機制MENUYesYesYesNo
PINI在iocInit時運行MENU YesYesYesNo
PHAS掃描 PhaseSHORTYesYesYesNo
EVNT事件名STRING [40]YesYesYesNo
PRIO調度優先級MENU YesYesYesNo
DISVDisable值SHORTYes1YesYesNo
DISADisableSHORTNoYesYesNo
SDISScanning DisableINLINKYesYesYesNo
PROC强制運行UCHARNoYesYesYes
DISSDisable Alarm SevrtyMENU YesYesYesNo
LCNT鎖計數UCHARNoYesNoNo
PACT記錄活躍UCHARNoYesNoNo
FLNK轉發運行鏈接FWDLINKYesYesYesNo
SPVT掃描私有NOACCESSNoNoNoNo

警報字段

STAT字段包含當前警報狀態。

SEVR字段包含當前警報嚴重性。

AMSG字符串字段可能包含有關這個警報的更詳細信息。

STAT, SEVR和AMSG字段保存如數據庫之外所見的警報信息。NSTA,NSEV和NAMSG字段在記錄運行期間被數據庫訪問,記錄支持和設備支持例程用於設置警報狀態和嚴重性值和消息文本。當任何軟件組件發現一個警報狀况,它調用這些例程之一注册這個警報:

 recGblSetSevr(precord, new_status, new_severity);
 recGblSetSevrMsg(precord, new_status, new_severity, "Message", ...);

這些例程檢查當前警報嚴重性並且如果合適更新NSTA,NSEV和NAMSG,因此在記錄運行期間到目前,它們總是與最高嚴重性警報關聯。文件alarm.h定義了可用的警報狀態和嚴重性值。在記錄運行即將結束之際,這些字段被複制到了STAT,SEVR和AMSG字段並且警報監控被觸發。

ACKS字段包含最高未確認的警報嚴重性。

ACKT字段指定確認瞬態警報是否必要。

UDF字段錶明這個記錄的值是否是未定義的。這一般由設備支持中故障引起,實際:這個記錄從未被運行,或者VAL字段當前包含一個NaN(非數值)或者Inf(無限)值。UDF默認TRUE,但能够在數據庫文件中被設置。寫到VAL字段的記錄和設備支持例程一般負責設置和清除UDF。

FieldSummaryTypeDCTDefaultReadWriteCA PP
STAT警報狀態MENU (menuAlarmStat)NoUDFYesNoNo
SEVR警報嚴重性MENU (menuAlarmSver)NoYesNoNo
AMSG警報消息STRING [40]NoYesNoNo
NSTA新警報狀態MENU (menuAlarmStat)NoYesNoNo
NSEV新警報嚴重性MENU (menuAlarmSver)NoYesNoNo
NAMSG新警報消息STRING [40]NoYesNoNo
ACKSAlarm Ack SeverityMENU (menuAlarmSver)NoYesNoNo
ACKTAlarm Ack TransientMENU(menuYesNo)YesYESYesNoNo
UDF未定義UCHARYes1YesYesYes

設備字段

RSET字段包含記錄支持入口錶的地址。

DSET字段設備支持入口錶的地址。這個字段的值是在IOC初始化時被確定。記錄支持例程使用這個字段來尋找它們的設備支持例程。

DPVT字段用於設備支持模塊私用。

FieldSummaryTypeDCTDefaultReadWriteCA PP
RSETRSET的地址NOACCESSNoNoNoNo
DSETDSET地址NOACCESSNoNoNoNo
DPVTDevice私有NOACCESSNoNoNoNo

調試字段

TPRO字段可以用於跟踪記錄運行。當這個字段是非零並且記錄被運行,將為這個記錄以及在相同鎖集中由來自這個記錄的數據庫鏈接觸發的任何其它記錄打印跟踪消息。跟踪消息包含進行運行的線程名,以及被運行的記錄名。

BKPT字段錶明在這個記錄中有一個斷點設置。這支持在記錄運行中設置一個調試斷點。使用這個能够支持STEP通過數據庫運行。

FieldSummaryTypeDCTDefaultReadWriteCA PP
TPROT追踪運行UCHARNoYesYesNo
BKPT斷點NOACCESSNoNoNoNo

其它字段

ASG字符串字段設置用於這個記錄的訪問安全組的名稱。如果留空,這個記錄被放在組DEFAULT。

ASP字段為用於訪問安全系統私有。

DISP字段控制來自IOC外部的puts是否完全被允許修改這個記錄的字段。如果字段設置為TRUE,除了對字段DISP自身的puts外,忽略直接對這個記錄的所有puts。

DTYP字段為記錄指定設備類型。大多數記錄類型有它們自己的設備類型集合,再IOC的數據庫定義文件中指定它們。如果一個記錄類型不調用任何設備支持例程,不使用DTYP和DSET字段。

MLOK字段包含一個互斥鎖,當對應這個記錄的監控列錶被訪問時,它被在dbEvent.c中的監控例程上鎖。

MLIS字段保存一張連接到這個記錄的客戶監控的鏈錶。每個記錄支持模塊負責為由於記錄運行發生變化的任何字段觸發監控。

PPN字段包含一個putNotify callback的地址。

PPNR字段為PutNotify包含下一個記錄。

PUTF字段如果dbPutField引起當前記錄運行,其被設置成True。

RDES字段包含dbRecordType的地址。

RPRO字段指定當前運行結束時這個記錄再次運行。

TIME字段保存上次運行這個記錄的時間戳。

UTAG字段用於保存一個站點特定的64比特用戶標簽只,其與記錄的時間戳有關。

TSE字段指定用來獲取時間戳的機制。'0':像前面一樣調用get time。‘-1’:調用時間戳驅動斌並且使用最佳可用源。‘-2’:設備支持來自硬件的時間戳和可選的用戶標簽。再1-255之間的指請求generalTime事件的上次發生時間。

TSEL字段包含一個用於獲取時間戳的輸入鏈接。如果這個鏈接指向一個記錄的TIME字段,則那個記錄的時間戳和用戶標簽被直接複制到這個記錄(通道訪問鏈接只能複制這個時間戳)。如果鏈接指向任何其它字段,那個字段的值被讀取並且存儲到TSE字段,其接著用於獲取一個時間戳。

FieldSummaryTypeDCTDefaultReadWriteCA PP
ASG訪安全組問STRING [29]YesYesYesNo
ASP訪問安全PvtNOACCESSNoNoNoNo
DISP禁用putFieldUCHARNoYesYesNo
DTYP設備類型DEVICEYesYesYesNo
MLOK監控鎖NOACCESSNoNoNoNo
MLIS監控列錶NOACCESSNoNoNoNo
PPNpprocessNotifyNOACCESSNoNoNoNo
PPNRpprocessNotifyRecordNOACCESSNoNoNoNo
PUTFdbPutField過程UCHARNoYesNoNo
RDESdbRecordType的地址NOACCESSNoNoNoNo
RPROReprocessUCHARNoYesNoNo
TIME時間NOACCESSNoNoNoNo
UTAG事件標簽UINT64NoYesNoNo
TSE時間戳事件SHORTYesYesYesNo
TSEL時間戳鏈接INLINKYesYesYesNo
原网站

版权声明
本文为[yuyuyuliang00]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/175/202206241707157765.html