Delphi und ACCON AGLink 4.0
Hallo,
enter schrieb:
Aber irgendwie scheitert das an mein Verständnis
Eigentlich ist das alles in der Dokumentation (Handbuch) ausführlich beschrieben, aber gut...
Dafür verschweigst Du wenigstens, was nicht funktioniert
Hast Du mit dem Programm "AGLink40_Config.exe" unter dem Tab "Geräte" schon eine Verbindung konfiguriert ?
Wenn ja, dann unter dem Tab "Test" auf den Button "Testen" drücken. Erfolg oder Misserfolg wird Dir angezeigt. Wenn das nicht funktioniert, ist die Verbindung von Dir falsch projektiert (z.B. IP-Adressse etc.) oder die Hardware (Kabel, etc.) nicht in Ordnung.
Wenn das funktioniert, kannst Du den Delphi Part angehen.
Zuerst den Adapter initialisieren, z.B. im "OnCreate" Ereignis des Hauptformulars durch Aufruf von
1) AGL_OpenDevice
2) AGL_DialUp
3) AGL_InitAdapter
Beim Benden des Programms musst Du im Ereignis "OnDestroy" des Hauptformulars die von AGLink belegten Resourcen wieder freigeben
1) AGL_ExitAdapter
2) AGL_HangUp
3) AGL_CloseDevice
Und bitte alles in der Reihenfolge wie oben beschrieben.
Die Verbindung zu einem der 16 möglichen Geräte baut man mit AGL_PLCConnect auf und kann diese Verbindung mit AGL_PLCDisconnect wieder abbauen.
enter schrieb:
Und wie kann ich zb einen Button in Delphi 7 dazu bringen mir ein Merker zu setzen;
Merker werden byteweise beschrieben :
Dazu schreibst Du im "OnClick" Ereignis Deines Buttons den Aufruf
"AGL40_WriteFlagBytes", z.B. um den M 20.7 zu setzen :
var
FlagMask : Byte;
begin
FlagMask := $80;
AGL40_WriteFlagBytes(ConnNr, 20, 1, FlagMask, 1000, 80);
end;
Der Parameter ConnNr wurde Dir bereits beim Aufruf von AGL_PLCConnect für diese spezifische Verbindung zurückgegeben.
Der Wert 20 ist die erste Adresse im Merkerbereich, hier MB 20.
Der Wert 1 ist die Anzahl der zu schreibenden Bytes.
Der Wert 1000 ist ein Timeout von 1000ms bei sychronem Auftrag.
Der Wert 80 ist eine von Dir frei vergebbare JobID (braucht man aber eigentlich nur bei asynchronen Aufträgen).
Das MB 20 wird dann mit dem Bitmuster 1000 0000 beschrieben. Aber Vorsicht, die anderen Bits werden zwangsläufig auf "0" gesetzt !!!
Wenn das unerwünscht ist, kann man vorher mit "AGL40_ReadFlagBytes" das MB 20 auslesen und mit FlagMask verodern. Was aber nicht ausschliesst, das MB 20 zwischen Lesen und Schreiben u.U. vom SPS-Programm verändert werden kann. Soviel zum Thema "mir ein Merker zu setzen" !
Das Beispiel ist bewusst simpel gehalten, also ohne Fehlerauswertung. Das überlasse ich Dir gerne...
enter schrieb:
Wie muss ich denn die Variablen in meiner S7 315 2PN/DP zu Verfügung stellen?
Warum, die Merker sind doch schon in der SPS
Gruss
Question_mark