我在很長一段時間內以 5 秒的間隔提取 Historian 數據,最後得到一個包含許多行的數據表。 最初在此數據表中我有兩列(將此表稱為“2205 - 2209 PD3102”,我將其稱為 dtPDTag):
1. 日期/時間戳
2.數據值(針對Historian標籤)
在不同的數據表中(以下 JSL 語法中的 dt),我有生產的開始和結束時間,我有 PO 標識符和配方符號。 (所以四列:1。 開始日期/時間,2。 結束日期/時間,3。 採購訂單編號,4。 配方符號。)
在 dtPDTag 中,我添加了兩列 - PO 和 Symbol - 我想在其中添加 PO 編號和配方符號(基於日期/時間戳)。下面是我用來完成此任務的 JSL 代碼,但我認為這是管理此任務的一種非常低效的方法。(我的電腦似乎對加在它身上的需求反應不太好!)很高興聽到將來有更好/更有效的方法來處理這樣的任務。
Names Default To Here(1);
dt = Current Data Table();
nr = N Rows(dt); // show(nr);
lstPO = dt:PO << Get Values;
lstSymbol = dt:Symbol << Get Values;
lstStartTime = dt:StartTime << Get Values;
lstEndTime = dt:EndTime << Get Values; // show(lstPO,lstSymbol,lstStartTime,lstEndTime);
dtPDTag = data Table( "2205 - 2209 PD3102" );
nrPD = N Rows(dtPDTag); // show(nrPD);
For(j=1,j<=nr,j++,
_start = lstStartTime[j]; _end = lstEndTime[j]; // show(_start,_end);
_PO =lstPO[j]; _symbol = lstSymbol[j];
For(i=1,i<=nrPD,i++,
If( ( dtPDTag:DateTime[i] > lstStartTime[j] ) & ( dtPDTag:DateTime[i] < lstEndTime[j] ),
dtPDTag:PO[i] = lstPO[j];
dtPDTag:Symbol[i] = lstSymbol[j];
,
);
);
);