Deltalogic AG-LINK vs. C#

Matze001

Level-3
Beiträge
2.872
Reaktionspunkte
589
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich spiele gerade ein wenig mit C# und wollte mich daher mal der 1200er auf meinem Schreibtisch zuwenden.
Da ich AG-LINK bereits in den Fingern hatte (aber damals mit Silverlight) wollte ich mir das mal mit C# anschauen.

Alles kein Thema, AG-Link geladen, Dokus gelesen, Demo Projekte geladen.
Nen haufen Fehler nach dem migrieren nach VS 15 -> Referenz zum Wrapper hergestellt und das meißte war ok.
Leider habe ich das Problem, dass in den Beispielen auf die "Variable" AGL Zugegriffen wird (AGL.LIzenzieren, etc).
Diese wird aber nirgends im Projekt (egal in welchem Beispiel) deklariert. Wirklich schlau bin ich aus den Dokus auch nicht
geworden, wie genau das jetzt aussehen sollte.

Wenn mir also jemand einen Tipp hätte, wäre ich sehr dankbar!

Und wenn ich grad nen Beitrag offen habe, gleich noch Fragen hintendran bzw. vorneweg (aus sicht des Projektes).

1. Zugriff auf die 1200er sollte gehen - mit Silverlight ging es vor 100 Jahren mal. GGf. nicht optimierte DBs, aber damit kann ich leben. Geht es ggf. auch Symbolisch?
2. Wie sieht es mit dem Lesen/Schreiben von Strings aus? Muss ich Bytes lesen und diese dann wandeln oder gibt es da was fertiges?



Grüße

Marcel
 
Hallo Marcel,

"AGL" ist die statische Klasse in der alle Methoden von ACCON-AGLink definiert sind. Um Methoden von AGL nutzen zu können muss in den Projektreferenzen die Assembly "AGL4DotNET.4.dll" eingebunden werden. Projekt->Add Reference->Browse.
Dann den AGLink Namespace mit

using Accon.AGLink;

angegeben. Sollte "AGL" nicht mehr als Fehler markiert sein kann man Funktionen wie AGL4.Activate() aufrufen.

S7-Strings: Zuerst die Daten als Bytes lesen mit AGL4.ReadDataBytes(). Dann die Bytes in Text umwandeln mit AGL4.S7String2String(). Schreiben entsprechen andersherum.

Alle API Funktionen werden auch in dem mitgelieferten Programm "ACCON-AGLink API Guide" erklärt.

Wegen symbolischen Zugriff auf optimierte und nicht optimierte DBs bitte per Mail an DELTALOGIC wenden: support@deltalogic.de
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen dank für die Rückmeldung! Hab es heute Morgen hinbekommen, aber vergessen hier ein Update zu veröffentlichen!
Der Fehler lag daran, dass das Beispiel die "alte" Wrapper.dll nutzte, und ich die neue (4) eingebunden hatte.

Nun funktioniert alles einwandfrei!

Grüße

Marcel

P.S: Das mit dem String habe ich mir _fast_ so gedacht. Werde es mal testen und ggf. nachfragen.
 
So weiter gehts.

Ich habe eine Verbindung, kann die MLFB auslesen und anzeigen. Wie bereits erwähnt eine S7-1200er. (ggf. wäre zu erwähnen, eine 1200F)
Der nachfolgend verwendete DB ist NICHT Optimiert eingestellt, und es sind ein paar Bytes vorhanden.

Wenn ich nun ein Byte auslesen will, versuche ich es wie folgt:

Code:
result = AGL4.ReadDataBytes(0,100,0,1, bytearray, 1000)

Kurze Erklärung:

0 = conn -> funktioniert mal bei der MLFB
100 = DB100
0 = Start Byte 0
1 = Anzahl 1 Byte lesen
bytearray -> mein Rückgabearray
1000 - Timeout

Was passiert? Es erscheint folgende Fehlermeldung:

Code:
Unbekannte Fehlermeldung von AG (Bitte melden!)

Das gleiche passiert auch bei ReadFlagBytes. Bisher liefert nur ReadMLFBNr ein SUCCESS zurück.

Muss ich ggf. noch etwas einstellen an der 1200er? Bei Schutz stehe ich auf Vollzugriff inkl. Fail-Safe.

Ich probiere es Morgen mal mit einer nicht F-Steuerung.

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen dank für die Rückmeldung! Hab es heute Morgen hinbekommen, aber vergessen hier ein Update zu veröffentlichen!
Der Fehler lag daran, dass das Beispiel die "alte" Wrapper.dll nutzte, und ich die neue (4) eingebunden hatte.

Nun funktioniert alles einwandfrei!

Grüße

Marcel

P.S: Das mit dem String habe ich mir _fast_ so gedacht. Werde es mal testen und ggf. nachfragen.
Hallo, in der ACCON-AGLink API Guide werden keine APIs erwähnt, die sich auf das Laden von Symbolvariablenlisten von PLCs beziehen. Könnten Sie mir dazu einige technische Details erläutern, insbesondere in Bezug auf die Programmiersprache C#?
 
Hallo Marcel,

"AGL" ist die statische Klasse in der alle Methoden von ACCON-AGLink definiert sind. Um Methoden von AGL nutzen zu können muss in den Projektreferenzen die Assembly "AGL4DotNET.4.dll" eingebunden werden. Projekt->Add Reference->Browse.
Dann den AGLink Namespace mit

using Accon.AGLink;

angegeben. Sollte "AGL" nicht mehr als Fehler markiert sein kann man Funktionen wie AGL4.Activate() aufrufen.

S7-Strings: Zuerst die Daten als Bytes lesen mit AGL4.ReadDataBytes(). Dann die Bytes in Text umwandeln mit AGL4.S7String2String(). Schreiben entsprechen andersherum.

Alle API Funktionen werden auch in dem mitgelieferten Programm "ACCON-AGLink API Guide" erklärt.

Wegen symbolischen Zugriff auf optimierte und nicht optimierte DBs bitte per Mail an DELTALOGIC wenden: support@deltalogic.de
Hallo, in der ACCON-AGLink API Guide werden keine APIs erwähnt, die sich auf das Laden von Symbolvariablenlisten von PLCs beziehen. Könnten Sie mir dazu einige technische Details erläutern, insbesondere in Bezug auf die Programmiersprache C#?
 
Hallo Marcel,

"AGL" ist die statische Klasse in der alle Methoden von ACCON-AGLink definiert sind. Um Methoden von AGL nutzen zu können muss in den Projektreferenzen die Assembly "AGL4DotNET.4.dll" eingebunden werden. Projekt->Add Reference->Browse.
Dann den AGLink Namespace mit

using Accon.AGLink;

angegeben. Sollte "AGL" nicht mehr als Fehler markiert sein kann man Funktionen wie AGL4.Activate() aufrufen.

S7-Strings: Zuerst die Daten als Bytes lesen mit AGL4.ReadDataBytes(). Dann die Bytes in Text umwandeln mit AGL4.S7String2String(). Schreiben entsprechen andersherum.

Alle API Funktionen werden auch in dem mitgelieferten Programm "ACCON-AGLink API Guide" erklärt.

Wegen symbolischen Zugriff auf optimierte und nicht optimierte DBs bitte per Mail an DELTALOGIC wenden: support@deltalogic.de
Hallo, ich habe festgestellt, dass beim Versuch, einen Zugriffs-Handle über den Knotenpfad-String "PLC.Tags.Table.M0.0" zu erstellen, der Knoten "M0.0" oder "Q0.0" nicht gefunden wird. Gibt es irgendwelche Lösungen, um dieses Problem gut zu lösen? Hier ist mein Code:
IntPtr accessHandle = IntPtr.Zero;
int errorPosition = -1;
int bufferSize = 0;
string path = "PLC.Tags.Table.M0.0"; // string path = "PLC.Blocks.Q0.0"
result = AGL4.Symbolic_CreateAccessByPath(rootNodeHandle, path, ref accessHandle, ref errorPosition);
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Es dürfte am Punkt im Variablen-Namen liegen. Man muss den Teil mit Quotes escapen.
PLC.Tags.Table.M0.0 -> PLC.Tags.Table."M0.0"

Für Pfadanteile gibt es eine AGLink Escape-Funktion:
Symbolic_EscapeString
Maskiert Sonderzeichen in Elementbezeichnungen, wie . ( ) [ ]
Diese Funktion erwartet nur den Elementnamen, nicht den gesamten Pfad. Da sonst die Ebenentrennpunkte ebenfalls maskiert werden.

Wenn das AGLink-Setup auf dem Rechner installiert ist, findet man in folgendem Pfad die .Net-Beispiele:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET

In folgenden Beispielen wird dies verwendet:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA BrowseComments C#\AGL5 BrowseComments\Program.cs

C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA Symbols Loader Offline C#\SymbolsLoader.cs

Die Handbücher sind hier abgelegt:
C:\Program Files (x86)\DELTALOGIC\ACCON-AGLink V5\Doku

weitere Fragen auch gern direkt an support@deltalogic.de

Hanns-Joerg Renschler
 
@Matze001: Bei ConnNr MUSS der Wert von PLCConnect verwendet werden. In Deiner Version muss Put/Get in der Hardwarekonfig der SPS aktiviert werden.
Hallo,

vielen dank für die Rückmeldung! Hab es heute Morgen hinbekommen, aber vergessen hier ein Update zu veröffentlichen!
Der Fehler lag daran, dass das Beispiel die "alte" Wrapper.dll nutzte, und ich die neue (4) eingebunden hatte.

Nun funktioniert alles einwandfrei!

Grüße

Marcel

P.S: Das mit dem String habe ich mir _fast_ so gedacht. Werde es mal testen und ggf. nachfragen.

Hallo,
Es dürfte am Punkt im Variablen-Namen liegen. Man muss den Teil mit Quotes escapen.
PLC.Tags.Table.M0.0 -> PLC.Tags.Table."M0.0"

Für Pfadanteile gibt es eine AGLink Escape-Funktion:
Symbolic_EscapeString
Maskiert Sonderzeichen in Elementbezeichnungen, wie . ( ) [ ]
Diese Funktion erwartet nur den Elementnamen, nicht den gesamten Pfad. Da sonst die Ebenentrennpunkte ebenfalls maskiert werden.

Wenn das AGLink-Setup auf dem Rechner installiert ist, findet man in folgendem Pfad die .Net-Beispiele:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET

In folgenden Beispielen wird dies verwendet:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA BrowseComments C#\AGL5 BrowseComments\Program.cs

C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA Symbols Loader Offline C#\SymbolsLoader.cs

Die Handbücher sind hier abgelegt:
C:\Program Files (x86)\DELTALOGIC\ACCON-AGLink V5\Doku

weitere Fragen auch gern direkt an support@deltalogic.de

Hanns-Joerg Renschler
ok,Thank you very much!
 
Hallo,
Es dürfte am Punkt im Variablen-Namen liegen. Man muss den Teil mit Quotes escapen.
PLC.Tags.Table.M0.0 -> PLC.Tags.Table."M0.0"

Für Pfadanteile gibt es eine AGLink Escape-Funktion:
Symbolic_EscapeString
Maskiert Sonderzeichen in Elementbezeichnungen, wie . ( ) [ ]
Diese Funktion erwartet nur den Elementnamen, nicht den gesamten Pfad. Da sonst die Ebenentrennpunkte ebenfalls maskiert werden.

Wenn das AGLink-Setup auf dem Rechner installiert ist, findet man in folgendem Pfad die .Net-Beispiele:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET

In folgenden Beispielen wird dies verwendet:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA BrowseComments C#\AGL5 BrowseComments\Program.cs

C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA Symbols Loader Offline C#\SymbolsLoader.cs

Die Handbücher sind hier abgelegt:
C:\Program Files (x86)\DELTALOGIC\ACCON-AGLink V5\Doku

weitere Fragen auch gern direkt an support@deltalogic.de

Hanns-Joerg Renschler
Wenn keine dieser beiden Funktionen (AGL4.Symbolic_LoadAGLinkSymbolsFromPLC(connnr, ref rootNodeHandle) | AGL4.Symbolic_LoadAGLinkSymbolsFromFile(filePath, ref rootNodeHandle)) verwendet wurden, um einen Handle für die Wurzelknoten zu erstellen, wie kann man einen Zugriffs-Handle über einen Knotenpfad erstellen? Alle Knotenpfade werden von den Benutzern manuell eingegeben.Vielen Dank für Ihre bisherige Hilfe auf Deutsch!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Marcel,

"AGL" ist die statische Klasse in der alle Methoden von ACCON-AGLink definiert sind. Um Methoden von AGL nutzen zu können muss in den Projektreferenzen die Assembly "AGL4DotNET.4.dll" eingebunden werden. Projekt->Add Reference->Browse.
Dann den AGLink Namespace mit

using Accon.AGLink;

angegeben. Sollte "AGL" nicht mehr als Fehler markiert sein kann man Funktionen wie AGL4.Activate() aufrufen.

S7-Strings: Zuerst die Daten als Bytes lesen mit AGL4.ReadDataBytes(). Dann die Bytes in Text umwandeln mit AGL4.S7String2String(). Schreiben entsprechen andersherum.

Alle API Funktionen werden auch in dem mitgelieferten Programm "ACCON-AGLink API Guide" erklärt.

Wegen symbolischen Zugriff auf optimierte und nicht optimierte DBs bitte per Mail an DELTALOGIC wenden: support@deltalogic.de
Hallo Marcel, wie lese und schreibe ich mit dem Datentyp S7_Pointer?
 
Hallo,
Es dürfte am Punkt im Variablen-Namen liegen. Man muss den Teil mit Quotes escapen.
PLC.Tags.Table.M0.0 -> PLC.Tags.Table."M0.0"

Für Pfadanteile gibt es eine AGLink Escape-Funktion:
Symbolic_EscapeString
Maskiert Sonderzeichen in Elementbezeichnungen, wie . ( ) [ ]
Diese Funktion erwartet nur den Elementnamen, nicht den gesamten Pfad. Da sonst die Ebenentrennpunkte ebenfalls maskiert werden.

Wenn das AGLink-Setup auf dem Rechner installiert ist, findet man in folgendem Pfad die .Net-Beispiele:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET

In folgenden Beispielen wird dies verwendet:
C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA BrowseComments C#\AGL5 BrowseComments\Program.cs

C:\Users\Public\Documents\DELTALOGIC\ACCON-AGLink_V5\Samples\Microsoft.NET\AGL5 TIA Symbols Loader Offline C#\SymbolsLoader.cs

Die Handbücher sind hier abgelegt:
C:\Program Files (x86)\DELTALOGIC\ACCON-AGLink V5\Doku

weitere Fragen auch gern direkt an support@deltalogic.de

Hanns-Joerg Renschler
Hallo Marcel, wie lese und schreibe ich mit dem Datentyp S7_Pointer?
 
Zurück
Oben