//Open the connection to the PLC specified by the properties ~[link .Protocol Protocol], ~[link .CPURack CPURack], ~[link .CPUSlot CPUSlot],
//~[link .COMPort COMPort], ~[link .IPAddress IPAddress], ~[link .IPPort IPPort], ~[link .MPILocal MPILocal], ~[link .MPIRemote MPIRemote]
// and/or ~[link .MPISpeed MPISpeed]
//~param OnlyIntf Open only the interface, don't connect to the PLC
procedure TNoDave.DoConnect(OnlyIntf: Boolean = False);
var
Address: String;
Speed: PChar;
begin
If not FActive then
begin
If not (csLoading in ComponentState) then
begin
Case FProtocol of
daveProtoMPI, daveProtoMPI2, daveProtoMPI3, daveProtoMPI4, daveProtoPPI, daveProtoAS511:
begin
Address:=FComPort + #0;
Case ComSpeed of
daveComSpeed9_6k: Speed:='9600';
daveComSpeed19_2k: Speed:='19200';
daveComSpeed38_4k: Speed:='38400';
daveComSpeed57_6k: Speed:='57600';
daveComSpeed115_2k: Speed:='115200';
else Speed:='38400';
end;
DaveFDS.rfd:=SetPort(@Address[1], Speed, 'O');
end;
daveProtoISOTCP, daveProtoISOTCP243, daveProtoIBH, daveProtoIBH_PPI, daveProtoNLPro:
begin
Address:=FIPAddress + #0;
DaveFDS.rfd:=OpenSocket(FIPPort, @Address[1]);
end;
daveProtoS7Online:
begin
Address:=FComPort + #0;
DaveFDS.rfd:=OpenS7Online(@Address[1], Handle);
end;
end;
DaveFDS.wfd:=DaveFDS.rfd;
If (DaveFDS.rfd > 0) or ((DaveFDS.rfd = 0) and (FProtocol = daveProtoS7Online)) then
begin
Address:=FIntfName + #0;
DaveIntf:=daveNewInterface(DaveFDS, @Address[1], Ord(FMPIlocal), ProtCode(FProtocol), Ord(FMPISpeed));
DaveIntf^.timeout:=FIntfTimeout;
If not OnlyIntf then
begin
FLastError:=daveInitAdapter(DaveIntf);
If FLastError = 0 then
begin
DaveConn:=daveNewConnection(DaveIntf, FMPIRemote, FCpuRack, FCpuSlot);
FLastError:=daveConnectPLC(DaveConn);
FActive:=(FLastError = 0);
If Active then ReadBytes else DoOnError(daveStrerror(FLastError));
end;
end;
end;
end else FActive:=True;
end;
end;