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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 27

Thema: TwinCat 2.11 (2228) persisentes Variablen Phänomen

  1. #1
    Registriert seit
    04.03.2011
    Beiträge
    77
    Danke
    15
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also erstmal Hallo ^^
    hab ja quasi noch nicht viel zur Hilfe hier beigetragen, habe dafür aber ein umso interessantes problem

    also vorab-information:
    *sitze nach feierabend aufm hotelzimmer
    * beckhoff support schon mehrmals kontakiert ... die einzigste service-hotline die einfach nur besetzt ist lol, wenn man jmd ranbekommt hat er keine ahnung oder man stört ihn scheinbar grad beim schaumbad, am ende heißt es nur "schicken sie es mal per email" ... danach heißt es immer die email ist nie angekommen könnt mittlerweile ausrasten, aber dafür ist ja beckhoff schon berühmt

    Nutzen Steuerungen des Typs CX1020-0122 mit Twincat v2.11 (Build 2228 )

    Nun zu meinem Problem:

    Es gab ein ein schlechtes vorlage-projekt. das hab ich glatt-gezogen und lief wie ein schweizer uhrwerk ^^
    nach dem transport zum kunden lief auch alles weiter glatt, bis ich bemerkte dass es ein problem bei peristenten variablen gibt, ich hoffe ich kanns gut beschreiben. hab auch schon andere threads zu dem thema hier gelesen daher vorne weg:

    die pers.vars werden vorm stoppen der sps auf den flashspeicher geschrieben ... dies funktioniert auch bei "fast" allen variablen problemlos, bis auf genau eine ... nennen wir sie "problemkind"

    das problemkind ist eine real variable, die über eine visualisierung (spidercontrol @ microbrowser) nur bei bedarf geschrieben werden kann, es handelt sich nur eine art referenz variable. die variable wird eim start der visualisierung auch nicht beschrieben sondern lediglich für die anzeige gelesen. im programm selber wird die variable nur an einer einzigen stelle für einen vergleich gelesen.

    So:
    Man kann die Variable über den PLC-Editor oder die Visu schreiben. Sie ist als peristente globale Variable deklariert. Wenn TwinCat aber neustartet sind alle pers.Vars korrekt vorhanden, nur das Problemkind steht auf einmal wider bei 0 !!!
    Also gingen die Versuche los ... die Visualisierung wurde für alle weiteren Versuche beendet.

    die variablen vor und nach dem problemkind waren alle entweder usint oder real werte ... also von oben angefangen durch nummerierte werte zu vergeben (10, 11, 12 ... usw). Die Variablen wurden erfolgreich geschrieben und Twincat anschließend über den Systemmanager neugestartet ... Die Nummerierung war noch vorhanden, nur das Problemkind stand wieder auf 0. Dieser prozess wurde weiter versucht, mit immer dem selben ergebnis.

    Danach haben wir das komplette Bootprojekt in der Steuerung gelöscht. Im Twincat verzeichnis den Ordner Boot ebenfalls per Hand geleert. Alle Dateien im Projekt bis auf die *.pro & *.tsm gelöscht, das Projekt komplett neu generiert - tpy Datei neu eingelesen - die ganze prozedur ^^ Bootprojekt neu erzeugen und los gings

    Die Variablen standen ja alle erstmal wieder bei 0 .. also wieder neu durchnummiert ... wieder war das problemkind nach neustart 0 ^^
    Das war der Punkt wo ich die Geduld verloren und mir meinen harten reset-knopf gewünscht hab ^^ aber ein kaffee später gingen die versuche weiter.

    Nun habe ich mir in einer virtuellen Maschine eine neue Demoversion von der selben TwinCat version installiert und das projekt in die demo-plc eingespielt und die selben versuche wie oben getätigt ... und lol das selbe problem ???
    Da kam wieder der punkt, nur diesmal hätte ich gern schnaps statt nen kaffee gehabt lol

    Brauche wohl kaum erwähnen, dass ein anderer Versuch in einer CX1020-0121 mit Twincat 2.11 aber wesentlich ältere build den selben effekt brachten.

    Wie gesagt ... die Variable wird nur EINMAL in programm GELESEN (!!!) und die Visualisierung war komplett beendet - 100%ig

    also habe ich angefangen allen persistenten variablen per hand feste speicherbereiche zuzuteilen, quasi per @MB... .
    danach die variablen mit nem einfach zu merkenden muster beschreiben und siehe da, das problemkind wird aufeinmal gespeichert ... ABER auf einmal wird die Variable, nenn wir sie "Problemkind2", im %MB12 nicht mehr gespeichert (zur sicherheit wurden alle zugriffe auf die variable in der plc auskommentiert).
    Da der support nicht reagiert und der kunde druck macht, habe ich auf MB12 erstmal eine dummy variable gelegt und das problemkind2 auf einen anderen speicherbereich gelegt. dort wird es erfolgreich gespeichert und wiederhergestellt.

    Zwischeninfo: ich habe beim übersetzen die überwachung für überlappende speicherbereiche und konkurrierende zugriffe aktiviert (ohne fehlermeldung ... immer)

    Danach habe ich angefangen weitere updates (ohne anlegen neuer persistenter variablen) einzuarbeiten. lief alles super bis ich merkte das aufeinmal wieder eine pers.var immer nach dem neustart 0 ist ... OMG wo ist mein kaffee ... wieder im speicherbereich verschoben, weiter gehts

    dies ist aber keine lösung, weils keiner verantworten kann das ding automatisch ohne aufsicht laufen zu lassen, weil keiner weiß wann die nächste variable ausfällt ^^

    Was denkt ihr woran es liegen kann ... es saßen schon 5 leute an dem projekt und konnten sich nicht erklären was da schief läuft.
    Einen defekt der Hardware oder im Speicher schließe ich aus, da dass Problem auf in der Soft-PLc aufm Laptop und in der älteren Ersatzsteuerung auftrat.
    Twincat selbst erkennt mit allen Zusatzoptionen beim Übersetzen 0 Fehler und 0 Warnungen.
    Die Biliotheken in der SPS und auf meinem Laptop sind in der gleichen Version.

    ich hatte die Vermutung das durch vielen Änderungen die im Ablauf nötig waren ein Bug beim übersetzen sich ins programm geschlichen, vlt bei der zuteilung der speicherbereiche etc ... aber als ich die einigermaßen funktionierende vorlage mal iweder eingepsielt habe gab es auch da auf einmal ein problemkind ... dessen position sich zwar scheinbar mit wachsenden oder schrupfenden programm-ausmaß verschiebt aber es gibt auf alle fälle IMMER ein problem kind

    ich bin ratlos ... willkommen im beckhoff-permuda dreieck xD wo emails verschwinden und probleme aus dem nicht auftauchen ^^
    Geändert von Bl000b3r (29.01.2013 um 23:34 Uhr)
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.
    Zitieren Zitieren TwinCat 2.11 (2228) persisentes Variablen Phänomen  

  2. #2
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Bl000b3r Beitrag anzeigen
    also vorab-information:
    *sitze nach feierabend aufm hotelzimmer
    * beckhoff support schon mehrmals kontakiert ... die einzigste service-hotline die einfach nur besetzt ist lol, wenn man jmd ranbekommt hat er keine ahnung oder man stört ihn scheinbar grad beim schaumbad, am ende heißt es nur "schicken sie es mal per email" ... danach heißt es immer die email ist nie angekommen könnt mittlerweile ausrasten, aber dafür ist ja beckhoff schon berühmt
    Viel schlimmer als der eigentlich beschriebene Fehler scheint das Verhalten der Hotline von Beckhoff zu sein. Und dabei ist es doch gerade die Firma, die in letzter Zeit doch sehr auf den Putz haut. Lesen die hier eigentlich mit?

    Frank
    Grüße Frank

  3. #3
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    750
    Danke
    27
    Erhielt 165 Danke für 143 Beiträge

    Standard

    Wenn der Beckhoff-Support die letzte Hoffnung ist, steht man tatsächlich am Abgrund. Scheint personell uind fachlich nicht mit den Umsatzsteigerungen der letzten Jahre mitgewachsen zu sein.
    Aber was soll ein Support-Hotliner denn zu Deinem Problem sagen? Deine Versuchsergebnisse lassen wohl eher auf einen Fehler im Anwendungsprogramm schliessen, vermutlich ein Pointer-Problem. Was passiert denn, wenn Du das Ganze mit einem leeren Programm laufen lässt?

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Tritt denn dein Problem auch auf, wenn nu nur die persistenten Daten nimmst, das gesamte Programm aber löscht.
    Damit könnte man erst einmal ermitteln, ob dein Programm vielleicht doch irgendwo über Speicheradressierung an den falschen Daten manipuliert.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Bl000b3r (30.01.2013)

  6. #5
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Schon mal das Projekt zur Analyse gepostet?

  7. #6
    Registriert seit
    04.03.2011
    Beiträge
    77
    Danke
    15
    Erhielt 6 Danke für 6 Beiträge

    Standard

    @Ralle:

    das hab ich auch probiert ... nur die ganzen Variablendeklarationen und nur eine MAIN(PRG) mit nem Semikolon.
    Dabei speichert es die persistenten Daten scheinbar problemslos, nachdem ich aber einfach wieder den Rest des Programms einspiel ist der Bug wieder da.
    Aber wie schon gesat, scheinbar verschiebt sich der Bug je nachdem wieviel Programmtext enthalten ist.
    Habe dann auch ALLE Zugriffe auf die betroffenen Variablen auskommentiert, so dass per Querverweis nur noch die Deklaration zu finden ist ... hat alles nix gebracht

    Habe auch schonmal den Speicher für Variablen etc erhöht, ohne Erfolg

    @FX64:
    Das geht auf garkeinen Fall, ich würds ja gern, weils das beste wäre, aber hab doch bei industrieprojekten ne geheimhaltungspflicht
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

  8. #7
    Registriert seit
    29.09.2006
    Beiträge
    368
    Danke
    0
    Erhielt 41 Danke für 38 Beiträge

    Standard

    Kann ich nicht glauben, das es an der Größe vom enthaltenen Code abhängig ist. Wird denn wirklich nichts überschrieben? Kanidaten sind auch memcpy und POINTER TO

  9. Folgender Benutzer sagt Danke zu Fx64 für den nützlichen Beitrag:

    Bl000b3r (30.01.2013)

  10. #8
    Registriert seit
    04.03.2011
    Beiträge
    77
    Danke
    15
    Erhielt 6 Danke für 6 Beiträge

    Standard

    ja keine ahnung. hatte ja später noch weitere fb's eingefügt und plötzlich hat es eine weitere variable getroffen ... geschrieben werden sicher nirgends.
    befehle wie memcpy und pointer to nutz ich nicht. Nutze lediglich MemSet auf eine Struktur um diese abzulöschen. aber durch die adr() und sizeof() sollte ja eigentlich ein überschreiben anderer variablen verhindern oder ?
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

  11. #9
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Kurz zusammengefasst:
    • Auf beliebigen Speicherplätzen werden Variablen beim Schreiben der Persistenten Daten verändert
    • Hardwareunabhängig
    • Allen Code auskommentiert -> kein Fehler


    Die Situation scheint verzwickt, wobei auch ich vermute, dass du irgendwie auf Speicher schreibst...
    Um dir auf der Baustelle möglichst bald zu helfen folgende Vorschläge/Fragen um in einer Testumgebung zu prüfen:

    • Was passiert, wenn du statt die Steuerung auszuschalten nur das TwinCAT System (->Icon in Taskliste) stoppst
    • Versuche mal herauszufinden, ob die Anzahl Zyklen die abgearbeitet werden eine Rolle spielen. (PLC starten, und sofort stoppen, dann System stoppen) - Oder sogar den Code nur einmal mit CTRL+ F5 ablaufen lassen!
    • Nimm Scope 1 oder 2 und trace die Problemkinder. Werden diese vor der Ausschalten noch verändert?
    • Was passiert wenn du den Variablenname änderst?

    Hier wären noch weitergehende Vorschläge:
    • Implementiere doch mal die Funktion CheckBounds. Und da einen globalen Zähler hochzählen lassen. (Array-Grenzen überwachen)
    • Ev. mal die ADS Kommunikation mit dem ADS überwachen, nicht das "irgendwas Fremdes" auf den Speicher zugreifft.

  12. Folgender Benutzer sagt Danke zu gloeru für den nützlichen Beitrag:

    Bl000b3r (30.01.2013)

  13. #10
    Registriert seit
    04.03.2011
    Beiträge
    77
    Danke
    15
    Erhielt 6 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    OK erstmal Danke, muss dass erstmal in Ruhe durchlesen. Waren nach Feierabend zusammen beim Griechen xD

    Deine Zusammenfassung trifft es ziemlich genau.
    * Ich habe aus Zeitgründen das Neustarten der Steuerung immer über den einfachen Systemstop - Systemstart bzw. einfach Neustart gemacht
    * Einzelschrittbetrieb kann ich auf der richtigen steuerung nicht machen, weil twinsafe da sofort die steuerspannung raus haut xD Werde es aber morgen mal auf der Soft-Plc mitm Laptop ausprobieren
    * Scopeview einfach mitlaufen zulassen ist auch ne gute idee, vlt wird ja wirklich was in den ersten zyklen geschrieben was man so nicht mitbekommt (Scope1)

    *Variablenname habe ich schon geändert: Nach dem Ändern des Namens (Global also auch alle Querverweise) kann die Variable korrekt beschrieben und gespeichert werden. Das komische ist nur, als ich danach die Variable wieder umbenannt habe, d.h. den ursprünglichen namen, konnte ich die variable nicht mal mehr schreiben !!! lediglich forcen ging, aber sobald das forcen aufgehoben wurde, ging die variable wieder auf 0 zurück

    Scheise, wäre einfacher wenn ichs posten könnt ^^
    Werd morgen mal diverse Dinge die genannt wurden Stück für Stück ausprobieren und danach nochmal ein kommentar abgeben

    btw: habe heute das 4. mal (!!!) das projektarchiv an support geschickt ... man kriegt weder eine empfangs- noch eine lesebestätigung zurück
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

Ähnliche Themen

  1. TwinCat Visu mehrere Variablen
    Von preuss im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 09.01.2011, 21:10
  2. C#-Variablen in TwinCAT lesen und Schreiben
    Von kcirtap im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 29.11.2010, 10:18
  3. TwinCat HMI Web / Globale Variablen gesucht!
    Von Shlomi im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 03.09.2010, 17:38
  4. TwinCat Variablen Online ändern
    Von Bambam im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 11.08.2010, 17:12
  5. TwinCat - Variablen E/A Kanälen zuweisen für BC9000
    Von sashluc im Forum Sonstige Steuerungen
    Antworten: 3
    Letzter Beitrag: 06.03.2006, 19:17

Lesezeichen

Berechtigungen

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