📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
GroupBox1: TGroupBox;
Button6: TButton;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
GroupBox2: TGroupBox;
Button7: TButton;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
GroupBox3: TGroupBox;
Button8: TButton;
Button9: TButton;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Edit8: TEdit;
GroupBox4: TGroupBox;
Button10: TButton;
Label9: TLabel;
Edit9: TEdit;
Label10: TLabel;
Edit10: TEdit;
GroupBox5: TGroupBox;
Label11: TLabel;
Label12: TLabel;
Button11: TButton;
Edit11: TEdit;
Edit12: TEdit;
Label13: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Edit11Change(Sender: TObject);
procedure Edit12Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
DLL_API='S7_200_PPI.dll';
var
Form1: TForm1;
rxdataBytes: array[0..1024] of byte;
rxdataWords: array[0..1024] of word;
Function OpenCom(ComNo: integer): integer;stdcall;external DLL_API;
Function CloseCom(): bool;stdcall;external DLL_API;
Function SetBaudRate(BaudRate: integer): integer;stdcall;external DLL_API;
Function bitsetV(PLCaddr: integer; Vaddr: integer; bitNo: integer): integer;stdcall;external DLL_API;
Function bitResetV(PLCaddr: integer; Vaddr: integer; bitNo: integer): integer;stdcall;external DLL_API;
Function bit(AByte: byte; bitNo: integer):bool;stdcall;external DLL_API;
Function readVB(PLCaddr: integer; Vaddr: integer; length: integer; var buff): integer;stdcall;external DLL_API;
Function readVW(PLCaddr: integer; Vaddr: integer; length: integer; var buff): integer;stdcall;external DLL_API;
Function writeVB(PLCaddr: integer; Vaddr: integer; value: integer): integer;stdcall;external DLL_API;
Function writeVW(PLCaddr: integer; Vaddr: integer; value: integer): integer;stdcall;external DLL_API;
Function PLCRUN(PLCaddr: integer): integer;stdcall;external DLL_API;
Function PLCSTOP(PLCaddr: integer): integer;stdcall;external DLL_API;
procedure setReadDelay(ADelayTime: integer);stdcall;external DLL_API;
procedure setOKDelay(ADelayTime: integer);stdcall;external DLL_API;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if(OpenCom(1) > 0) then Memo1.Text := '打开串口'
else memo1.Text := 'error';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if(CloseCom()) then Memo1.Text := '关闭'
else memo1.Text := 'error';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1Click(self);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Button2Click(self);
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if(bitsetV(2,strtoint(edit5.Text),strtoint(edit6.Text)) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if(bitResetV(2,strtoint(edit5.Text),strtoint(edit6.Text)) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if(PLCRUN(2) > 0) then memo1.Text := 'RUN'
else memo1.Text := 'error';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if(PLCSTOP(2) > 0) then memo1.Text := 'STOP'
else memo1.Text := 'error';
end;
procedure TForm1.Button5Click(Sender: TObject);
var
i: integer;
tmp: string;
begin
if(readVB(2,strtoint(edit1.Text),strtoint(edit2.Text),rxdataBytes) > 0) then
begin
for i:=0 to strtoint(edit2.Text) -1 do
tmp := tmp + inttostr(rxdataBytes[i]) + ',';
memo1.Text := tmp;
end
else memo1.Text := 'error';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if(writeVB(2,strtoint(edit3.Text),strtoint(edit4.Text)) > 0) then memo1.text := 'ok'
else memo1.text := 'error';
end;
procedure TForm1.Button9Click(Sender: TObject);
var
i: integer;
tmp: string;
begin
//for i := 0 to 1000 do rxdataWord[i] := 0;
if(readVW(2,strtoint(edit7.Text),strtoint(edit8.Text),rxdataWords) > 0) then
begin
for i := 0 to strtoint(edit8.Text) - 1 do
tmp := tmp + inttostr(rxdataWords[i]) + ',';
memo1.Text := tmp;
end
else memo1.Text := 'error';
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
if(writeVW(2,strtoint(edit9.Text),strtoint(edit10.Text)) > 0) then memo1.Text := 'ok'
else memo1.Text := 'error';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if(bit(strtoint(edit11.Text),strtoint(edit12.Text))) then application.MessageBox('1','')
else application.MessageBox('0','');
end;
procedure TForm1.Edit11Change(Sender: TObject);
begin
if(strtoint(edit11.Text)>255) then edit11.Text := '0';
end;
procedure TForm1.Edit12Change(Sender: TObject);
begin
if(strtoint(edit12.Text)>7) then edit12.Text := '0';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -