?? func.pas
字號:
a:=a*2;
end;
end;}
econv230p.MainForm.Caption := companyname+'----'+getfilename+' '
+timetostr((strtoint64(econfile.holdregisterarray[2].value)*65536+strtoint64(econfile.holdregisterarray[1].value))/MsecsPerDay);
displayholdregister(econfile, mainform.holdregistergrid);
displayprotect(econfile, mainform.protectgrid);
displaypower(econfile, mainform.powergrid);
end;
4:
begin
for i:=1 to (analysbuffer[3]div 2) do
begin
j := analysbuffer[4+(i-1)*2]*256 + analysbuffer[5+(i-1)*2];
if j<=32767 then inputregisterarray[beginaddress+i].value := inttostr(j)
else inputregisterarray[beginaddress+i].value := inttostr(-1 *( 65536-j ));
end;
displayinputregister(econfile, mainform.inputregistergrid);
if econfile.setxiangliangtotal>0 then
begin
displayxiangliang(econfile, mainform.xianglianggrid);
drawxiangliang;
end;
if econfile.setxiebototal>0 then displayxiebo(econfile, mainform.xiebogrid);
end;
24:
begin
{case analysbuffer[8] of
0: ActDot := '第1點';
1: ActDot := '第2點';
2: ActDot := '第3點';
3: ActDot := '第4點';
4: ActDot := '第5點';
5: ActDot := '第6點';
6: ActDot := '第7點';
7: ActDot := '第8點';
end;}
ActDot := '第'+inttostr(analysbuffer[8])+'點';
case (analysbuffer[9]*256 + analysbuffer[10]) of
0: ActType := '1->0';
1: ActType := '0->1';
16: ActType := '啟動電流保護動作預告';
17: ActType := '啟動電流保護動作';
18: ActType := '啟動電流保護撤消';
32: ActType := '超載保護動作預告';
33: ActType := '超載保護動作';
34: ActType := '超載保護撤消';
48: ActType := '欠壓保護動作預告';
49: ActType := '欠壓保護動作';
50: ActType := '欠壓保護撤消';
64: ActType := '過壓保護動作預告';
65: ActType := '過壓保護動作';
66: ActType := '過壓保護撤消';
80: ActType := '零序電流保護動作預告';
81: ActType := '零序電流保護動作';
82: ActType := '零序電流保護撤消';
96: ActType := '負序電流保護動作預告';
97: ActType := '負序電流保護動作';
98: ActType := '負序電流保護撤消';
112: ActType := '直流1保護動作預告';
113: ActType := '直流1保護動作';
114: ActType := '直流1保護撤消';
128: ActType := '直流2保護動作預告';
129: ActType := '直流2保護動作';
130: ActType := '直流2保護撤消';
144: ActType := '空載告警動作預告';
145: ActType := '空載告警動作';
146: ActType := '空載告警撤消';
160: ActType := '零序電壓保護動作預告';
161: ActType := '零序電壓保護動作';
162: ActType := '零序電壓保護撤消';
$B0: ActType := '直流1保護動作預告';
$B1: ActType := '直流1保護動作';
$B2: ActType := '直流1保護撤消';
$C0: ActType := '直流2保護動作預告';
$C1: ActType := '直流2保護動作';
$C2: ActType := '直流2保護撤消';
$D0: ActType := '直流3保護動作預告';
$D1: ActType := '直流3保護動作';
$D2: ActType := '直流3保護撤消';
$E0: ActType := '直流4保護動作預告';
$E1: ActType := '直流4保護動作';
$E2: ActType := '直流4保護撤消';
$F0: ActType := '速斷1段保護動作預告';
$F1: ActType := '速斷1段保護動作';
$F2: ActType := '速斷1段保護撤消';
$F3: ActType := '速斷2段保護動作預告';
$F4: ActType := '速斷2段保護動作';
$F5: ActType := '速斷2段保護撤消';
$F6: ActType := '速斷3段保護動作預告';
$F7: ActType := '速斷3段保護動作';
$F8: ActType := '速斷3段保護撤消';
$F9: ActType := '反時限速斷保護動作預告';
$FA: ActType := '反時限速斷保護動作';
$FB: ActType := '反時限速斷保護撤消';
$FC: ActType := '溫度保護動作預告';
$FD: ActType := '溫度保護動作';
$FE: ActType := '溫度保護撤消';
end;
// TimeValue := analysbuffer[11]*256/MsecsPerDay*65536 + analysbuffer[12]*65536/MsecsPerDay
// + analysbuffer[13]*256/MsecsPerDay + analysbuffer[14]/MsecsPerDay;
TimeValue := analysbuffer[11]*256*65536 + analysbuffer[12]*65536
+ analysbuffer[13]*256 + analysbuffer[14];
TimeValue := TimeValue/MsecsPerDay;
DecodeTime(TimeValue, Hour, Minute, Second, MSecond);
//f := ActDot + ' ' + ActType + ' ' + inttostr(Hour) + ':'
// + inttostr(Minute) + ':' + inttostr(Second) + '.' + inttostr(MSecond);
f := ActDot + ' ' + ActType + ' ' + inttostr(Hour) + ':'
+ inttostr(Minute) + ':' + format( '%2.3f', [Second*1.0+MSecond/1000.0]);
mainform.eventmemo.Lines.Insert(0, f);//插入SOE事件
if mainform.eventmemo.Lines.count>20 then mainform.eventmemo.Lines.clear;
end
else
//for i:=1 to econfile.analysbuffer[3]+3 do econfile.analysbuffer[i] :=0
for j:=1 to 1024 do econfile.analysbuffer[j] :=0
end;//case
for j:=1 to 1024 do econfile.analysbuffer[j] := 0;
end;//with
end;
procedure asclltoapp(var tempstring: string; var econfile: Teconfile);
var i: integer;
begin
delete(TempString, 1, 1);
delete(TempString, length(TempString)-1, 2);
for I:=1 to length(TempString)div 2 do
begin
econfile.analysbuffer[i] := strtohex(copy(TempString, i*2-1, 2), 2);
end;
TempString := '';
end;
function framecheck:integer;
var i, j: word;
begin
with econfile do
begin
if comm.mode='RTU' then
begin
case revbuff[1] of
$81:begin
framecheck := 0;
exit;
end;
5,6:begin
I := crc(revbuff[0], 6);
j := revbuff[6]*256 + revbuff[7];
if i<>j then framecheck := -1
else framecheck := 0;
end;
24:begin
I := crc(revbuff[0], 14);
j := revbuff[14]*256 + revbuff[15];
if i<>j then framecheck := -1
else framecheck := 0;
end;
1, 2, 3, 4:
begin
I := crc(revbuff[0], revbuff[2]+3);
j := revbuff[revbuff[2]+3]*256 + revbuff[revbuff[2]+4];
if i<>j then framecheck := -1
else framecheck := 0;
end;
else
framecheck := 0;
end;
end
else
begin
framecheck := 0;
end;
end;
end;
function Lrc(const Temp: String): String;
var
a, b, c: Cardinal;
t: String;
begin
b := Length(Temp) div 2;
c := 0;
for a:=0 To b-1 do
begin
t := copy(Temp, (2*a + 1), 2);
c := c + StrTohex1(t, 2);
end;
t := IntTohex((not c) + 1, 2);
b := Length(t) - 1;
Lrc := copy(t, b, 2);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -