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

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

Thema: Das Vergleichen von Werten funktioniert einfach nicht?!

  1. #21
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Tja ... wenn man mal davon absieht, dass ich nicht auf die Idee käme so etwas so zu programmieren, sieht es erstmal nicht verkehrt aus.
    Wenn ich mich nun auf die Generierung der Uhrzeit, wie von dir beschrieben, stütze dann kann es aus dem von HaDi genannten Grund nur dann zu einer passenden Übereinstimmung kommen wenn du in der Minuten und/oder Stunden-Stelle unter dem Wert von 10 bleibst. Bei größer 10 kommt der von HaDi beschriebene Effekt zum tragen, wo eben aus 13:15 Uhrt nicht Hex1315 sondern Hex0D0F wird. Das klappt dann mit dem Vergleichen natürlich nicht. Hier wäre dann Anpassungs-Arbeit gefragt und wahrscheinlich ist daaaas auch schon der Grund warum es nicht wie gewünscht funktioniert. Mit FB vs. FC hat das jedenfalls nichts zu tun ...

    Gruß
    Larry

  2. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    S7Sync (23.11.2011)

  3. #22
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Tja ... wenn man mal davon absieht, dass ich nicht auf die Idee käme so etwas so zu programmieren, sieht es erstmal nicht verkehrt aus.
    meinst du die AWL Quelle oder das Format der Uhrzeit in den Bytes?
    Geändert von S7Sync (23.11.2011 um 18:51 Uhr)

  4. #23
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Tja ... wenn man mal davon absieht, dass ich nicht auf die Idee käme so etwas so zu programmieren, sieht es erstmal nicht verkehrt aus.
    Wenn ich mich nun auf die Generierung der Uhrzeit, wie von dir beschrieben, stütze dann kann es aus dem von HaDi genannten Grund nur dann zu einer passenden Übereinstimmung kommen wenn du in der Minuten und/oder Stunden-Stelle unter dem Wert von 10 bleibst. Bei größer 10 kommt der von HaDi beschriebene Effekt zum tragen, wo eben aus 13:15 Uhrt nicht Hex1315 sondern Hex0D0F wird. Das klappt dann mit dem Vergleichen natürlich nicht. Hier wäre dann Anpassungs-Arbeit gefragt und wahrscheinlich ist daaaas auch schon der Grund warum es nicht wie gewünscht funktioniert. Mit FB vs. FC hat das jedenfalls nichts zu tun ...

    Gruß
    Larry

    diese "Art" der Uhrzeitdarstellung hat sich so ergeben, da beim Auslesen der Systemzeit es so realisiert wurde das über Arbeitsregister der Wert ToD (glaube ich) aufgesplittet wurde und dann steht das Jahr in einem Byte der Monat in einem Byte die Stunde usw..
    Idealerweise hätte es eine S5T oder Time sein können

    Zum Format:
    Ja, es ist kaum zu glauben. ABER in der Onlineansicht steht im DB200.DBW28 dann tatsächlich für 18:38Uhr der Wert w#16#1838 drin. das ist doch kein Hexcode oder? Ich werd es mal mit der Variablentabelle ausprobieren, das habe ich noch nicht versucht.
    Was aber sehr verdächtig ist, beim Umschalten der Darstellung (in der Onlineansicht) auf Dezimal ändert sich der Hexcode in Dez UND der Wert aus der #Uhrzeit Variable in Hex?! Das hab ich so auch noch nicht gesehen.

    Evtl bringt es was wenn ich den Code hochlade wie die Uhrzeit ausgelesen wird, vielleicht klemmt es schon an dieser Stelle?

    mfg

  5. #24
    Registriert seit
    01.11.2007
    Beiträge
    1.237
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard

    Zitat Zitat von S7Sync Beitrag anzeigen
    ... steht im DB200.DBW28 dann tatsächlich für 18:38Uhr der Wert w#16#1838 drin. das ist doch kein Hexcode oder?
    Ich nenn´ das BCD ...

    Grüße von HaDi

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

    S7Sync (23.11.2011)

  7. #25
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    Zitat Zitat von HaDi Beitrag anzeigen
    Ich nenn´ das BCD ...

    Grüße von HaDi
    OK, war mir nicht bewusst.
    Ich werd mal mit den Formaten "spielen" und die Erkenntnis dann hier Kunt tun

    Bis später

  8. #26
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    sorry, Fehlinformation!
    es steht nicht W#16#1240 sondern B#16#1240 in Onlinestatus, handelt es sich trotzdem um BCD?

    Tatsächlich werden die Werte in der VAT (DB200.DBW2 mit Anzeigeformat HEX so angezeigt: W#16#936 für 9:36Uhr angezeigt, was in DEZ was ganz anderes ist.....
    Wie kann ich die Werte so formatieren das Sie für mich verwertbar sind?
    z.Z. wird die Stunde im DB200.DBB28 abelegt hex B#16#11 für 11Uhr
    die Minute im DB200.DBB29 hex B#16#34 für 34min

    wie lässt sich aus diesen beiden Bytes ein sinnvolles Zeitformat erstellen damit 11:34 in einem WORD steht?

    Hier mal die AWL-Quelle wie es realisiert wurde, die Uhrzeit auszulesen:


    FUNCTION "Sys_Time" : VOID
    TITLE =Datum und Uhrzeit
    AUTHOR :
    VERSION : 0.1

    VAR_TEMP
    Date_Time : DATE_AND_TIME ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    //Systemzeit und Datum im Format "date_and_Time" auslesen
    CALL "SFC_READ_CLK" (
    RET_VAL := "SYS_M 254",
    CDT := #Date_Time);
    NOP 0;

    NETWORK
    TITLE =
    //Datum und Uhrzeit splitten und in Bytes ablegen
    LAR1 P##Date_Time; // Adresse ins Arbeitsregister laden
    L B [AR1,P#0.0]; // Jahr lesen und im
    T "DB_Datum und Uhrzeit".Jahr; // Byte 25 ablegen
    L B [AR1,P#1.0]; // Mont lesen und im
    T "DB_Datum und Uhrzeit".Monat; // Byte 26 ablegen
    L B [AR1,P#2.0]; // Tag lesen und im
    T "DB_Datum und Uhrzeit".Tag; // Byte 27 ablegen
    L B [AR1,P#3.0]; // Stunde lesen und im
    T "DB_Datum und Uhrzeit".Stunde; // Byte 28 ablegen
    L B [AR1,P#4.0]; // Minute lesen und im
    T "DB_Datum und Uhrzeit".Minute; // Byte 29 ablegen
    L B [AR1,P#5.0]; // Sekunde lesen und im
    T "DB_Datum und Uhrzeit".Sekunde; // Byte 30 ablegen
    L W#16#FFF0; // Überlagerung
    L W [AR1,P#6.0]; // Jahr lesen und im
    T "DB_Datum und Uhrzeit".Millisekunde; // Word 32 ablegen
    L B#16#F; // Überlagerung
    L B [AR1,P#7.0]; // Jahr lesen und im
    UW ;
    T "DB_Datum und Uhrzeit".Wochentag; // Byte 34 ablegen
    CLR ;
    END_FUNCTION

    Danke schonmal im Voraus.

    mfg

  9. #27
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Beitrag

    So, nun alles auf Anfang

    Ich habe mit dem SFC1 die Systemzeit jetzt im TOD Format ausgelesen, die BCD Darstellungsvariante wie sie bislang realisiert wurde lasse ich unberücksichtigt.
    Jetzt klappt auch der Vergleich, da ich TOD mit TOD vergleichen kann. Der Versuch war auch erfolgreich!

    Dennnoch vielen Dank für Eure Unterstützung!

    Jetzt muss ich nur noch sehen wie ich aus der WinCCflex einen Wert im TOD Format bekomme...

    mfg

  10. #28
    Registriert seit
    18.11.2011
    Ort
    Taufkirchen/Vils
    Beiträge
    8
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Lächeln

    Hallo

    Probier mal folgendes aus

    O(
    L #Ein_Wert
    L #Aktuellzeit
    ==D
    )
    O(
    L #Ein_Wert
    L #Aktuellzeit
    ==I
    )
    = #Ein

    O(
    L #Ein_Wert
    L #Aktuellzeit
    ==D
    )
    O(
    L #Ein_Wert
    L #Aktuellzeit
    ==I
    )
    = #Aus

    Was hast du für eine CPU? hast du den Instanz DB neu generiert und übertragen?
    Wenn Du nur ein word mit ==D oder ==I vergleichts ist das normal format egal,oder nicht....

    Probier einfach einmal einen freien Merker für Ein/Aus dann weist Du ob das bit vom Instanz DB nicht zweimal verwendet wird.

    mach einfach einmal einen Anhang mit deinem FB vieleicht kann ich Dir helfen.

    mfg
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Vergleicher  

  11. #29
    S7Sync ist offline Benutzer
    Themenstarter
    Registriert seit
    15.11.2010
    Beiträge
    76
    Danke
    21
    Erhielt 0 Danke für 0 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von simon111173 Beitrag anzeigen

    Was hast du für eine CPU? hast du den Instanz DB neu generiert und übertragen?
    mach einfach einmal einen Anhang mit deinem FB vieleicht kann ich Dir helfen.
    Hallo,

    ich habe eine 3152DP (alte Bauform), ja den IDB habe ich immer neu generieren lassen und danach übertragen. Es lag ein Formatproblem vor, ich lese nun die Systemzeit separat aus und verwende jetzt das Format ToD, es funktioniert nun.
    Zur Zeit bin ich gerade dabei den FB "umzubauen" damit es mit dem neuen Format klappt.
    Wenn es dann immernoch "klemmt" komm ich gern auf dein Angebot zurück.
    Vielen Dank.

    mfg

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 27.05.2010, 20:27
  2. Ich weis einfach nicht weiter...!!
    Von HelpMe im Forum Stammtisch
    Antworten: 21
    Letzter Beitrag: 19.05.2009, 21:26
  3. Auswertfunktion will einfach nicht funktionieren :(
    Von DunkDream im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 25.03.2009, 20:17
  4. Timer läuft einfach nicht...
    Von slma im Forum Simatic
    Antworten: 42
    Letzter Beitrag: 16.07.2007, 08:21
  5. abhängiges Zuweisen von Werten.Vergleichen
    Von ElektronikJack im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 17.11.2006, 10:10

Lesezeichen

Berechtigungen

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