# Delphi 7



## enter (16 Mai 2007)

*Hi ich Probiere mich gerade mit Delphi 7  und eine Demo Version* *von* *ACCON-AGLink 4.0 *
*Aber irgendwie scheitert das an mein Verständnis  habe noch nicht so viel mit Delphi gemacht.Wie muss ich denn die Variablen in meiner S7 315 2PN/DP zu Verfügung stellen? Und wie kann ich zb einen Button in Delphi 7 dazu bringen mir ein Merker zu setzen; ein Beispiel wäre Super*


----------



## Ralle (16 Mai 2007)

http://deltalogic.de/index.php?target=download/aglink.htm

Da gibt es auch Beispiele zum runterladen, zwar für V3.7, sollte aber doch was bringen.


----------



## Question_mark (16 Mai 2007)

*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


----------



## Question_mark (16 Mai 2007)

*Delphi und ACCON AGLink40*

Hallo,

und nicht vergessen, die Datei "AGLink40.pas" in Dein Projekt mit einzubinden in der uses Klausel Deiner Anwendung  

Gruss

Question_mark


----------



## Question_mark (16 Mai 2007)

*V3.7 vs. V4.0*

Hallo,



			
				Ralle schrieb:
			
		

> zwar für V3.7, sollte aber doch was bringen.



Im Prinzip ja, aber die meisten Funktionsaufrufe haben sich ab Version 4.0 verändert. AGL_xxx wurde bei den Kommunikationsfunktionen in AGL40_xxx umbenannt, und im übrigen eine Unzahl von neuen Funktionen eingeführt.
Insgesamt ist AGLink 4.0 trotz wesentlich erweiterter Funktionen nun einfacher zu programmieren.
Auf der CD sind Beispiele in Delphi für Konsolen und VCL-Anwendungen vorhanden, die (hoffentlich) einfach nachzuvollziehen sind, also Initialisierung, Verbindungsaufbau, Kommunikation, Verbindungsabbau und Finalisation (oder was ist noch mal das Gegenteil von Initialisierung ?  ).

Gruss

Question_mark


----------



## enter (21 Mai 2007)

Ja Danke Question_mark das,  das bringt mich schon ein Stück weiter kommen bestimmt noch mehr Fragen auf dich zu


----------

