Problem mit ARRAY

Slawa
2008-08-29
2008-09-08
  • Slawa - 2008-08-29

    Hallo,

    ich habe eine Frage. Ich bekomme alle 5 Sek. eine Antwort (Type REAL) vom Sensor. Weiter möchte ich diese Antworten als Tabelle (oder Trend) visualisieren.

    z.B.: 11h23m10s - 22.3

          11h23m15s - 22.8  usw.
    

    Wie kann ich richtig ARRAY schreiben? Gibt es irgendwo ein Beispiel?

    Ich benutze Feldbus-Controller 750-841 und die serielle Schnittstelle RS232.

    Könnten Sie mir dabei helfen?

     
  • Slawa - 2008-08-29

    Weiss jemand, wie ich in CoDeSys dieses ARRAY schreiben kann?

    Danke im voraus!

     
  • enra - 2008-08-29

    Datentyp Wert anlegen:

    TYPE Wert :

    STRUCT

    Zeit:TOD;
    
    Messwert:REAL;
    

    END_STRUCT

    END_TYPE

    Programm Anlegen:

    PROGRAM Messwerte

    VAR

    Messwerte:ARRAY [0..100] OF WERT;
    
    Zeiger:INT;
    
    neue_Messung:BOOL;
    
    PF_N:R_TRIG;
    
    aktuelle_Zeit:TOD;
    
    Messwert:REAL;
    

    END_VAR

    (Messert ablegen )

    IF PF_N.Q THEN
    
        Messwerte [1].zeit:=aktuelle_Zeit;
    
        Messwerte [1].Messwert:=Messwert;
    
        Zeiger:=Zeiger+1;
    
    END_IF;
    

    das ARRAY muss nach der Anzahl der Messwerte bemessen werden.....

     
  • Slawa - 2008-08-29

    Herzlichen Dank für die Hilfe!

    Ich werde so probieren.

     
  • Slawa - 2008-09-01

    Hallo,

    ich habe so meine Variablen dargestellt. Wenn ich aber 'alles Ãœbersetzen' mache, bekomme ich 'Fehler 3781'. Ich habe Fehler nicht gefunden.

    PROGRAM PLC_PRG
    VAR
    ( Communicationparams for 750-65x/003-000 only)
    ptString : POINTER TO STRING;
    Temp : REAL;

    ( COM2 ******)
    COM2 : SERIAL_INTERFACE;
    xOpenPort2 : BOOL := TRUE;
    xInitPort2 : BOOL;
    xSendActive2 : BOOL;
    SendString2 : STRING := 'ReadT$R';
    ReceiveBuffer2 : typRing_Buffer;
    ReceiveString2 : STRING(255);
    Error : BYTE;
    (
    Blink----------------------------------------------------------)
    Blinker : BLINK;
    Timerimpuls : TIME:=T#1s;
    Timerdauer : TIME:=T#3s;
    Starttimer : BOOL;
    (
    --------- Messwerte----------------------------------------)
    TYPE
    Antwortwert :
    STRUCT
    Zeit : TOD;
    Messwert : REAL;
    END_STRUCT
    END_TYPE
    Mess_massiv : ARRAY[0..100] OF Antwortwert;
    m : INT; (
    Zeiger*)
    aktuelle_Zeit :TOD;
    END_VAR

    Danke im voraus!

     
  • Andreas Stampa - 2008-09-01

    Hallo Slawa,

    der Teil

    TYPE

    Antwortwert :

    STRUCT

    Zeit : TOD;

    Messwert : REAL;

    END_STRUCT

    END_TYPE

    muss unter dem Reiter Datentypen eingetragen werden, nicht bei der Variablendeklaration, weil es eine Typdefinition ist.

     
  • enra - 2008-09-01

    Blinker : BLINK; --> Blink?

    dei Struktur "Antwortwert" muss als Datentyp deklariert werden

     
  • Slawa - 2008-09-01

    Danke für die Hilfe!

     
  • Slawa - 2008-09-01

    Hallo,

    wie kann ich aktuelle Datum und Uhrzeit darstellen?

    Danke im voraus!

     
  • enra - 2008-09-01

    Zeit darstellen oder lesen?

    Uhrzeit lesen mit "SysRtcGetTime" hier im Forum schon oft beschrieben

     
  • Slawa - 2008-09-01

    Ich möchte Uhrzeit lesen.

    Danke für die Hilfe!

     
  • hugo - 2008-09-01

    hallo slawa,

    zahllose bausteine sowie beispiele und source code dazu findest du in der open source library von oscat

    download unter w www.oscat.de w

     
  • Slawa - 2008-09-02

    Hallo,

    ich habe FB 'SysRtcGetTime' in "library reference 276" nicht gefunden. Weiss jemand, wo ich FB 'SysRtcGetTime' finden kann?

    Danke im voraus!

     
  • hugo - 2008-09-02

    die sysrtcgettime bekommst du von wago sie ist bei den target libraries dabei und ist spezifisch für wago controller andere controller benötigen andere bausteine um die systemzeit zu lesen

     
  • Slawa - 2008-09-02

    Es funktioniert!

    Danke für die Hilfe.

     
  • Slawa - 2008-09-05

    Hallo,

    ich habe die Echtzeituhr so beschrieben:

    VAR
    SysDate: DATE;
    SysTag: UINT;
    SystemTimeDate1: SystemTimeDate;
    SystemTime1: SysTime64;
    SysTOD: TOD;
    Echtzeit: DT;
    CurTimeEx1: CurTimeEx;


    CurTimeEx1( SystemTime:=SystemTime1, TimeDate:=SystemTimeDate1);
    SysTag:=SystemTimeDate1.DayOfWeek; ( Wochentag: 0=Sonntag, 1=Montag,...... )
    Echtzeit:=SysRtcGetTime(1); ( Zeit + Datum holen )
    SysDate:=DT_TO_DATE(Echtzeit); ( Datum auslesen)
    SysTOD:=DT_TO_TOD(Echtzeit); ( TOD=Time of Day auslesen )

    Aber ich bekomme um 1 Std. die Zeitverschiebung. Kann mir jemand sagen, wo ich Fehler gemacht habe?

    Danke im Voraus!

     
  • Slawa - 2008-09-05

    Kann mir jemand dabei helfen?

    Danke im Voraus!

     
  • debug - 2008-09-05

    Hast Du die Sommerzeit berücksichtigt? Die Uhrzeit im Koppler ist UTC und hier in D-Land ist es UTC +1 Stunde +1 Stunde Sommerzeit.

     
  • debug - 2008-09-08

    Damit geht das bei mir:

    Echtzeit := SysRtcGetTime(dummy);
    Echtzeit_String:=DT_TO_STRING(Echtzeit);
    
     

Log in to post a comment.