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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: mit Delphi per Modbus/TCP mehrere SPSen auslesen

  1. #1
    Registriert seit
    07.06.2008
    Beiträge
    55
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Ich möchte ein Programm in Delphi schreiben, das es ermöglicht, Daten aus mehreren SPSen per Modbus/TCP zeitgleich auszulesen.

    Der Zugriff per MBT.dll der Firma Wago funktioniert leider nur für eine SPS.

    Ich möchte aber nach Programmstart mehrere Verbindungen aufbauen und halten. Dann möchte ich z.B. im Sekundentakt Daten mitschreiben.

    Ich bin für jeden Rat dankbar.
    Zitieren Zitieren mit Delphi per Modbus/TCP mehrere SPSen auslesen  

  2. #2
    Registriert seit
    07.06.2008
    Beiträge
    55
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich möchte dazu keinen OPC-Server nutzen.
    Man kann mit Delphi als Modbus-Server oder -Client auftreten.
    Es muß doch möglich sein mehrere Verbindungen zu halten.

  3. #3
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von jank-automation
    Ich möchte ein Programm in Delphi schreiben, das es ermöglicht, Daten aus mehreren SPSen per Modbus/TCP zeitgleich auszulesen.
    dazu gibt es ab Delphi 2006 (???) die Indy-Komponenten. Mit dem Indy TCPClient/TCPServer kann man das machen. Die Indy Komponenten nehmen einem das Gewurschtel mit dem WinSocket und dem TCP-Protokoll ab. Dann muss man nur noch das Modbus-Protokoll dareinpfriemeln.

    Vor einigen Jahren gab es mal in der Zeitschrift "Toolbox" eine fertige Komponente dafür. Ich kann mich aber nicht mehr erinnern, ob man damit auch mit mehreren SPSen kommunizieren konnte. Aber man kann ja auch notfalls mehrere Instanzen (also für jede Verbindung eine) anlegen.

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Das geht ...  

  4. #4
    Registriert seit
    07.06.2008
    Beiträge
    55
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich arbeite mit Delphi 2009.
    Werde es mir schnellstmöglich ansehen.

  5. #5
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von jank-automation
    Ich arbeite mit Delphi 2009.
    Ok, damit es schneller geht, hier noch ein paar Hinweise :

    Bei der Installation von D2009 wird man gefragt, welche Indy Version installiert werden soll. Zur Auswahl stehen die Version 9 oder 10. Ich habe die neuere Version 10 gewählt. Die Unterschiede zwischen den beiden Versionen sind gravierend, der Hersteller hat das Konzept (nicht immer zum Vorteil) geändert. Daher beziehe ich mich auf die Version Indy 10.

    Ich kenne zwar das ModBus Protokoll nicht im Detail, aber das sollte ähnlich wie bei S7 IsoOnTCP funktionieren. Da wird das S7 Protokoll eben wie Nutzdaten in das TCP Protokoll eingebettet. Das Modbus Protokoll ist zwar offen gelegt, aber ich wollte mir heute ersparen das ganze durchzulesen.

    Aufgrund meiner oben gemachten Annahme würde ich eine neue Komponente abgeleitet aus TComponent erstellen, nennen wir diese mal TTCPModBus. Dadrin die entsprechenden Properties für IP-Adressen, Portnummer, Timeout etc. definieren. In der Komponente dann aus der Delphi VCL "TidTCPClient" dynamisch erzeugen, sowie einen eigenen Thread nur zum Lesen ebenfalls dynamisch erzeugen.
    Mit der Funktion des TidTCPClient.IOHandler "ReadBytes" erhält man alle Nutzdaten des Modbus Protokolls, schon bereinigt von den Transportdaten des TCP-Stacks.

    Mit der Funktion des TidTCPClient.IOHandler "WriteDirect" kann man dann im Rahmen des modbus Protokolls Daten schreiben.

    Der Vorteil dieser Methode : Man braucht sich nur um das Modbus Protokoll kümmern, die darunterliegenden Schichten erledigt die Indy Komponente.

    Als Ergebnis erhält man eine Komponente TTCPModBus für eine Verbindung. Wenn mehrere Verbindungen benötigt werden, kann man in der Applikation eben entsprechend viele Komponenten vom Typ TTCPModBus verwenden. Hierdurch ist dann auch automatisch eine klare Zuordnung der Daten zur jeweiligen SPS-Steuerung vorhanden.

    Und bitte unbedingt die Datei "IdAntiFreeze.pas" (der Name ist wohl selbsterklärend) in die Uses-Anweisung der Komponente einbinden, sonst gibt es unerklärliche und unerwünschte Überraschungen

    Das ist jetzt aber nur ein Vorschlag, wie ich an die Aufgabe herangehen würde, es gibt auch andere Wege nach Rom .....

    Gruß

    Question_mark
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren Nur ein paar Tips dazu  

  6. #6
    Registriert seit
    22.11.2007
    Beiträge
    731
    Danke
    6
    Erhielt 89 Danke für 62 Beiträge

    Standard

    sieht ganz gut aus

    http://sourceforge.net/projects/delphimodbus/

    modbus master/slave per Indy Komponente Version 9/10
    Zitieren Zitieren wie wärs mit dieser komponente  

  7. #7
    Registriert seit
    07.06.2008
    Beiträge
    55
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke.

    Ich habe versucht es zu installieren.
    Bekomme aber eine Fehlermeldung.
    Die Datei "ModBusSplash.pas" benötigt die Datei ModBusSplash.res.

    Ich stehe mal wieder auf dem Schlauch!

  8. #8
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Beitrag

    Hallo,

    Zitat Zitat von jank-automation
    Die Datei "ModBusSplash.pas" benötigt die Datei ModBusSplash.res.
    Die ModBusSplash.res ist eine Delphi Ressourcendatei. Die ist aber, wie ich das so sehe, im Zip File zum Download enthalten. Vielleicht solltest Du mal prüfen, ob die Res-Datei auch im richtigen Verzeichnis liegt ?

    Gruß

    Question_mark

    Edit : Ich hoffe, Du hast beim Installieren der Komponente die Pfade in den Projekteinstellungen der *.dpk Datei angepasst !!!
    Geändert von Question_mark (07.05.2010 um 17:54 Uhr) Grund: Nachtrag
    Zitieren Zitieren res Datei  

  9. #9
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Lächeln

    Hallo,

    Upps, wann hast du die Komponenten heruntergeladen ? Ich sehe gerade auf Sourceforge, dass seit gestern (06.05.2010) eine neue Version mit Bugfix bereitsteht. Da hat diese res-Datei in den Vorgängerversionen gefehlt. Also einfach nochmal die neue Version herunterladen ...

    Gruß

    Question_mark
    Zitieren Zitieren Es gibt einen Bugfix  

  10. #10
    Registriert seit
    07.06.2008
    Beiträge
    55
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Genau! Upps...

    Ich suche meinen Rechner ab, und überlege, was er mit der Datei gemacht hat!!!
    Und dann liegt Sie ganz unschuldig im Zip-File rum.

Ähnliche Themen

  1. Eine Visualisierung mehrere SPSén
    Von daniel1987 im Forum CODESYS und IEC61131
    Antworten: 19
    Letzter Beitrag: 31.08.2011, 12:00
  2. Antworten: 0
    Letzter Beitrag: 05.08.2010, 08:14
  3. Mehrere SPSen ein Ventil
    Von Tupo13 im Forum Programmierstrategien
    Antworten: 13
    Letzter Beitrag: 15.10.2008, 21:47
  4. Prodave in Delphi einbinden zum auslesen von DBs in S7-400
    Von Anonymous im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 02.10.2005, 12:13
  5. Modbus TCP - mit Delphi
    Von Kurt im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 07.10.2004, 21:41

Lesezeichen

Berechtigungen

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