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

Ergebnis 1 bis 8 von 8

Thema: CoDeSys: Programmbearbeitung Simulation und WAGO PLC?

  1. #1
    Registriert seit
    17.09.2008
    Beiträge
    97
    Danke
    19
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich bin vor kurzen auf ein Problem gestoßen bei dem ich nicht so richtig weiter gekommen bin. Vieleicht könnt Ihr mir helfen.

    Ich habe folgendes Programm:
    Code:
    VAR
        DURCHFAHRZEIT: TIME;
        STRECKE: INT:= 20;
        GESCHWINDIGKEIT: INT:=30;
    END_VAR
    
    DURCHFAHRZEIT:=INT_TO_TIME(STRECKE*3600/GESCHWINDIGKEIT);
    In der Simulation bekomme ich das mathematisch richtige Ergebnis T#2s400ms.
    Lade ich das Ganze auf meine PLC (WAGO750-819) bekomme ich das logisch richtige Ergebnis T#225ms (wegen des überlauf der INT Variable).

    Warum bekomme ich im CoDeSys kein Typenkonflikt bzw. warum rechnet die Simulation "falsch".
    Zitieren Zitieren CoDeSys: Programmbearbeitung Simulation und WAGO PLC?  

  2. #2
    Registriert seit
    25.02.2010
    Beiträge
    639
    Danke
    36
    Erhielt 126 Danke für 115 Beiträge

    Standard



    Test_INT.pdf

    Ist bei mir nicht so.
    Holger

  3. #3
    Registriert seit
    17.09.2008
    Beiträge
    97
    Danke
    19
    Erhielt 4 Danke für 4 Beiträge

    Standard

    sehr merkwürdig
    bei mir sieht es wie o.g. so aus.
    programm.jpg

    Simulation:
    simulation.jpg

    mit WAGO PLC:
    wago.jpg
    Geändert von El Cattivo (14.10.2014 um 07:05 Uhr)

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    757
    Danke
    27
    Erhielt 166 Danke für 144 Beiträge

    Standard

    Da wird wohl die Simu trotz INT mit 32-Bit-Registern rechnen, die PLC dagegen mit 16 Bit. Mit STRECKE als DINT sollte das Problem erledigt sein.

  5. #5
    Registriert seit
    21.02.2011
    Ort
    Deutschland, Baden-Würtemberg
    Beiträge
    995
    Danke
    115
    Erhielt 129 Danke für 102 Beiträge

    Standard

    Einfach keinen "Überlauf" erzeugen
    Der Simu traue ich sowieso nie. Ich hab hier meine kleine DEMO Station, die ich zum "simulieren" nutze,

  6. #6
    Registriert seit
    17.09.2008
    Beiträge
    97
    Danke
    19
    Erhielt 4 Danke für 4 Beiträge

    Standard

    najaholgermaik schrieb, dass seine 32 Bit das selbe Verhalten wie die Simulation zeigt.
    Ich weis nur nicht so recht was ich davon halten soll, dass die CPU den Überlauf ignoriert.

  7. #7
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.709 Danke für 1.240 Beiträge

    Standard

    Zitat Zitat von El Cattivo Beitrag anzeigen
    Warum bekomme ich im CoDeSys kein Typenkonflikt bzw. warum rechnet die Simulation "falsch".
    Es gibt keinen Typkonflikt:
    STRECKE => INT
    3600 => INT
    GESCHWINDIGKEIT => INT

    Alle Operationen werden im Datentyp INT vorgenommen. D.h. du bist dafür verantwortlich dass deine Operanden den Wertebereich einhalten.
    Ich glaube das Überlaufverhalten ist bei ST / IEC ähnlich festgelegt wie bei C, nämlich "undefiniert". D.h. es kann alles passieren.

  8. #8
    Registriert seit
    13.10.2013
    Ort
    shertogenbosch niederlande
    Beiträge
    120
    Danke
    0
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Thomas_v2.1 Beitrag anzeigen
    Es gibt keinen Typkonflikt:
    STRECKE => INT
    3600 => INT
    GESCHWINDIGKEIT => INT

    Alle Operationen werden im Datentyp INT vorgenommen. D.h. du bist dafür verantwortlich dass deine Operanden den Wertebereich einhalten.
    Ich glaube das Überlaufverhalten ist bei ST / IEC ähnlich festgelegt wie bei C, nämlich "undefiniert". D.h. es kann alles passieren.
    und nicht nur das:
    es sind zwei INT, das resultat ist aber eine float immer.
    also
    Code:
    DURCHFAHRZEIT:=INT_TO_TIME(STRECKE*3600/GESCHWINDIGKEIT);
    
    eigentlich 
    soll 3600 auch ein INT sein
    stunde = 3600 :INT;
    und dann strecke*stunde gibt ein stundstrecke : INT;
    dann stundstrecke/gesschwindigkeit gibt eine REAL
    und dan den REAL_TO_TIME soll immer die richtige geben.

Ähnliche Themen

  1. TIA Simulation von HMI und PLC im TIA
    Von BlueDogi im Forum Simatic
    Antworten: 44
    Letzter Beitrag: 09.05.2017, 08:48
  2. CoDeSys v3 und WAGO Targets
    Von dast im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 02.08.2012, 09:55
  3. Antworten: 0
    Letzter Beitrag: 08.04.2011, 03:55
  4. PLC-Sim simulation
    Von zloyduh im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 23.09.2010, 10:36
  5. Codesys (Wago) und OPC
    Von Tennar im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 06.03.2006, 09:52

Lesezeichen

Berechtigungen

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