Nur ein paar Tips dazu
Hallo,
jank-automation schrieb:
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