Modbus CRC Program
Modbus CRC Program
SourceForge.net (http://sourceforge.net/) .
Turbopower (http://www.turbopower.com/) .
Form
Label_TX: TLabel;
Apdcomport
Label_RX: TLabel;
Edit_RX: TEdit;
nByte:word):Word;
Count: Word);
interface private
Controls, Forms,
end;
type
Timer1: TTimer;
1,$C601,$06C0,$0780,$C741,$0500,$C5C1,$C481,$0440,$ .
A00,$CAC1,$CB81,$0B40,$C901,$09C0,$0880,$C841,$D8 begin
0,$DEC1,$DF81,$1F40,$DD01,$1DC0,$1C80,$DC41,$1400, ';
$D4C1,$D581,$1540,$D701,$17C0,$1680,$D641,$D201,$1 Label_TX.Font.Color:=clyellow;
$3180,$F141,$3300,$F3C1,$F281,$3240,$3600,$F6C1,$F78 Edit_TX.Color:=clyellow;
1,$3740,$F501,$35C0,$3480,$F441,$3C00,$FCC1,$FD81,$ Edit_TX.Font.Color:=clblack;
B41,$3900,$F9C1,$F881,$3840,$2800,$E8C1,$E981,$2940, Label_RX.Font.Color:=clblue;
2D00,$EDC1,$EC81,$2C40,$E401,$24C0,$2580,$E541,$27 Edit_RX.Color:=clblue;
00,$E7C1,$E681,$2640,$2200,$E2C1,$E381,$2340,$E101,$ Edit_RX.Font.Color:=clwhite;
6E80,$AE41,$AA01,$6AC0,$6B80,$AB41,$6900,$A9C1,$
A881,$6840,$7800,$B8C1,$B981,$7940,$BB01,$7BC0,$7A Apdcomport1.ComNumber:=1;//
80,$BA41,$BE01,$7EC0,$7F80,$BF41,$7D00,$BDC1,$BC
81,$7C40,$B401,$74C0,$7580,$B541,$7700,$B7C1,$B681, Apdcomport1.Baud:=9600;//
$7640,$7200,$B2C1,$B381,$7340,$B101,$71C0,$7080,$B0 end;
41,$5000,$90C1,$9181,$5140,$9301,$53C0,$5280,$9241,$9
4980,$8941,$4B00,$8BC1,$8A81,$4A40,$4E00,$8EC1,$8F var
81,$4F40,$8D01,$4DC0,$4C80,$8C41,$4400,$84C1,$8581, CRCValue:Word;
$4540,$8701,$47C0,$4680,$8641,$8201,$42C0,$4380,$834 i:integer;
1,$4100,$81C1,$8081,$4040); begin
CRCvalue:=$FFFF;
Result:=CRCvalue;
end; begin
Edit_RX.Text:='';
var begin
i,j:integer; j:=i*2-1;
CRC_Data_Len:integer;//CRC TX_Data_Array[i]:=byte(strtoint('$'+Edit_TX.Text[j]+E
dit_TX.Text[j+1]));
Apdcomport1.PutBlock(TX_Data_Array,TX_Data_Size);
begin
CRC_Data_Len:=round(length(Edit_TX.Text)/2); //
j:=i*2-1; var
CRC_Data_Array[i]:=byte(strtoint('$'+Edit_TX.Text[j]+ i:integer;
Edit_TX.Text[j+1])); RX_Char:char;//
Result_CRC:=Make_CRCValue(CRC_Data_Array,CRC_Da begin
Edit_TX.Text:=Edit_TX.Text+inttohex(Lo(Result_CRC),2) begin
+inttohex(Hi(Result_CRC),2); RX_Char:=Apdcomport1.GetChar;
end; RX_Array[i]:=inttohex(byte(RX_Char),2);
Edit_RX.Text:=Edit_RX.Text+RX_Array[i];
// end;
var
i,j:integer; end.
TX_Data_Size:integer;//
TX_Data_Array:array[1..32]of byte;//
.
OTIS-LG Servo Drive ( FDA6000 series, ID = 1 ) ‘ ’(Controller Type, P2-01, addr:
1. DATA Frame .
Address Function Start Address No. of Resister CRC
01 03 00 C8 00 01
2. .
3. .
4. ‘CRC ’ CRC .
5. ‘ ’ .