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

Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

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

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    kannst du mir das bitte bissl näher erklären oder nen guten link geben ? ^^
    so tief in der fehlersuche war ich bisher zum glück noch nie

    btw ... angenehmenes wochenende auch wenns sauwetter is
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

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

    Standard

    Die Funktion Checkbound funktioniert wie folgt:
    - Du legst eine Funktion mit den Namen Checkbounds an und kopierst den Code (wie du Ihn bereits gepostet hast) in die Funktion mit der Variablendeklaration.
    - Im Code würde ich jeweils bei den beiden "Fehler-IFs" entweder je eine globale boolsche Variable setzen oder je eine INT-Variable hochzählen lassen.
    -> Übersetzen und ausprobieren, weiter musst du nichts machen (Die Funktion muss NICHT aufgerufen werden, das macht TwinCAT selbst)

    Bitte beachte, dass die Auslastung massiv und sprunghaft steigen kann, was im schlimmsten Fall zu Zykluszeitüberschreitungen führen kann! Deshalb nur mit Vorsicht an realer Hardware ausprobieren. Solange die Funktion mitübersetzt wird (also nicht "vom Übersetzen ausschliessen" -> grüne Schrift) ist sie scharf...

    Code:
    IF index<lower THEN  
       CHECKBOUNDS := lower;
       -> giCheckBoundsLower := giCheckBoundsLower + 1;  
    ELSIF index>upper THEN  
      CheckBounds := upper;
       -> gbCheckBoundsUpper = TRUE; 
    ELSE
        CHECKBOUNDS := index; 
    END_IF

  3. Folgende 2 Benutzer sagen Danke zu gloeru für den nützlichen Beitrag:

    Bl000b3r (04.02.2013),Thomas_v2.1 (02.02.2013)

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

    Standard

    Moin Moin von der Front xD

    Also hab jetzt mal nen globalen Zähler probiert

    Code:
     IF index<lower THEN
     	   CHECKBOUNDS 	:= lower;
         igLow			:=igLow+1;
     ELSIF index>upper THEN
     	   CHECKBOUNDS 	:= upper;
         igHigh			:= igHigh+1;
     ELSE
     	  CHECKBOUNDS := index;
     END_IF
    Bekomme als Ergebnis igLow = 1 !
    Ich deute das jetzt so, dass ich Bereichsverletzung nach unten habe (Vermutlich irgendein [1...xy] array, was mit 0 initialisiert wird)7
    würde jetzt erstmal per hand auf die array schauen und dann ggf mal anfangen durchzutippen und zu schauen, wo der zähler auf 1 springt

    hoffe mal dass ich dann anhand der array grenzen die es mir bei low- und highindex ausgibt ich das array schneller finden kann
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

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

    Standard

    Setze doch einfach einen Breakpoint... Dann bleibt die Steuerung im Fall der Unterschreitung stehen und du kannst alle Arrayadressen prüfen!

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

    Bl000b3r (04.02.2013)

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

    Standard

    Habs ^^ Sowas dummes xD

    Der Index für den Zugriff auf mein [1..2] Array wird durch harte Ini's bestimmt:

    Code:
    	IF i1S9901 THEN
     	A 	:= 1;
     	B	:= 2;
    	ELSIF i1S9902 THEN
     	A	:= 2;
     	B	:= 1;
    	END_IF
    Und dieses Array wurde scheinbar eher geschrieben als die Variablen A / B schon definiert waren.
    Die Frage welches die beste Lösung ist ...

    * Hab die Abfrage der Ini's nun mit in die globalen Signale genommen (2. FB der in der Main aufgerufen wird) - so scheints zu gehen.
    * Die Zwei Index-Variablen A & B vordefinieren (könnte aber dazu führen, dass am Anfang das falsche Nest beschrieben wird)


    Jedenfalls kann ich endlich erstmal meine pers.Variablen speichern
    Es kommt nicht darauf an, mit dem Kopf durch die Wand zu rennen, sondern mit den Augen die Tür zu finden.

  8. #26
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Wenn es wirklich sicher sein soll, musst Du den Fall, dass beide Inis =0 sind, abfangen. Z. B. A und B vor dem Arrayzugriff auf Gültigkeit prüfen. Oder gibt es vielleicht noch mehr, was nicht laufen darf, solange die Position nicht eindeutig bestimmt ist?

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ne, die Position ist ja sowieso durch Arretierungen etc vorhanden und bis Druckluft vorhanden ist, weiß sie ihjre Position mit Sicherheit.

    Habe gerade nochmal den harten Gegentest gemacht und die Ermittlung der Indexvariablen auf den alten Stand gebracht - 152 Fehler bei LowIndex lol
    also hab ich spassenhalber mal das Array, welches Schuld ist, von [1..2] auf [0..2] erweitert mit Ergebnis LowIndex - 0 Fehler

    mach mir jetzt noch ne Hilfsvariable für die SChreibzugriffe, die abfragt ob (A=1 & B=2) ODER (A=2 & B=1) ... damit dürfte das Problem gelöst sein

    Danke für euer Geduld xD war mein erstes mal mit Checkbounds - aber muss sagn, gefällt die die Funktion
    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
  •