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

Ergebnis 1 bis 8 von 8

Thema: 24x7 Sollwerte automatisch auslesen

  1. #1
    Registriert seit
    28.01.2010
    Beiträge
    37
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    habe folgendes Problem.
    Für eine Kühlstellensteuerung ist es gewünscht für jede Stunde einen eigenen Sollwerte zu definieren.
    D.h. ich habe einen DB mit 168 (24x7) Sollwerten (INT).

    Mein Ansatz wäre jetzt mittels "Wochentag" und "Stunde" den passenden Wert in eine eigene Variable zu schreiben und diese für die Regelung zu verwenden.

    Wie gesagt, das wäre mein Ansatz, habe aber keine Idee wie ich das tatsächlich bewerkstelligen kann.
    AWL ist nicht wirklich meine Stärke.

    Vielleicht hat ja von Euch jemand ein paar Tipps für mich.

    Anmerkung:
    Wochentag und Stunde ist nicht das Problem.
    Es geht mir um das "vernünftige" auslesen der entsprechenden Werte aus dem DB.


    Danke
    Alex
    Zitieren Zitieren 24x7 Sollwerte automatisch auslesen  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    beginne in deinem db mit sonntag (wt=1)
    im dbw0 liegt also sonntag, 0 uhr

    nun die anfangsadresse berechnen
    Code:
    l wochentag
    l 1
    -i //da ja anfang in dbw0 ist
    l 24
    *i
    t adresse_tag
    l stunde
    +i
    t adresse
    sld3 //pointer erzeugen
    lar1
    auf db10
    l dw[ar1,p#0.0]
    t tempsollwert
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    Registriert seit
    15.09.2011
    Ort
    Sundern
    Beiträge
    55
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Alex,

    Ich kann dir dazu nur ans Herz legen dir den WeeklyTimer anzuschauen wie dort gearbeitet wird. Ist ein FB mit einem Instanz DB welcher dir Datum und Zeit etc. liefert. Gleichzeitig fungiert er als Wochenzeitschaltuhr. Bestimmt kannst du dir da auch abgucken was er macht um es umzuschreiben auf deine Bedürfnisse....
    Er wird wohl einen Compare drin haben um Tag und Stunde zu vergleichen - Erweiterst du das so kannst du ja abhängig davon Werte aus einem Array laden.
    Wir haben seinerzeit mal mit Linearer Interpolation gearbeitet. Hierbei brauchten wir auch einen DB mit sehr vielen Werten - wir haben die Werte über ein Programm in SCL gelesen... Hier mal ein Auszug:

    ,,IF #AnalogerEingangswert > (#Messpunkte_Sensor[1]-500) AND #AnalogerEingangswert < (#Messpunkte_Sensor[50]+1000) THEN IF #AnalogerEingangswert < #Messpunkte_Sensor[1] THEN
    #y0 := "Messpunkte".Literpromin[1];
    #y1 := "Messpunkte".Literpromin[2];
    #x0 := #Messpunkte_Sensor[1];
    #x1 := #Messpunkte_Sensor[2];
    ELSIF #AnalogerEingangswert > #Messpunkte_Sensor[50] THEN
    #y0 := "Messpunkte".Literpromin[49];
    #y1 := "Messpunkte".Literpromin[50];
    #x0 := #Messpunkte_Sensor[49];
    #x1 := #Messpunkte_Sensor[50];
    ELSE
    FOR #i := 1 TO 49 DO
    IF #AnalogerEingangswert >= #Messpunkte_Sensor[#i] AND #AnalogerEingangswert <= #Messpunkte_Sensor[#i + 1] THEN
    #y0 := "Messpunkte".Literpromin[#i]; "


    WeeklyTimer gibt es hier im Beispielprojekt:

    https://support.industry.siemens.com...dti=0&lc=en-WW

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Sonst könnte man die Solltwerte auch als "mehrdimensionales" Array anlegen.
    Also: Tag - Array[0..6] of Struct - Stunde Array[0..23] of INT.

    Wenn du TIA hast und ne 1200/1500er CPU dann kannst du die Werte direkt mit DbSollwerte.Tag[Variable].Stunde[Variable] ansprechen.

    Wenn es ne 300er ist könntest du einen SCL-FC schreiben dem du Tag/Stunde übergibst, der dir dann den Sollwert ausspuckt.
    z.b.:
    Code:
    #FcOUT_Sollw := "DbSollwerte".Tag[#FcIN_Tag].Stunde[#FcIN_Stunde];
    Geändert von RONIN (05.08.2015 um 07:52 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    --alex-- (03.07.2015)

  6. #5
    Registriert seit
    28.01.2010
    Beiträge
    37
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Volker,

    so ähnlich hätte ich mir das vorgestellt.
    Jetzt habe ich aber im TIA Portal das Problem dass es einen DBW0 nicht ehr gibt.

    Wäre es eventuell möglich die Namen wie folgt zu vergeben (Tag_Stunde)
    1_14 --> Sonntag 14:00 Uhr
    und dann auf diese zuzugreifen?

    Alex

  7. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    klar geht das auch in tia. was für eine cpu?
    ansonsten mach es wie ronin schreibt. der erzeugte code ist fast identisch mit meinem awl-code
    Angehängte Grafiken Angehängte Grafiken
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  8. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    --alex-- (03.07.2015)

  9. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.356
    Danke
    455
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Zitat Zitat von --alex-- Beitrag anzeigen
    Jetzt habe ich aber im TIA Portal das Problem dass es einen DBW0 nicht ehr gibt.
    @volker: Ich glaub Alex hat einen optimierten DB erzeugt (keine 300er/400er), daher kein DBW0 (keine Adressen).

    @axel: Falls dass das Problem ist: Einfach beim DB Rechtsklick/Eigenschaften/Attribute - "Optimierter Bausteinzugriff" abhaken und dann den Db selber nochmal mit STRG+B (oder dem Menüknopf) übersetzen.
    Dann hast du auch Adressen, für die Lösung mit den Pointern ist das absolut erforderlich. Das mit dem "mehrdimensionalen" Array geht auch mit dem optimierten DB.
    Geändert von RONIN (05.08.2015 um 07:53 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  10. #8
    Registriert seit
    28.01.2010
    Beiträge
    37
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Dank für die zahlreichen Hilfestellungen.
    Ich habe es jetzt mit dem mehrdimensionalen Array gelöst.

    @ronin: Du hattest recht. Es wurde zuerst ein optimierter db erzeugt. Ich habe den Haken bei "Optimierter Bausteinzugriff" abgehakt, aber das ich den nochmal übersetzen musste habe ich nicht gewusst.

    @volker: Danke für die AWL Codeunterstützung.

Ähnliche Themen

  1. Step 7 Datenlogger automatisch auslesen - und in DB speichern
    Von AndiHN im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 18.09.2014, 20:18
  2. Automatisch Daten auslesen vom M258 Schneider Somachine
    Von Rokx im Forum Sonstige Steuerungen
    Antworten: 6
    Letzter Beitrag: 03.01.2014, 21:15
  3. TIA 4 Sollwerte Variabel 4 Ausgängen zuordnen
    Von TIA_TESTER im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 11.11.2013, 20:10
  4. WinCC Sollwerte schreiben
    Von Keeper im Forum HMI
    Antworten: 0
    Letzter Beitrag: 31.05.2010, 16:29
  5. DB automatisch auslesen? abhägig vom MW-Zustand
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.09.2005, 09:55

Lesezeichen

Berechtigungen

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