Variablen einlesen aus Textfile und Beckhoff mit PC fernsteuern

Sireth

Level-1
Beiträge
24
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, Ich habe mit TwinCat2 ein Programm (ST) geschrieben. Ich übergebe in diesem Programm eine Datenstruktur mit Parametern. Zurzeit stelle ich die Parameter noch im PLC ein, indem ich mehrere Instanzen der Datenstruktur mit den entsprechenden Werten initialisiere. Ich würde diese Parameterlisten gerne von einem Textfile einlesen und in die Datenstruktur überführen, sodass ich TwinCat nicht mehr öffnen und das Programm neu kompilieren muss um neue Parameter einzustellen. Gibt es dafür schon fertige Funktionsblöcke die ich verwenden könnte? Wenn ja, wie heißen die, und in welcher Bibliothek finde ich die? Wenn nicht, Welche Textfile Funktionsblöcke würdet ihr empfehlen um einen Funktionsblock mit der gewünschten Funktionalität zu realisieren? Ich muss die Werte dann ja sicherlich als String einlesen und konvertieren. In dem Textfile hätte ich gerne die Variablenbezeichnung und dahinter den entsprechenden Wert, zB.: iIntegerVariable = 10. Wie kann ich den Wert 10 als String herausfiltern?

Neben dem Einlesen per Textfile wäre auch eine Schnittstelle schön, mit der ich per PC (außerhalb von TwinCat) die Beckhoff fernsteuern könnte. Sodass ich zum Beispiel unabhängig von einem auf die SPS geladenen Programm sagen könnte: schreibe diesen Wert in diesen Ausgang.
Oder noch besser: Das Programm läuft auf der SPS und ich kann am PC sagen Starte die Funktion A mit den Parametern x, y, z. Existieren derartige Fernsteurungen oder ähnliche Kommunikationsschnittstellen, die man mit Verhältnismäßig geringem Aufwand implementieren könnte?
 
Die Funktionsbausteine für das Arbeiten (öffnen, lesen, schreiben etc.) mit Dateien findest du in der System Lib von Beckhoff. Dann gibt es noch eine Reihe von String- Funktionen in der Standard Lib, die dir dabei helfen können deine Paramentersätze aus der Datei auszuwerten.

Was die Fernsteuerung der SPS Betrifft, was meinst du mit "geringem Aufwand"? Es gibt ADS Protokoll mit dem du auf Beckhoff Steuerungen von Außen zugreifen kannst. Beckhoff liefert hier die Kommunikationsbibliothek für alle gängigen Hochsprachen kostenlos. Man muss aber die Anwendung selber programmieren.
Als Alternative bietet sich natürlich der Einsatz einer Visualisierung an. Hier gibt es viele verschiedene Anbieter. Der Vorteil ist, man kann sich die Bedienoberflächen ohne große Programmierkenntnisse mehr oder weniger einfach zusammenklicken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist die Var die du einlesen möchtest immer gleich ? Also bspw vom Typ Int oder variiert das auch ? Sind es immer gleich viele ? Sonst wäre es denkbar bspw eine CSV Datei dafür zu nutzen. Würde dann vorschlagen entweder nur die Werte zu übergeben getrennt durch Semikolon oder halt was in der VarName; INT; 10
Das kannst du dann ja in deinem Prog auseinander sortieren. Hoffe habe ich richtig verstanden.
 
wenn du wirklich paramter aus einem file in die plc einlesen willst, ist der beste weg über xml. is sowohl auf sps als auch auf nutzer seite am einfachsten zu handhaben.
in einem Standard Textfile ist das natürlich auch kein problem, nur musst du vorher erst die strings zerlegen, konvertieren etc.
 
Zuletzt bearbeitet:
In dem Textfile hätte ich gerne die Variablenbezeichnung und dahinter den entsprechenden Wert, zB.: iIntegerVariable = 10.
- Zeile aus Textfile einlesen
- (wenn es keine leere Zeile war,) dann splitten beim '='
- wenn ein '=' gefunden wurde, dann beide Teilstrings trimmen (Leerzeichen vorn und hinten entfernen)
- mittels mehreren CASE den ersten Teilstring vergleichen mit Bezeichnern/Variablennamen und zugehörige Variable := String_to_int(zweiter Teilstring)

Man kann natürlich nicht wirklich den Variablennamen in das Textfile schreiben, um dann zur Laufzeit einen beliebigen Variablenname daraus zu entnehmen. Man kann nur den Variablen was zuweisen, welche in den CASEs vorbereitet sind.

Hier ist ein Beispiel, wie es mit VBS funktioniert. Du müsstest es "nur" in die Bausteine und Stringfunktionen von Beckhoff übersetzen.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
schau dir mal die Funktion "FB_EnumStringNumbers" in der TcUtilities.Lib an. Damit kannst du ganz einfach Zahlen aus einem String filtern. Denke das ist was du brauchst.

Gruß
 
Zurück
Oben