AGLink -> S7 1500 Zugriff auf Variablen

Jochen Kühner

Level-3
Beiträge
4.291
Reaktionspunkte
527
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
hat den jemand schon mal versucht mit AGLink auf eine 1500er SPS zuzugreifen, die Texistierenden Tags auszulesen, und dann von ausgewählten Tags werte zu lesen? Ich hab mir gerade das neuste AGLink (5.2) Demo geladen, finde aber in der API Beschreibung nichts passendes. Lt. Deltalogic soll das aber funktionieren.
 
nach dem Konnekt mit S7 TCP/IP TIA kannst du mit den Funktionen dein Tag lesen

AGL_Symbolic_LoadAGLinkSymbolsFromPLC
AGL_Symbolic_FreeHandle
AGL_Symbolic_CreateAccessByPath
AGL_Symbolic_ReadMixEx

damit sollte es gehen
 
Hätte da noch ein paar weitere Fragen:

  • Muß man das Tool von AGLink verwenden um die Verbindung zu Konfigurieren, oder kann Ich die Konfig auch komplett per Code übergeben?
 
Hätte da noch ein paar weitere Fragen:

  • Muß man das Tool von AGLink verwenden um die Verbindung zu Konfigurieren, oder kann Ich die Konfig auch komplett per Code übergeben?

Habsgefunden:

Code:
[COLOR=green][FONT=Consolas]//Optional: if you do not want to use AGLink40_Config.exe to set the connection parameters[/FONT][/COLOR]     [COLOR=green]//you can set the IP Address of the PLC directly in code:[/COLOR]
     [COLOR=green]/*AGL4.S7tcpipTia m_tiaParas = new AGL4.S7tcpipTia();
     AGL4.S7tcpipTia1 connSettingsPlc2 = m_tiaParas.Conn[paras.PlcNr]; //we are using connection for PlcNr 2 (for TCP/IP connection this could be any number between 0..15)
     connSettingsPlc2.Address = "192.168.1.153";
     connSettingsPlc2.ConnTypeEx = AGL4.ConnTypeEx.eCT_HMI;
     connSettingsPlc2.PLCClassEx = AGL4.PLC_ClassEx.ePLCEx_AUTO_TIA; //Autodetect PLC type
     connSettingsPlc2.PlcNr = (ushort)paras.PlcNr; [/COLOR][COLOR=green][FONT=Consolas]     connSettingsPlc2.TimeOut = 30000; //Timeout in milliseconds[/FONT][/COLOR]
 
;-) - die kann TIA laden, aber nur mit Openness. Am direkten File support hab Ich mich probiert, aber hab nicht wirklich Zeit dafür, und das scheint ein größeres unterfangen!

Und 1500er gehen nur mit absoluten Adressen. Und Ich will direkt die Symbole von der PLC lesen. (Wir brauchen das an einer anlagen in den nächsten 2 Monaten)

hab auch mit dem OPCUA Serve rrumprobiert, aber die Performance ist ja wirklich grottig... Hoffe das es mit AGLink besser ist!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Klar gibt es Beispiele. Wenn DU alles installiert hast, dann einfach über "Start / DELTALOGIC / ACCON-AGLink_V5 / Beispiele" den Ordenr mit den Beispielen öffnen und Deine gewünschte Programmiersprachen auswählen. Wenn Dir noch ein Beispiel fehlt, dann einfach Info an mich.
 
Es fehlt ein Beispiel für den Symbolischen Zugriff auf die PLC ohne TIA Projekt. d.h. auslesen via AGL_Symbolic_LoadAGLinkSymbolsFromPLC
Ist auch nicht in der API Doku enthalten!
 
Das Beispiel hab Ich nun gefunden -> Leider stürtzt das bei mir ab, Support anfrage hab ich schon gestellt.... Ich hoffe das ganze geht (wenns funzt), schneller als über den OPC UA
 
Hallo,

sorry, dass ich den Thread nochmal ausgrabe, aber das passt thematisch dazu...

Ich versuche ebenfalls mit der AGLink Bibliothek symbolisch auf (Datenbaustein-)Variablen in der SPS zuzugreifen, ohne vorher das TIA-Projekt zu öffnen.

Dazu habe ich mir zunächst das Beispiel "AGL5 TIA CommunicationSample Interface Async C#" hergenommen. Dort wird das TIA-Projekt geöffnet und danach ein Wert aus der SPS ausgelesen. Das funktioniert auch und liefert den aktuellen Wert aus der SPS.

Dann habe ich den Aufruf
Code:
AGL4.Symbolic_LoadTIAProjectSymbols(TxtProjectPath.Text, ref m_rootHandle);
durch
Code:
AGL4.Symbolic_LoadAGLinkSymbolsFromPLC(m_aglink.ConnNr, ref m_rootHandle);
ersetzt. m_aglink.ConnNr beinhaltet "0". Der Verbindungsaufbau ist auch erfolgreich.

Später im Code wird
Code:
AGL4.Symbolic_CreateAccessByPath(m_rootHandle, TxtItem.Text, ref rws[0].AccessHandle, ref error_pos);
aufgerufen. TxtItem.Text hat in beiden Fällen den Wert "PLC_1.Blocks.Clock.time". In der Original-(Offline)-Version ist der Aufruf der Funktion erfolgreich, in der modifizierten (Online-)Version liefert die Funktion den Fehler: "Symbolic_CreateAccessByPath: Pfad enthaelt unbekanntes Feld".

Muss im Falle des direkten Auslesens aus der SPS ein anderer Pfad angegeben werden? Oder wo liegt das Problem?
 
Hallo,

ich noch mal...

Gibt es auch eine Möglichkeit, PLCSim mit AGLink zu benutzen? Wenn ja, wie?
Ich habe es mit einem kleinen Hilfstool, welches eine Net-Schnittstelle zu PLCSim zur Verfügung stellt, versucht. Aber da bekomme ich beim Testen mittels AG-Config "Falscher Lesetyp"...
 
Hallo,

noch eine kleine Frage. Ich versuche mittels VBA auf Werte aus der SPS zuzugreifen. Die ganze Abfolge von Funktionen begonnen bei AGL_Symbolic_LoadAGLinkSymbolsFromPLC über AGL_Symbolic_ReadMixEx bis hin zur Ermittlung von ValueType und SystemType funktioniert. In der SymbolicRW Struktur steht auch ein AccessHandle drin (sonst würde ja z.B. auch die ValueType Ermittlung nicht funktionieren). Wenn ich aber den Wert selbst auslesen will mit z.B.:
Code:
AGL_Symbolic_GetAccessBufferUInt16(SymbolicRW.AccessHandle, SymbolicRW.Buffer, SymbolicRW.BufferLen, ElementIndex, valueUINT16)
dann bekomme ich einen Fehler: "Parameterfehler beim Funktionsaufruf". Was könnte falsch sein?

P.S. Inhalt der Werte:
Code:
SymbolicRW.AccessHandle = 505374960, SymbolicRW.Buffer = 0, SymbolicRW.BufferLen = 2, ElementIndex = 0, valueUINT16 = 0
Returnwert der Funktion = -1048575

Vielen Dank.
 
Zurück
Oben