Zugriff auf WinPLC-Engine mit externem Programm

Murdock73

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo lieber Leser,
mittels der WS7_S7AG.DLL kann man mit den Funktionen S7AG_GetPeriEPtr() und S7AG_GetPeriAPtr() auf den Peripheriebereich der Ein- und Ausgänge der Software-SPS zugreifen. D.h. ein Byte auslesen bzw. ein Byte in die Software-SPS schreiben.
Meine Frage:
Wie sind die Bytes den digitalen und analogen Ein- Ausgängen der Software-SPS zugeordnet?
Grüße aus Mittelfranken
Murdock73
 
WinPLC-Engine

Hallo,

normalerweise kann der Zugriff über TCP/IP mittels Protokoll (von z.B. S7-Programmiersoftware oder Visualisierung usw.) erfolgen.
Wieso möchten Sie über die DLL-Funktionen auf die SoftSPS zugreifen?

Anbei die Beschreibung wie dies machbar ist:

BYTE* _export FAR PASCAL S7AG_GetPeriEPtr()
Liefert einen BYTE-Zeiger auf den Peripheriebereich der Eingänge.
Dieser Bereich ist 2048 Byte groß.
Beispiel in C:
BYTE *pInputs=S7AG_GetPeriEPtr();
pInputs[0]=200; //Schreibt 200dezimal in das Eingangsbyte 0
pInputs[2]=50; //Schreibt 50dezimal in das Eingangsbyte 2

BYTE* _export FAR PASCAL S7AG_GetPeriAPtr();
Liefert einen BYTE-Zeiger auf den Peripheriebereich der Ausgänge.
Dieser Bereich ist 2048 Byte groß.
Beispiel in C:
BYTE *pOutputs=S7AG_GetPeriAPtr();
//Liest das Ausgangsbyte 0 und schreibt es in die Variable AB0
BYTE AB0=pOutputs[0];
//Liest das Ausgangsbyte 1 und schreibt es in die Variable AB1
BYTE AB1=pOutputs[1];

Gruss
T.Weiss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
WinPLC-Engine

Danke T.Weiss für die schnelle Antwort. Die Zugriffsmethoden via DLL kenne ich. Was mir nicht klar ist, was die Bytes bedeuten? Welchen Signalen sind sie zugeordnet?

Meine Fragen zeigen, dass ich mit der Thematik SPS noch nicht vertraut bin und ich mich erst in diese Thematik einarbeite. Meine Aufgabe ist es, eine Prozessvisualisierung mit WinCC zu erstellen. Um das Projekt auf einem PC ohne die zugehörige Anlage simulieren zu können, möchten ich WinPLC verwenden. Damit ich den Ablauf und die Tests automatisieren kann, will ich mit einem externem Programm die Tests steuern. Dies müsste meiner Ansicht nach doch funktionieren.
Murdock73
 
Hallo,
wie schon geschrieben
BYTE* _export FAR PASCAL S7AG_GetPeriEPtr()
Liefert einen BYTE-Zeiger auf den Peripheriebereich der Eingänge.
Dieser Speicherbereich entspricht also den Eingangsbaugruppen einer realen CPU.
Das Byte 0 des Speicherbereichs entspricht den Eingängen E0.0 bis E0.7.
Das Byte 1 des Speicherbereichs entspricht den Eingängen E1.0 bis E1.7.
Sie Verändern den Speicherbereich um der SoftSPS andere Eingangsinformationen zu geben.

BYTE* _export FAR PASCAL S7AG_GetPeriAPtr();
Liefert einen BYTE-Zeiger auf den Peripheriebereich der Ausgänge.
Dieser Speicherbereich entspricht also den Ausgangsbaugruppen einer realen CPU.
Das Byte 0 des Speicherbereichs entspricht den Ausgängen A0.0 bis A0.7.
Das Byte 1 des Speicherbereichs entspricht den Ausgängen A1.0 bis A1.7.
Sie lesen den Speicherbereich um die Ausgangsresultate der SoftSPS zu ermitteln.

Sie könnten allerdings Ihr Vorhaben auch mit unserer Prozess-Simulation SPS-VISU realisieren.
In SPS-VISU arbeitet die gleiche SoftSPS und Sie können mit Objekten eine virtuelle Anlage zusammenbauen
und für die Simulation nutzen.
Infos finden Sie unter:
http://www.mhj-software.com/de/VISU.HTM
 
Danke für die ausführliche Information und den Hinweis. Ich habe es jetzt verstanden und kann mich nun weiter in das Thema einarbeiten.
Murdock73
 
Zurück
Oben