Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 4 von 4

Thema: Libnodave unter delphi 2006 ohne Komponente

  1. #1
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte Libnodave.dll einsetzen aber ohne die Komponente einzusetzen bzw. zu installieren.
    Ich habe mit Delphi 5 die Komponente eingesetzt und es klapp super aber nun möchte ich umsteigen auf Delphi 2006.
    Ich weiss nun nicht wie ich die DLL anspreche um zb. eine Verbindung über TCP zu erstellen.In der Komponente wurde es einfach eingestellt.
    Bitte um hilfe evtl. eine kleine Demo.
    Zitieren Zitieren Libnodave unter delphi 2006 ohne Komponente  

  2. #2
    Registriert seit
    22.02.2007
    Ort
    Sponheim
    Beiträge
    190
    Danke
    3
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Bei der Komponente ist doch Source dabei, schau einfach nach wie die Komponente die Verbindung aufbaut.

    Aus der nodavecomponent.pas kopiert, müsste alles wichtige drin sein (ab Zeile 655), Deklarationen ab Zeile 135.

    Code:
    //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;
    Wie kann es sein, dass am Ende des Geldes noch Monat übrig ist?
    Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück!
    engbarth.es

  3. #3
    emsbootsmann ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.04.2007
    Beiträge
    25
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Gibts nichts einfacheres,so wie ndave in Uses einbinden und dann

    procedure TForm.Read_DB3_DBX2;
    VAR Data : Variant;
    begin
    HauptForm.NoDave.DBNumber:=3;
    HauptForm.NoDave.Area:=DaveDB;
    HauptForm.NoDave.BufLen:=2;
    HauptForm.NoDave.BufOffs:=2;
    If HauptForm.NoDave.Active = true then
    begin
    HauptForm.NoDave.ReadBytes;
    Data:=HauptForm.NoDave.GetInt(HauptForm.NoDave.BufOffs,0);
    Pointer:=(Data);
    //Label5.Caption:=(Data);
    end;
    end;

  4. #4
    Registriert seit
    22.02.2007
    Ort
    Sponheim
    Beiträge
    190
    Danke
    3
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Doch klar, pack die nodavecomponent in die uses und dann geht das so.

    Jetzt noch das Beispiel:

    Code:
    procedure TForm1.Read_DB3_DBX2;
    var
      Sps:  TNoDave;
      Data: SmallInt;
    begin
      Sps := TNoDave.Create(parent);
      try
        Sps.Protocol := daveProtoISOTCP;      // Protokoll (bei mir ISOTCP)
        Sps.IPAddress := '192.168.178.10';    // IP-Adresse
        Sps.Connect();                        // Verbindug öffnen
        Sps.ReadBytes(daveDB, 3, 0, 2, nil);  // nil -> interner Buffer wird verwendet.
        Data := Sps.GetInt(0, nil, 0, 2);     // DBW0 aus DB3
        Sps.Disconnect;                       // Verbindung schließen
        Label5.Caption := IntToStr(Data);
      finally
        Sps.Free;
      end;
    end;
    Das ist jetzt nur mal schnell runtergetippt, sollte aber DBW0 aus DB3 lesen und im Label5 anzeigen. Getestet hab ich das allerdings nicht. Bei meinen Anwendungen lasse ich die Verbindung zur SPS bestehen bis die Anwendung beendet wird.
    Geändert von marcengbarth (04.03.2010 um 20:18 Uhr)
    Wie kann es sein, dass am Ende des Geldes noch Monat übrig ist?
    Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück!
    engbarth.es

Ähnliche Themen

  1. Fehler in LibNoDave- Komponente (Delphi)?
    Von Cliff im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.07.2010, 11:03
  2. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  3. Libnodave Komponente in Delphi
    Von Snoopy123123 im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 24.03.2009, 19:59
  4. OPC Client Komponente für Delphi?
    Von marcengbarth im Forum Hochsprachen - OPC
    Antworten: 3
    Letzter Beitrag: 05.11.2008, 09:43
  5. Zugriff mit libnodave (unter Delphi) auf S7-CP443-1
    Von Frank im Forum Hochsprachen - OPC
    Antworten: 19
    Letzter Beitrag: 29.04.2007, 13:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •