儀表採集控制元件
# Smart 控制元件使用(儀表採集)
儀表採集控制元件是用於規模化大批次數據採集時使用的專業控制元件,可同時採集不同型別的數據資訊。
# 1. TMeter元件
TMeter元件是基於TComPort元件擴充而來,提供了程式內元件的COM連線介面,具有TComPort所有功能的同時還實現儀表數據採集之功能。
# 1.1. 屬性
- TMeter元件主要屬性
屬性 | 功能說明 |
---|---|
Active | 是否啟用該元件 |
BaudRate | 獲取或設定序列波特率 |
BufferSizes | 快取區設定 |
Characters | 設定控制字元 |
CustBaudRate | 獲取或設定自定義序列波特率 |
DataBits | 獲取或設定每個位元組的標準數據位長度 |
DeviceName | 元件對應的連線埠名稱 |
Parity | 指定Meter對象的奇偶校驗位 |
PriorityClass | 指示系統將與程序關聯的優先順序,此值與程序的每個執行緒的優先順序值一起來確定每個執行緒的基本優先順序別 |
StopBits | 指定在Meter對像上使用的停止位的數目 |
ThreadPriority | 指定執行緒的優先順序別 |
MeterList | 儀表列表 |
Interval | 採集間隔時間 |
Enabled | 是否啟動採集 |
# 1.1.1. DataBits 屬性
獲取或設定每個位元組的標準數據位長度。預設為dbDefault,其餘選項包括db4~db8。
# 1.1.2. FlowControl 屬性
設定通訊時的數據流控制選項。包含以下屬性選項設定。
- DTR:在序列通訊過程中啟用數據終端就緒 (DTR) 訊號。
- RTS:在序列通訊中啟用請求發送 (RTS) 訊號。
- XOffLimit、XOnLimit、XOnXOff為流控制協議及其限制設定,只要通訊雙方根據通訊狀況使用相同的配置協議即可。
# 1.1.3. Parity 屬性
指定Meter對象的奇偶校驗位。包含如下選項。
- paDefault:預設選項。
- paEven:設定奇偶校驗位,使位數等於偶數。
- paMark:將奇偶校驗位保留為 1。
- paNone:不發生奇偶校驗檢查。
- paOdd:設定奇偶校驗位,使位數等於奇數。
- paSpace:將奇偶校驗位保留為 0。
# 1.1.4. PriorityClass 屬性
指示系統將與程序關聯的優先順序。 此值與程序的每個執行緒的優先順序值一起來確定每個執行緒的基本優先順序別。包含如下選項。
- pcDefault:預設選項。
- pcHigh:指定程序執行必須立即執行的時間關鍵任務,不管操作系統的負荷如何,使用者呼叫該對話方塊后均必須迅速響應。 該程序的執行緒優先於普通或空閑優先順序類程序的執行緒。為程序的優先順序類指定High 這一個優先順序時需謹慎,因為高優先順序類應用程式幾乎可以使用所有可用的處理器時間。
- pcIdle:指定此程序的執行緒只能在系統空閑時運行,如螢幕保護程式。 更高優先順序類中運行的任何程序的執行緒都優先於此程序的執行緒。 此優先順序類由子程序繼承。
- pcNormal:指定程序沒有特殊的安排需求。
- pcRealTime:指定程序擁有可能的最高優先順序。具有 RealTime 優先順序的程序的執行緒搶佔所有其他程序的執行緒,包括執行重要任務的操作系統程序。 因此,執行時間並不太短的 RealTime 優先順序程序可能導致磁碟快取記憶體不重新整理或滑鼠無響應。
# 1.1.5. StopBits 屬性
指定在Meter對像上使用的停止位的數目。有如下選項。
- sbDefault:預設選項。
- sb1:使用一個停止位。
- sb1_5:使用1.5個停止位。
- sb2:使用兩個停止位。
# 1.1.6. MeterList 屬性
Meter數據採集列表,有如下選項。
# 1.1.6.1. 屬性
- TMeter元件主要屬性
屬性 | 功能說明 |
---|---|
Address | 儀表地址 |
Caption | 儀表名稱 |
Code | 儀表編號 |
Data | 發送命令(電錶使用) |
Error | 錯誤資訊 |
Interval | 休眠時間(毫秒) |
ItemIndex | 儀表索引 |
LastSaveTime | 採集數據最後儲存時間 |
LastTime | 最近採集時間 |
Log | 日誌(發送和返回的原始數據) |
MeterType | 指定儀表型別 |
Rate | 儀表係數 |
Value1 | 採集數據1 |
Value2 | 採集數據2 |
Value3 | 採集數據3 |
Value4 | 採集數據4 |
Value5 | 採集數據5 |
# 1.1.6.2. Data屬性
指定儀表採集時的一些特殊命令,目前只有電錶會用到,如指定採集尖峰谷平的數據。
- 正向總功:00010000
- 組合尖峰谷平:0000FF00
# 1.1.6.3. MeterType屬性
指定儀表型別,目前支援如下幾種型別。
- LDZ_5J:金田水錶
- LDYB_3000:英博水錶
- LDM:恢宏水錶
- DLT645_2007:電錶 DLT645_2007
- FCM_Single:天信FCM體積修正儀 浮點單精度協議
- FCM_V1_3:天信FCM體積修正儀 天信V1.3協議
- EVC300:蒼南儀表 EVC3000體積修正儀
- PROH_6000L:杭州普恒蒸汽表
- HS96:杭州成套節流裝置蒸汽表
針對不同儀表型別肯協議,Value1,Value2,Value3,Value4,Value5 值都有不同的含義。
LDZ_5J:金田水錶 Value1=累積流量,Value2=瞬時流量,Value3=未使用,Value4=未使用,Value5=未使用
LDYB_3000:英博水錶 Value1=累積流量,Value2=瞬時流量,Value3=壓力,Value4=流速,Value5=未使用
LDM:恢宏水錶 Value1=累積流量,Value2=瞬時流量,Value3=未使用,Value4=未使用,Value5=未使用
DLT645_2007:電錶 DLT645_2007 Value1=總功,Value2=尖電,Value3=峰電,Value4=平電,Value5=谷電
FCM_Single:天信FCM體積修正儀 浮點單精度協議 Value1=標準總量,Value2=標況體積流量,Value3=工況體積流量,Value4=溫度,Value5=壓力
FCM_V1_3:天信FCM體積修正儀 天信V1.3協議 Value1=標準總量,Value2=標況體積流量,Value3=工況體積流量,Value4=溫度,Value5=壓力
EVC300:蒼南儀表 EVC3000體積修正儀 Value1=標準總量,Value2=標況體積流量,Value3=工況體積流量,Value4=溫度,Value5=壓力
PROH_6000L:杭州普恒蒸汽表 Value1=累積流量,Value2=瞬時流量,Value3=壓力,Value4=壓差,Value5=溫度
HS96:杭州成套節流裝置蒸汽表 Value1=累積流量,Value2=瞬時流量,Value3=壓力,Value4=壓差,Value5=溫度
# 1.1.7. Interval 屬性
指定在Meter數據採集時輪詢的頻率,單位毫秒(ms)。
//1秒輪詢
FThis.Meter1.Interval := 1000;
2
# 1.1.8. Enabled 屬性
指定是否啟動Meter的數據採集。
//啟動數據採集
FThis.Meter1.Enabled := true;
2
# 1.2. 事件
- TMeter主要事件
事件 | 何時觸發 |
---|---|
AfterClose | 在埠關閉后觸發該事件 |
AfterOpen | 在埠打開后觸發該事件 |
BeforeClose | 在埠關閉前觸發該事件 |
BeforeOpen | 在埠打開前觸發該事件 |
ReceiveData | 數據採集后觸觸發該事件 |
# 1.2.1. ReceiveData 事件
TReceiveItemDataEvent = procedure(AItem: TMeterItem) of object;
指示儀表數據採集時,將採集到的數據通過該事件上回調數據。
- 示例
procedure TMyHandler.Meter1ReceiveData;
var
lvitem:Tlistitem; //此處一定要預定義臨時記錄儲存變數.
begin
if FThis.lvLog.Items.Count > 27 then
FThis.lvLog.Items.Clear;
lvitem:=FThis.lvLog.Items.add;
//FThis.lvLog.Items.BeginUpdate;
lvitem.Caption:=AItem.Code;
lvitem.SubItems.Add(AItem.Caption);
lvitem.SubItems.Add(AItem.Address);
lvitem.SubItems.Add(AItem.Value1);
lvitem.SubItems.Add(FormatDateTime('c',now));
end;
2
3
4
5
6
7
8
9
10
11
12
13
14