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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: 4 Sollwerte Variabel 4 Ausgängen zuordnen

  1. #1
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    bin jetzt auch bei TIA gelandet, habe hier V12 laufen und direkt mal eine Frage bzw. bräuchte Anregung zum Lösungsweg.

    Gegeben: 4 Sollwerte, 4 Analogausgänge
    Gefordert: 4 Verschiedene zuordnungen (config´s) der Sollwerte zu den Ausgängen.
    Bsp.:

    Config 1:
    Soll1 -> AO1
    Soll2 -> AO2
    Soll3 -> AO3
    Soll4 -> AO4

    Config 2:
    Soll1 ->AO3
    Soll2 ->AO2
    ...
    ...

    Ich denke ihr wisst was ich meine.

    Hab ich mir jetzt so gedacht und auch angefangen:

    Die 4 Configs werden über die VISU gebildet: 4 Grafische E/A Felder die in aufeinanderfolgenden Bytes versch. Bit setzten.

    Habe dann für

    0001: Sollwert 1 (Byte 1)
    0010: Sollwert 2 (Byte 2)
    0100: Sollwert 3 (Byte 3)
    1000: Sollwert 4 (Byte 4)

    Ausgang 1: Byte 1
    Ausgang 2: Byte 2
    Ausgang 3: Byte 3
    Ausgang 4: Byte 4


    das DWord würde dann so aussehen: 1000 0100 0010 0001 und ist ja quasi meine Config.

    Jetzt bräuchte ich etwas das mir die 4 byte zu einem DWord zusammensetzt wie oben beschrieben. Und je nach gewählter Config (einfaches bit) das ganze in den entsprechenden DB ablegt.

    DB1.Config 1 Dword
    DB2.Config 2 Dword
    ...
    ...

    Ein Baustein der je nach byte-inhalt die sollwerte den ausgängen zuordnet hab ich (FUP, ist aber auch recht unübersichtlich).

    Hauptfrage ist: Wie krieg ich byte´s zu Dword zusammengesetzt und wieder auseinandergenommen(Gern auch in AWL, aber dann müsste es ein wenig genauer erklärt sein was genau gemacht wird). Oder habt ihr eine andere idee wie ich das ganze viel einfacher lösen kann?


    Vielen Dankschonmal, ich hoffe mir kann jemand weiterhelfen
    Zitieren Zitieren 4 Sollwerte Variabel 4 Ausgängen zuordnen  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Ich würd' da im DB ein Array [1..4] of Byte für die Sollwerte selbst anlegen plus ein Array [1..4] of Int für die Zuordnung der Sollwerte zu den Ausgängen und im FB/FC dann einfach
    Code:
    FOR x := 1 TO 4 BY 1 DO
      AB[x] := Sollwert[ Sollwert_zu_Ausgang[ x ] ];
    END_FOR;
    Bei den EA-Feldern für jedes Ausgangsbyte den Wert 1 bis 4 für die Zuordnung des entsprechenden Sollwerts auswählen.
    Falls keine doppelte Zuordnung erlaubt ist, dann im Programm entsprechend reagieren.

  3. #3
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Eine Datentypsicht mit "AT" (siehe Hilfe) ist hierfür gut geeignet.


    Gruß,

    Ottmar

  4. #4
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo und danke für die schnelle Antwort.

    Was Array´s angeht etc muss ich mich erstmal belesen,...

    Könntest du aber dein code etwas genauer erleutern? Ist das SCL oder AWL? Sorry bisher war das nicht meine Welt

    Danke schonmal, Gruß T.

  5. #5
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Die Sache mit den Array muss ich mir nochmal anschauen, hab mich immer darum gedrückt. kannst du den code genauer erläutern bitte.

    Das mit Datentypsicht schau ich mir gleich auch noch an.

    Danke euch

  6. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Mal als Beispielinhalt im DB:
    Code:
    Sollwert[1] = 64
    Sollwert[2] = 18
    Sollwert[3] = 22
    Sollwert[4] = 5
    Sollwert_zu_Ausgang[1] = 4
    Sollwert_zu_Ausgang[2] = 2
    Sollwert_zu_Ausgang[3] = 1
    Sollwert_zu_Ausgang[4] = 3
    Dann machen die Schleife und Zuweisung aus obigen Code folgende Ersetzungen:
    Code:
    1. Durchlauf x=1:  AB[1] := Sollwert[ Sollwert_zu_Ausgang[ 1 ] ] := Sollwert[ 4 ] := 5
    2. Durchlauf x=2:  AB[2] := Sollwert[ Sollwert_zu_Ausgang[ 2 ] ] := Sollwert[ 2 ] := 18
    3. Durchlauf x=3:  AB[3] := Sollwert[ Sollwert_zu_Ausgang[ 3 ] ] := Sollwert[ 1 ] := 64
    4. Durchlauf x=4:  AB[4] := Sollwert[ Sollwert_zu_Ausgang[ 4 ] ] := Sollwert[ 3 ] := 22

    Mal angenommen, Du trägst dann über's HMI für Sollwert_zu_Ausgang[4] statt der jetzigen 3 eine 1 ein, steht dann im Durchlauf der FOR-Schleife bei x=4:
    Code:
    ...
    4. Durchlauf x=4:  AB[4] := Sollwert[ Sollwert_zu_Ausgang[ 4 ] ] := Sollwert[ 1 ] := 64


    Ich hoffe, das ist so für Dich verständlich.
    Arrays bieten halt die Möglichkeit, gleichartige (-namige) Variablen über eine Nummer zu selektieren.


    PS: Ganz vergessen, der Code ist SCL.
    Geändert von hucki (11.11.2013 um 00:40 Uhr)

  7. #7
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo und danke,...

    jetzt habe ich verstanden was gemacht wird und jetzt kommt mir auch wieder das ich sowas schonmal gesehn hab

    Code:
    FOR x := 1 TO 4 BY 1 DO //x ist einfach die Variable wie oft das ganze durchlaufen wird, muss ich "x" n der schnittstelle als Variable definieren?
      AB[x] := Sollwert[ Sollwert_zu_Ausgang[ x ] ]; //Was ist "AB"? Die Darauf folgende Anweisung schiebt einfach nur die Sollwerte entsprechend zu den Ausgängen?
    END_FOR;
    Code:
    Sollwert[1] = 64 //der eigentliche Sollwert
    Sollwert[2] = 18 //der eigentliche Sollwert
    Sollwert[3] = 22 //der eigentliche Sollwert
    Sollwert[4] = 5 //der eigentliche Sollwert
    Sollwert_zu_Ausgang[1] = 4 //Der Bereich wo ich mein Sollwert zu Ausgang 1 im weiteren Programm abhole???
    Sollwert_zu_Ausgang[2] = 2 //Der Bereich wo ich mein Sollwert zu Ausgang 1 im weiteren Programm abhole???
    Sollwert_zu_Ausgang[3] = 1 //Der Bereich wo ich mein Sollwert zu Ausgang 1 im weiteren Programm abhole???
    Sollwert_zu_Ausgang[4] = 3 //Der Bereich wo ich mein Sollwert zu Ausgang 1 im weiteren Programm abhole???
    Jetzt fehlt aber ein Bereich wo meine Info liegt welcher Sollwert zu welchem Ausgang soll Ich habe ja 3 Variablen ? Sollwerte kommend, Info wohin und Sollwerte neu sortiert?

    Danke schonmal für weitere erklärung.

    Gruß T.

  8. #8
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Es geht, habe es aber nicht verstanden!

    INFO:
    Code:
    "Config".Sollwerte (Mein Array für die 4 Sollwerte)
    "Config".Zuweisung Sollw. (Mein Array für die Zuweisungen der Sollwerte, hier ist also 1, 2, 3, o. 4 von der Visu hinterlegt)
    "Config".Ausgang (Mein Array wo die sortierten Sollwerte abgelegt  werden, und ich Sie im Programm für die weiterverarbeitung  abhole)
    So sieht das ganze jetzt bei mir aus:
    Code:
    FOR #x := 1 TO 4 BY 1 DO
      "CONFIG".Ausgang[#x] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[#x] ];
    END_FOR;

    Kann es mir jemand aber genau erklären? X wird doch bei jedem durchlauf um 1 hochgezählt? Dann würde meine Schleife so aussehen:

    Code:
    "CONFIG".Ausgang[#1] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[#1] ];
    "CONFIG".Ausgang[#2] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[#2] ];
    "CONFIG".Ausgang[#3] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[#3] ];
    "CONFIG".Ausgang[#4] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[#4] ];
    Wieso findet jetzt die zuordnung entsprechend der in "CONFIG".Zuweisung_Sollw. hinterlegten Werte 1,2,3,o. statt und nicht 1 zu 1wenn ja hinten auch steht: ""CONFIG"."Zuweisung_Sollw."[#4]"


    Kann ich einzelne Durchläufe der Schleifen beobachten? Oder immer nur den ersten?

    Dankeschön, Gruß T

  9. #9
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Die Schleife lässt sich nicht so gut beobachten. Vermutlich siehst Du da nur einen Durchlauf.

    Du kannst den Code ja zum Testen auch ohne FOR-Schleife dafür dann 4x schreiben, so wie Du's jetzt in Deinem Post getan hast. Nur das # vor den Zahlen weglassen, da es ja keine Variablen sondern Zahlen sind.


    Das Ganze funktioniert so, das die Variablen der Reihe nach durch ihren Wert ersetzt werden, bis sie komplett aufgelöst sind.

  10. #10
    Registriert seit
    10.11.2013
    Beiträge
    81
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jetzt hab ichs verstanden!! Ist ja eine einfache zuweisung und wenn es durchläuft sieht es dann so aus:

    1.
    Code:
    "CONFIG".Ausgang[1] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[1] ];
    "CONFIG".Ausgang[2] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[2] ];
    "CONFIG".Ausgang[3] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[3] ];
    "CONFIG".Ausgang[4] := "CONFIG".Sollwerte["CONFIG"."Zuweisung_Sollw."[4] ];
    Anschließend bzw. so ist es ja wird aus
    Code:
    "CONFIG"."Zuwesung_Sollw."[4]           ->  1 , 2, 3, oder 4
    Sprich:

    2.
    Code:
    "CONFIG".Ausgang[1] := "CONFIG".Sollwerte[1];
    "CONFIG".Ausgang[2] := "CONFIG".Sollwerte[2];
    "CONFIG".Ausgang[3] := "CONFIG".Sollwerte[3];
    "CONFIG".Ausgang[4] := "CONFIG".Sollwerte[4];
    Eine einfache Zuweisung. Meine Werte 1-4 sind sozusagen die Array "Adressen" des zu ladenden Wertes?

    Hab ich das so richtig verstanden (einfach ausgedrückt)

    Vielen Dank für die Super Hilfe!!!!!!

Ähnliche Themen

  1. Twincat NCI Sollwerte in Datei schreiben
    Von odonata im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 29.09.2011, 10:44
  2. Sollwerte anhand Klimakurve ermitteln
    Von langer711 im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.06.2011, 19:10
  3. Sollwerte ausgeben lassen von Twincat NCI
    Von odonata im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 17.05.2011, 16:07
  4. Sollwerte bei PC 477B gehen auf 0!
    Von TSI09 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 21.04.2011, 18:48
  5. WinCC Sollwerte schreiben
    Von Keeper im Forum HMI
    Antworten: 0
    Letzter Beitrag: 31.05.2010, 16:29

Lesezeichen

Berechtigungen

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