Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Parametersatz speichern/laden im Klartext

  1. #1
    Registriert seit
    25.03.2013
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich habe eine WAGO Steuerung (Target-Visualisierung CP121-SVGA-TV) mit CoDeSys V2.3. Es geht um eine Anlagensteuerung bei der ich mehrere Parametersätze benötige und diese individuell in der Oberfläche laden/speichern müsste.

    Aktuell habe ich mir so beholfen: Ich habe einen Datentyp (Struct) erstellt, in dem ich alle benötigten Parameter ablege:

    Code:
            dwHandler := SysFileOpen(FileName := strFileName, Mode:='w');        
            IF dwHandler > 0 THEN
                dwBytes_Written:=SysFileWrite(File:=dwHandler, Buffer := ADR(Parameter), Size:=SIZEOF(Parameter));
                xWritten_Ready:=SysFileClose(File:=dwHandler);
                xWritten_Error:=FALSE;
            ELSE
                xWritten_Error:=TRUE;
            END_IF
    Die Daten liegen nun in der Datei strFileName vor, jedoch in einem Format, dass ich z.B. am PC nicht anschauen editieren kann. Wenn ich nun den Parameter wieder zurücklese funktioniert das nun auch soweit. Wenn jedoch in der Anlage z.B. ein neuer Parameter definiert wurde, demnach der Datentyp erweitert wurde sind alle hinterlegten Datensätze futsch, da Sie nicht gelesen werden können wg. der geänderten Struktur. Ist ja eigentlich auch einleuchtend. Da ich eine Änderung nicht ausschließen kann, muss ich daher einen anderen Weg finden die Daten zu speicher und am besten so, dass die Parameterdatei auch an einem Windows PC lesbar ist. Leider habe ich schon viel gesucht und keine wirkliche Lösung bzw. gute Ansätze gefunden.

    Hat hier vielleicht jemand eine Idee was man hier machen könnte?
    Zitieren Zitieren Parametersatz speichern/laden im Klartext  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Du könntest den Datensatz in einer Textdatei im (old-Windows-Style) INI-Format speichern:
    Code:
    Parametername1=Test-Datensatz 03.07.2014
    Parametername3=45.678
    Parametername2=123
    Beim Einlesen in die Steuerung zunächst einen Datensatz mit Standardwerten belegen (Template) und dann die Textdatei Zeile für Zeile parsen.
    Später dazugekommene bzw. nicht in der Datei enthaltene Parameter behalten den Standardwert.


    Mit mehr Aufwand könntest Du die Textdatei auch im neumodischen XML-Format aufbauen. Vielleicht gibt es aber dafür schon einen fertigen Parser?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    marlik83 (03.07.2014)

  4. #3
    marlik83 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.03.2013
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,

    japp, das klingt gut. Ich sehe aktuell nur noch ein Problem. Wie kann ich es machen, dass in den entsprechenden Parameter der Wert dann geschrieben wird?

    Parameter Parametername1 soll aus der csv gelesen werden und in das entsprechende STRUCT "Parameter" mit gleichnamigen Element geschrieben werden. Soll heißen:

    Er findet in der CSV Datei:
    ParameterTest=234.0

    und soll daraus
    Parameter.ParameterTest := 234.0 machen, dass also der Wert im Struct abgelegt wird.

    Aktuell liegen alle Parameter in dem Struct Parameter drin, oder wie würdest du die Sache geschickter angehen? Das Parsen der CSV schau ich mir gerade an, hab ich bisher in CoDeSys noch nie genutzt.

    Danke schonmal!

  5. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Von Dateioperationen in Codesys habe ich keine Ahnung. Das Einlesen von INI-Dateien mache ich mit VBS.

    Du müßtest die Datei
    - zeilenweise einlesen
    - am '=' splitten
    - ggf. führende/endende Leerzeichen entfernen (trimmen)
    - den String vor dem '=' vergleichen, ob er einem Parametername entspricht (eventuell CASE-Anweisung möglich)
    - den Wert nach dem '=' von Text in numerisch umwandeln und dem Parameter zuweisen

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #5
    Registriert seit
    24.02.2009
    Beiträge
    1.242
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In Codesys funktioniert das auch, aber da gibt es leider keine String.Split() Funktion. Die muss man sich aus den gegebenen String-Funktionen selber basteln.
    Mit FIND kann man die Position des '= ' im String finden und dann mit LEFT und RIGHT den Parameternamen und den Wert aus dem String kopieren.
    Etwas kniffelig wird es wenn man mögliche Fehleingaben abfangen will. Die Konvertierungsfunktionen in CodeSys zeigen einem leider nicht an ob der zu wandelne String gültig ist oder nicht. Wenn der String nicht passt, kommt bei umwandlung in eine Zahl einf nur 0 raus.
    String_To_Int ('0') = 0
    String _To_Int('sreghhtzh2435') = 0

Ähnliche Themen

  1. laden bzw. speichern von Arrays
    Von suntmaster im Forum CODESYS und IEC61131
    Antworten: 6
    Letzter Beitrag: 16.08.2012, 23:09
  2. Umstieg von KEB zu Danfoss FU frage zu Parametersatz
    Von Brandtechniker81 im Forum Antriebstechnik
    Antworten: 7
    Letzter Beitrag: 15.01.2009, 14:20
  3. Parametersatz ACS88 // ABB
    Von markai im Forum Antriebstechnik
    Antworten: 0
    Letzter Beitrag: 22.10.2007, 14:28
  4. Parametersatz wahl bei VLT2875 (Danfoss Fu)
    Von uz71 im Forum Feldbusse
    Antworten: 0
    Letzter Beitrag: 21.02.2007, 15:38
  5. Rezepte per Schaltfläche laden/speichern
    Von Anonymous im Forum HMI
    Antworten: 6
    Letzter Beitrag: 30.03.2005, 13:02

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •