unit Unit1;Interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ModbusM;type TForm1 = class(TForm) ModbusM1: TModbusM; Button1: TButton; Memo1: TMemo; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ModbusM1ResponseReady(Sender: TObject); procedure ModbusM1Error(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}/*Primeramente, en el evento OnCreate de la forma de la aplicación, damos valor apropiado a aquellas propiedades del componente MODBUS que se refieren a parámetros de la comunicación y se ejecuta el método Connect para conectar el componente con el puerto serie especificado.*/ procedure TForm1.FormCreate(Sender: TObject); begin ModbusM1.ComPort:=pnCOM1; ModbusM1.ComPortSpeed:=br9600; ModbusM1.ComPortDataBits:=db8BITS; ModbusM1.ComPortStopBits:=sb1BITS; ModbusM1.ComPortParity:=ptNONE; ModbusM1.ComPortHwHandshaking:=hhNONE; ModbusM1.Connect; end;/*Se programa para el evento OnClick del Botón1 que, si el componente está correctamente conectado en algún puerto serie y no está ocupado en otra operación con el esclavo, se ejecute el método Query para pedir una operación con el esclavo según lo especificado por los valores de las propiedades del componente modificadas en este momento*/ procedure TForm1.Button1Click(Sender: TObject); begin if (ModbusM1.Connected and not(ModbusM1.Busy)) then begin ModbusM1.SlaveId:=1; ModbusM1.FunctionCode:=3; ModbusM1.Offset:=0; ModbusM1.Quantity:=1; ModbusM1.RegisterDim:=2; ModbusM1.Timeout:=1000; ModbusM1.WriteValues[0]:=0; ModbusM1.Query; end; end;/*Se programa que cuando ocurra el evento OnResponseReady del componente, significando que ya se ha recibido respuesta del esclavo, se edita en el Memo1 el dato proveniente del esclavo*/ procedure TForm1.ModbusM1ResponseReady(Sender: TObject); var i: Integer; begin Memo1.Lines.Clear; i:=0; repeat Memo1.Lines.Add(InttoStr(round(ModbusM1.ReadValues[i]*256+ModbusM1.ReadValues[i+1]))); inc(i,2); until i=high(ModbusM1.ReadValues)+1; end;/*Por último se programa que si ocurre algún error y se genera el evento OnError del componente, se edita en el Edit1 el código del error para que el usuario conozca qué ha sucedido.*/ procedure TForm1.ModbusM1Error(Sender: TObject); begin Edit1.text:='error: '+inttostr(ModbusM1.Error); end;end.
unit Unit1;Interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ModbusM;type TForm1 = class(TForm) ModbusM1: TModbusM; Button1: TButton; Memo1: TMemo; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ModbusM1ResponseReady(Sender: TObject); procedure ModbusM1Error(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}/*Primeramente, en el evento OnCreate de la forma de la aplicación, damos valor apropiado a aquellas propiedades del componente MODBUS que se refieren a parámetros de la comunicación y se ejecuta el método Connect para conectar el componente con el puerto serie especificado.*/ procedure TForm1.FormCreate(Sender: TObject); begin ModbusM1.ComPort:=pnCOM1; ModbusM1.ComPortSpeed:=br9600; ModbusM1.ComPortDataBits:=db8BITS; ModbusM1.ComPortStopBits:=sb1BITS; ModbusM1.ComPortParity:=ptNONE; ModbusM1.ComPortHwHandshaking:=hhNONE; ModbusM1.Connect; end;/*Se programa para el evento OnClick del Botón1 que, si el componente está correctamente conectado en algún puerto serie y no está ocupado en otra operación con el esclavo, se ejecute el método Query para pedir una operación con el esclavo según lo especificado por los valores de las propiedades del componente modificadas en este momento*/ procedure TForm1.Button1Click(Sender: TObject); begin if (ModbusM1.Connected and not(ModbusM1.Busy)) then begin ModbusM1.SlaveId:=1; ModbusM1.FunctionCode:=3; ModbusM1.Offset:=0; ModbusM1.Quantity:=1; ModbusM1.RegisterDim:=2; ModbusM1.Timeout:=1000; ModbusM1.WriteValues[0]:=0; ModbusM1.Query; end; end;/*Se programa que cuando ocurra el evento OnResponseReady del componente, significando que ya se ha recibido respuesta del esclavo, se edita en el Memo1 el dato proveniente del esclavo*/ procedure TForm1.ModbusM1ResponseReady(Sender: TObject); var i: Integer; begin Memo1.Lines.Clear; i:=0; repeat Memo1.Lines.Add(InttoStr(round(ModbusM1.ReadValues[i]*256+ModbusM1.ReadValues[i+1]))); inc(i,2); until i=high(ModbusM1.ReadValues)+1; end;/*Por último se programa que si ocurre algún error y se genera el evento OnError del componente, se edita en el Edit1 el código del error para que el usuario conozca qué ha sucedido.*/ procedure TForm1.ModbusM1Error(Sender: TObject); begin Edit1.text:='error: '+inttostr(ModbusM1.Error); end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ModbusM;type
TForm1 = class(TForm)
ModbusM1: TModbusM;
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ModbusM1ResponseReady(Sender: TObject);
procedure ModbusM1Error(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}/*Primeramente, en el evento OnCreate de la forma de la aplicación, damos valor apropiado a aquellas propiedades del componente MODBUS que se refieren a parámetros de la comunicación y se ejecuta el método Connect para conectar el componente con el puerto serie especificado.*/
procedure TForm1.FormCreate(Sender: TObject);
begin
ModbusM1.ComPort:=pnCOM1;
ModbusM1.ComPortSpeed:=br9600;
ModbusM1.ComPortDataBits:=db8BITS;
ModbusM1.ComPortStopBits:=sb1BITS;
ModbusM1.ComPortParity:=ptNONE;
ModbusM1.ComPortHwHandshaking:=hhNONE;
ModbusM1.Connect;
end;/*Se programa para el evento OnClick del Botón1 que, si el componente está correctamente conectado en algún puerto serie y no está ocupado en otra operación con el esclavo, se ejecute el método Query para pedir una operación con el esclavo según lo especificado por los valores de las propiedades del componente modificadas en este momento*/
procedure TForm1.Button1Click(Sender: TObject);
begin
if (ModbusM1.Connected and not(ModbusM1.Busy)) then
begin
ModbusM1.SlaveId:=1;
ModbusM1.FunctionCode:=3;
ModbusM1.Offset:=0;
ModbusM1.Quantity:=1;
ModbusM1.RegisterDim:=2;
ModbusM1.Timeout:=1000;
ModbusM1.WriteValues[0]:=0;
ModbusM1.Query;
end;
end;/*Se programa que cuando ocurra el evento OnResponseReady del componente, significando que ya se ha recibido respuesta del esclavo, se edita en el Memo1 el dato proveniente del esclavo*/
procedure TForm1.ModbusM1ResponseReady(Sender: TObject);
var
i: Integer;
begin
Memo1.Lines.Clear;
i:=0;
repeat
Memo1.Lines.Add(InttoStr(round(ModbusM1.ReadValues[i]*256+ModbusM1.ReadValues[i+1])));
inc(i,2);
until i=high(ModbusM1.ReadValues)+1;
end;/*Por último se programa que si ocurre algún error y se genera el evento OnError del componente, se edita en el Edit1 el código del error para que el usuario conozca qué ha sucedido.*/
procedure TForm1.ModbusM1Error(Sender: TObject);
begin
Edit1.text:='error: '+inttostr(ModbusM1.Error);
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ModbusM;type
TForm1 = class(TForm)
ModbusM1: TModbusM;
Button1: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ModbusM1ResponseReady(Sender: TObject);
procedure ModbusM1Error(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}/*Primeramente, en el evento OnCreate de la forma de la aplicación, damos valor apropiado a aquellas propiedades del componente MODBUS que se refieren a parámetros de la comunicación y se ejecuta el método Connect para conectar el componente con el puerto serie especificado.*/
procedure TForm1.FormCreate(Sender: TObject);
begin
ModbusM1.ComPort:=pnCOM1;
ModbusM1.ComPortSpeed:=br9600;
ModbusM1.ComPortDataBits:=db8BITS;
ModbusM1.ComPortStopBits:=sb1BITS;
ModbusM1.ComPortParity:=ptNONE;
ModbusM1.ComPortHwHandshaking:=hhNONE;
ModbusM1.Connect;
end;/*Se programa para el evento OnClick del Botón1 que, si el componente está correctamente conectado en algún puerto serie y no está ocupado en otra operación con el esclavo, se ejecute el método Query para pedir una operación con el esclavo según lo especificado por los valores de las propiedades del componente modificadas en este momento*/
procedure TForm1.Button1Click(Sender: TObject);
begin
if (ModbusM1.Connected and not(ModbusM1.Busy)) then
begin
ModbusM1.SlaveId:=1;
ModbusM1.FunctionCode:=3;
ModbusM1.Offset:=0;
ModbusM1.Quantity:=1;
ModbusM1.RegisterDim:=2;
ModbusM1.Timeout:=1000;
ModbusM1.WriteValues[0]:=0;
ModbusM1.Query;
end;
end;/*Se programa que cuando ocurra el evento OnResponseReady del componente, significando que ya se ha recibido respuesta del esclavo, se edita en el Memo1 el dato proveniente del esclavo*/
procedure TForm1.ModbusM1ResponseReady(Sender: TObject);
var
i: Integer;
begin
Memo1.Lines.Clear;
i:=0;
repeat
Memo1.Lines.Add(InttoStr(round(ModbusM1.ReadValues[i]*256+ModbusM1.ReadValues[i+1])));
inc(i,2);
until i=high(ModbusM1.ReadValues)+1;
end;/*Por último se programa que si ocurre algún error y se genera el evento OnError del componente, se edita en el Edit1 el código del error para que el usuario conozca qué ha sucedido.*/
procedure TForm1.ModbusM1Error(Sender: TObject);
begin
Edit1.text:='error: '+inttostr(ModbusM1.Error);
end;end.