Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

diagramm

Cutty
2009-08-13
2010-05-21
  • Cutty - 2009-08-13

    hallo

    gibt es visualisierungselemente, bei denen ich kennlinien darstellen kann, also sowas wie diagramme? ich möchste gerne die sequenzen aus einem reglerbaustein grafisch darstellen und gegebenfalls sollte sich diese darstellung aktualisieren, wenn man die punkte der kennlinien verändert. kennt da jemand was?

    vielen dank im voraus...

    gruß

    die cutty

     
  • David

    David - 2009-08-20

    Cutty, hast Du schon einmal das VisuElement 'Trend' verwendet?

    Die Trend-Funktion dient der Aufzeichnung des zeitlichen Verlaufs von Variablenwerten im Online Modus. Sie ist vergleichbar mit der Trace-Funktionalität. Die Online-Darstellung erfolgt in einem Diagramm, bei der Aufzeichnung in eine Text-Datei werden die einzelnen Messwerte in Zeilen untereinander geschrieben.

     
  • Anonymous - 2009-08-20

    Originally created by: mg

    Das mußt Du dir selber machen. Fix fertig ist nix.

    Am einfachsten gehts mit dem Histogramm. Hier kannst Du 2 Datenpunkte mit einer Linie verbinden (oder auch mehrere) damit kannst Du die Sequenzen anzeigen. (ABER DAS IST TROTZDEM VIEL TÜFTELEI, speziell mit der Web-Visu)

    Zum Verstellen kannst Du die Schieberegler verwenden. Du mußt das halt an dein Histogramm anpassen.

    Wenn Du mehrere Kurven (mit unterschiedlichen Farben) in einem Histogramm darstellen willst legt man am einfachsten mehrere Histogramme übereinander und mach den Hintergrund durchsichtig.

    Viel Spass beim Programmieren.

     
  • Cutty - 2009-08-24

    hallo mg

    wie meinst du das, dass zwei datenpunkte verbunden werden? ich kann in dem histogramm doch nur eine variable festlegen? und aus der hilfe werde ich absolut nicht schlau.... und wenn ich richtig sehe, dann gibt es keine darstellung der x-werte? ein stinknormales diagramm wär echt toll...

    und die schieberegler muss ich dann extra einfügen?

    vielen dank im voraus

    gruß

    die cutty

     
  • Anonymous - 2009-08-24

    Originally created by: mg

    Wenn Du zB. ein Array(2) machst sind es 2 Werte usw usw.

    Du mußt Dir ALLES selber machen. KEINE Bezeichnungen auf der X-Achse usw. ALLES Handarbeit.

    Ein "stinknormales" Diagramm gibt es leider nicht

    ... das folgende Beispiel ist eine Bildschirmkopie aus einer Web-Visu

    IMG: Kurve.JPG

     
  • Cutty - 2009-08-24

    hm...das ist zu hoch für mich...bin absoluter codesys-newbie

    und das ist doch bestimmt in AS programmiert. arbeite grade nur in FUP mit der hlk-bibliothek von wago. die zeit gibt es auch nicht her, solche komplizierten anwendungen zu erstellen...deshalb wärs halt einfacher schön gewesen...

    aber danke trotzdem

    gruß

    die cutty

     
  • Student-Andidas - 2009-11-26

    Ich interessiere mich für dein Diagramm. Würde mich sehr über eine etwas detailliertere Beschreibung oder ein Beispiel freuen.

    Danke im Vorraus

     
  • Anonymous - 2009-12-02

    Originally created by: mg

    Student_Andidas hat geschrieben:
    Ich interessiere mich für dein Diagramm. Würde mich sehr über eine etwas detailliertere Beschreibung oder ein Beispiel freuen.
    Danke im Vorraus

    TEST.EXP [128.24 KiB]

     
  • Ronny - 2010-01-19

    Hallo

    Welche Bibliotheken sind bei diesem Beispiel eingebunden?

    Danke

    Ronny

     
  • Anonymous - 2010-01-19

    Originally created by: mg

    Ronny hat geschrieben:
    Hallo
    Welche Bibliotheken sind bei diesem Beispiel eingebunden?
    Danke
    Ronny

    Oscat V3.04 (es gehen aber auc hsicher andere Versionen)

     
  • Ronny - 2010-01-19

    Danke für die Schnelle Antwort.

    Die Bibliothek hab ich drin, dennoch bleibt Codesys 2.3 mit Fehler 3740 stehen ```

    Fehler 3740: HEAT_CURVE_Fb (4): Unbekannter Typ 'TEMP'

    Die Zeile 4 in der Deklaration
    

    HEAT_TEMP_3:TEMP2; ( Temp2 - SPS oben )

    Ich geh davon aus das ich mit dem Typ TEMP2 den eigentlichen Wert an das Arry übergebe, den ich von meinem Analog in erhalte. Wobei Typ ja eher eine Variable ist. Aber mit REAL funktioniert die Übergabe auch nicht.
     ```
    
     %IW4 - TEMP2; 
    

    TEMP2 ist eine Globale Variable in meinem Projekt

    Was verdreh ich da?

    bzw. Wie bekomme ich meine Werte in das Arry?

    Danke

    Ronny

    (Ich arbeite mit einem WAGO 750 - 841 Controler)

     
  • Anonymous - 2010-01-19

    Originally created by: mg

    Ronny hat geschrieben:
    Danke für die Schnelle Antwort.
    Die Bibliothek hab ich drin, dennoch bleibt Codesys 2.3 mit Fehler 3740 stehen ```
    Fehler 3740: HEAT_CURVE_Fb (4): Unbekannter Typ 'TEMP'

    Die Zeile 4 in der Deklaration
    

    HEAT_TEMP_3:TEMP2; ( Temp2 - SPS oben )

    Ich geh davon aus das ich mit dem Typ TEMP2 den eigentlichen Wert an das Arry übergebe, den ich von meinem Analog in erhalte. Wobei Typ ja eher eine Variable ist. Aber mit REAL funktioniert die Übergabe auch nicht.
     ```
     %IW4 - TEMP2;
    

    TEMP2 ist eine Globale Variable in meinem Projekt
    Was verdreh ich da?
    bzw. Wie bekomme ich meine Werte in das Arry?
    Danke
    Ronny
    (Ich arbeite mit einem WAGO 750 - 841 Controler)

    HEAT_TEMP2 ist eine etwas veränderte Heattemp aus dem OSCAT 3.04. (Ich hoffe ich habe die mitgeliefert). Ich weiß nicht woher Du "TEMP2" hat das heißt eigentlich HEAT_TEMP2 und ist ein FB.

    Zur INFO

    (__DEKLARATION_____)

    FUNCTION_BLOCK HEAT_TEMP2

    VAR_INPUT

    T_EXT : REAL;
    
    T_INT : REAL;
    
    OFFSET : REAL;
    
    T_REQ : REAL;
    
    (*** Zusatz Mario (alle VAR CONST  sind von über die Anschlüsse  verstellbar ***)
    
    TY_MAX : REAL := 70;
    
    TY_MIN : REAL := 25;
    
    TY_CONFIG : REAL := 70;
    
    T_INT_CONFIG : REAL := 20;
    
    T_EXT_CONFIG : REAL := -15;
    
    T_DIFF : REAL := 10;
    
    C : REAL := 1.33;
    
    H : REAL := 3;
    

    END_VAR

    VAR_OUTPUT

    TY : REAL;
    
    HEAT : BOOL;
    

    END_VAR

    VAR

    tr : REAL;
    
    tx: REAL;
    

    END_VAR

    (__Programm_____)

    tr := T_INT + OFFSET;

    tx := (tr - T_EXT) / (T_INT_CONFIG - T_EXT_CONFIG);

    IF T_EXT + H > tr THEN

    TY := 0;
    

    ELSE

    TY := LIMIT(TY_MIN, tr + T_DIFF / 2 * tx + (TY_CONFIG - T_DIFF/2 - tr) * EXPT(MAX(tx,0), 1 / C), TY_MAX);
    

    END_IF;

    TY := MAX(TY, T_REQ);

    HEAT := TY > 0;

    Leider bin ich im Streß und kann mich heute nicht mehr wieter darüm kümmern.

    Es sollte auch nur ein Beispiel sein, wie man mehrere Kurven auf ein Histogramm bringt und nicht gleich eine komplette Software. Ich kann gerade hier nicht die Vollständigkeit garantieren, da es ein Ausschnitt auf einer Software ist.

    Trotzdem viel Spass

     
  • Ronny - 2010-01-23

    Hallo

    Egal wie ich es dreh, es will nicht, hast Du zufällig ein eigenständiges Projekt *.pro, in dem ich das Histogram ma vollständig betrachten kann ?

    Vielleicht wird mir dann klar wie es gehn soll.

    Vielen Dank

    Ronny

     
  • Anonymous - 2010-01-24

    Originally created by: mg

    Ronny hat geschrieben:
    Hallo
    Egal wie ich es dreh, es will nicht, hast Du zufällig ein eigenständiges Projekt *.pro, in dem ich das Histogram ma vollständig betrachten kann ?
    Vielleicht wird mir dann klar wie es gehn soll.
    Vielen Dank
    Ronny

    Hallo Ronny

    Ich will eigentlich keine KOMPLETTE Software verteilen. Jeder soll auch selber mal nachdenken. Aber ich will ja nicht so sein. - gib mir mal Deine EMail Adresse und ich schicke Dir das komplette PRO-File. Ich weise darauf hin, daß die Software nicht komplett kopierbar ist, da einige Teile auch mit JAVA geschreiben wurden (und der Teil nicht enthalten ist, und auch nicht veröffentlicht wird). Also einfach kopieren is nicht, trotzdem ist der Teil mit dem Diagramm komplett in Codesys gemacht UND DAS KANN KOPIEREN WER WILL. (sieh auch das EXP-File)

     
  • Ronny - 2010-03-07

    Hallo

    Meine Mail adr möchte ich nur ungern veröffentlichen, zu viel spam. Meine ICQ oder Yahoo messenger ID könnte ich aber verraten.

    Die HEAT_TEMP2 hab ich mir mittlerweile als FB Baustein erstellt.

    Kannst du mir noch Verraten wie du die ARRAY's konfiguriert / deklariert hast?

    ```

    Curve_Fb_3[i] ?

    als.
     ```
    
    Curve_Fb_3: ARRAY [1..6] OF INT;
    

    vielleicht ? oder anders?

    Und wie diese, die Daten von den Analogen Eingängen (%IW0) bekommen?

    Danke Ronny

     
  • Anonymous - 2010-03-08

    Originally created by: mg

    Ronny hat geschrieben:
    Hallo
    Meine Mail adr möchte ich nur ungern veröffentlichen, zu viel spam. Meine ICQ oder Yahoo messenger ID könnte ich aber verraten.
    Die HEAT_TEMP2 hab ich mir mittlerweile als FB Baustein erstellt.
    Kannst du mir noch Verraten wie du die ARRAY's konfiguriert / deklariert hast?
    ```
    Curve_Fb_3[i] ?

    als.
     ```
    Curve_Fb_3: ARRAY [1..6] OF INT;
    

    vielleicht ? oder anders?
    Und wie diese, die Daten von den Analogen Eingängen (%IW0) bekommen?
    Danke Ronny

    a) Als Eingang hat die Heizkurve nur die Außentemperatur

    b) Wie ich Dir das schicken kann ist mir egal. Will hier nur nicht die ganze Software veröffentlichen, weil ich sonst von 1000enden Fragen (anderer User) bestürmt werde.

    c) bin ab heute eine Woche nicht mehr erreichbar

    d) folgend die "global" für die Heizkurve (ist aber noch einiges mehr drinn ... muß man halt löschen)

    VAR_GLOBAL

    (* Istwerte *)
    
    T_Vl_Fb: AVAL;                  (* Vorlauftemperatur *)
    
    T_Vl_Fb_r: REAL;                    (* Vorlauftemperatur berechnet *)
    
    B_Uwp_Fb: MVal;                 (* Pumpe *)
    
    Y_Fb:AVAL;                      (* Ventil *)
    
    A_FbMx:BVal_Op;                 (* Sicherheitsthermostat *)
    
    T_Oa_Fb: AVal;                  (* berechnete Außentemperatur *)
    
    T_CALC_Fb_r: REAL;              (* berechnete Vorlauftemperatur *)
    
    
    
    (* Zwischenvariablen Ventil Fußbodenheizung *)
    
    Y_Fb_close_x:BOOL;
    
    Y_Fb_open_x:BOOL;
    
    Y_Fb_pos:REAL;
    
    
    
    (* Heizkurve *)
    
    TOa_Curve_Fb_r:REAL;
    
    Curve_Fb_3: ARRAY[1..6] OF REAL;
    
    Curve_Fb_2: ARRAY[1..6] OF REAL;
    
    Curve_Fb_1: ARRAY[1..6] OF REAL;
    
    Curve_Fb_0: ARRAY[1..6] OF REAL;
    
    Curve_Fb_X_Scale:ARRAY[1..6] OF INT;
    
    Curve_Fb_X_Scale_act_number: INT;
    
    Curve_Fb_X_Scale_act_bar: INT;
    
    Curve_Fb_Y_Scale_act_elipse:INT;
    
    Curve_Fb_Y_Scale_Tmin: INT;
    
    Curve_Fb_Y_Scale_Tmax: INT;
    
    Curve_Fb_TVl_3: REAL;
    
    Curve_Fb_TVl_2: REAL;
    
    Curve_Fb_TVl_1: REAL;
    
    Curve_Fb_TVl_0: REAL;
    
    Zb_Fb_i: INT;
    
    Zb_Fb_s: STRING(16);
    
    dTOff_Fb_akt: REAL;
    

    END_VAR

    VAR_GLOBAL PERSISTENT RETAIN

    (* Zeitprogramm *)
    
    Clock_Fb    AT %MW4032: ARRAY [1..Clock_Fb_Words] OF WORD;      (* Deklaration:= Beginn_%MWxxxx, Länge 1..yy ; yy=(Anzahl Zeitbefehle)*1,5 *)
    
    
    
                                                                                    (* Berechung Modbus Adresse: 12288+MW'zzzz'=Modbusadresse*)
    
    (* Temperaturschiebungen Zeitprogramm *)
    
    Xs3_Fb_r: REAL :=               +3;     (* Differenz-Sollwert Schnellaufheizbetrieb *)
    
    Xs1_Fb_r: REAL :=               -5;     (* Differenz-Sollwert Reduziert *)
    
    Xs0_Fb_r: REAL :=               -10;    (* Differenz-Sollwert Stützbetrieb *)
    
    
    
    (* Sollwerte *)
    
    XsRT_Fb_r: REAL :=              23;     (* Sollwert Raumtemperatur *)
    
    XsAMnVl_Fb_r: REAL :=           25;     (* Sollwert min Vorlauftemperatur *)
    
    XsAMxVl_Fb_r: REAL :=           45;     (* Sollwert max Vorlauftemperatur *)
    
    XsART_Fb_r: REAL :=             22;     (* Sollwert Auslegung Raumtemperatur *)
    
    XsAAT_Fb_r: REAL:=              -12;    (* Sollwert Auslegung Aussentemperatur *)
    
    XsAVl_Fb_r: REAL :=                 40;     (* Sollwert Auslegung Vorlauftemperatur *)
    
    XsAD_Fb_r: REAL :=              5;      (* Sollwert Differenz Vorlauf/Rücklauftemp. *)
    
    XsC_Fb_r: REAL :=               1.1;    (*Konvektoren: C = 1.25 – 1.45,
    
                                                Plattenheizkörper:C = 1.20 – 1.30,
    
                                                Radiatoren:C = 1.30,
    
                                                Rohre:C = 1.25,
    
                                                Fußbodenheizung:C = 1.1*)
    
    Xs_TOa_HeatLim_Fb_r: REAL:= 17;     (* Heizgrenze *)
    
    Xs_TOa_RC_Fb_r:REAL;                    (* Heizgrenze Mittelwert Außentemp. *)
    
    XsAusrichtg_Fb_r: REAL;                 (* Ausrichtung Nord/Süd Außenfühler N=0, S=1 *)
    
    
    
    (* Betriebsstundenzähler *)
    
    B_Uwp_Fb_Ops1: UDINT;               (* Uwp Betriebsstunden *)
    
    B_Uwp_Fb_Opc1: UDINT;               (* Uwp Zyklen *)
    

    END_VAR

    VAR_GLOBAL CONSTANT

    (************************* Zeitprogramme ARRAY********************************)
    
    Clock_Fb_Words: INT :=63;
    
    Clock_Fb_Commands:INT:=42;
    

    END_VAR

     
  • Student-Andidas - 2010-05-21

    Hallo Leute. Zeichnet euch per Hand einen Graphen. X Punkte und weist jedem Punkt ein Offset zu der zB in einer Zeile eines Arrays steht. Jetzt legt man die Punkte in den Ursprung. Sobald Werte im array stehen wandern die Punkte. Ist zwar amateurhaft und mit ein wenig aufwand verbunden aber sieht nachher richtig gut aus.

    Grüße Andidas

     

Log in to post a comment.