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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Abfrage ob Eingänge 1 oder 0 sind

  1. #11
    Avatar von 4nD1
    4nD1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.05.2010
    Beiträge
    414
    Danke
    40
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Yepp, das wäre auch mein Favorit.

    Wenn es nur ein paar Maschinen sind würde ich nicht zusammengepackte Bits zählen sondern sequentiell die bedingten Additionen ausprogrammieren. Das wird übersichtlich und schafft eine einfache Möglichkeit, die Maschinen unterschiedlich gewichtet in die Berechnung eingehen zu lassen.
    Code:
    Summe := 0 ;
    IF "Maschine 1 Betrieb" THEN Summe := Summe + 1; END_IF;
    IF "Maschine 2 Betrieb" THEN Summe := Summe + 2; END_IF; //Maschine 2 hat mehr Bedarf
    IF "Maschine 3 Betrieb" THEN Summe := Summe + 1; END_IF;
    ...
    IF "Maschine n Betrieb" THEN Summe := Summe + 1; END_IF;

    Harald
    Verstehe ich das richtig das ich nur das dann einfügen muss und das dürfte funktionieren oder muss ich dort noch ne andere Anweisung mit einbauen um die Summe dann weiter zu verarbeiten? [Hab noch nicht sehr viel Erfahrung mit SCL]

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Das ist erstmal nur das Zusammenzählen, wieviele Maschinen laufen bzw. wieviel Pump-Bedarf besteht. Aus dieser Summe-Information mußt Du nun noch nach Deinen Kriterien den Pumpensollwert festlegen oder ausrechnen. Das ist beim Programm von Onkel Dagobert #6 am besten zu sehen. Im Grunde macht das Programm vom Onkel die gleiche bedingte Addition in AWL, wie ich sie in SCL gezeigt habe. Der Onkel addiert je Maschine unterschiedliche Gewichtungen in % und gibt einen Sollwert 0..100% aus.

    Was hast Du denn für eine SPS?
    Wie lauten die Regeln für die Geschwindigkeit Deiner Pumpe?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Avatar von 4nD1
    4nD1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.05.2010
    Beiträge
    414
    Danke
    40
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Habe eine S7-1214DC/DC/Rel.
    Wenn eine Maschine läuft soll mit 25% gepumpt werden. Mit 2MAE dann 50% mit 3MAE 75% und mit 4MAE dann 100%. Und das sollt dann in einen Datenbaustein geschrieben werden.

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    OK, weil alle Maschinen gleich gewichtet sind kannst Du die Anzahl eingeschalteter Maschinen zählen (ergibt 0 bis 4) und die Anzahl mit 25 multiplizieren um auf 0 bis 100 (%) zu kommen.
    Alternativ kannst Du auch gleich je 25 addieren:
    Code:
    Summe := 0 ;
    IF "Maschine 1 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 2 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 3 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 4 Betrieb" THEN Summe := Summe + 25; END_IF;
    
    "MyDB".Pumpesollwert := Summe ; //0..100 an Pumpensollwert geben
    Vermutlich ist meine SCL-Syntax nicht ganz TIA-konform (Schreibweise der Variablen). Da hat Siemens einige Male "Neuerungen" eingeführt, doch ich habe kein aktuelles TIA. Auch fehlen noch die Deklarationen der Variablen. Du mußt wissen, welchen Datentyp Du brauchst.
    S7-1200 kann kein AWL.

    So einfacher Code mit bedingten ADD läßt sich auch gut in FUP oder KOP programmieren ("Maschine x Betrieb" kommt dann jeweils an den EN-Eingang der ADD-Boxen).

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    4nD1 (05.02.2016)

  6. #15
    Avatar von 4nD1
    4nD1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.05.2010
    Beiträge
    414
    Danke
    40
    Erhielt 10 Danke für 9 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    OK, weil alle Maschinen gleich gewichtet sind kannst Du die Anzahl eingeschalteter Maschinen zählen (ergibt 0 bis 4) und die Anzahl mit 25 multiplizieren um auf 0 bis 100 (%) zu kommen.
    Alternativ kannst Du auch gleich je 25 addieren:
    Code:
    Summe := 0 ;
    IF "Maschine 1 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 2 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 3 Betrieb" THEN Summe := Summe + 25; END_IF;
    IF "Maschine 4 Betrieb" THEN Summe := Summe + 25; END_IF;
    
    "MyDB".Pumpesollwert := Summe ; //0..100 an Pumpensollwert geben
    Vermutlich ist meine SCL-Syntax nicht ganz TIA-konform (Schreibweise der Variablen). Da hat Siemens einige Male "Neuerungen" eingeführt, doch ich habe kein aktuelles TIA. Auch fehlen noch die Deklarationen der Variablen. Du mußt wissen, welchen Datentyp Du brauchst.
    S7-1200 kann kein AWL.

    So einfacher Code mit bedingten ADD läßt sich auch gut in FUP oder KOP programmieren ("Maschine x Betrieb" kommt dann jeweils an den EN-Eingang der ADD-Boxen).

    Harald
    Super Danke dir. Also TIA merkt nur mit der Summe das der Syntax nicht passt sonst scheint alles okay zu sein

    Und wenn ich jetzt die Werte auch noch in einen Datenbaustein haben will um sie über die Visu zu ändern wie muss ich das dann machen?

    Um hier Flexibel zu sein dachte ich mit einem Vergleicher der die Summe dann vergleicht und je nachdem welcher Wert erreicht wird ob 1 oder 2 etc dann in den Datenbaustein schreibt. Dort liegen dann die Werte für die Stufen.
    Geändert von 4nD1 (05.02.2016 um 12:47 Uhr)

  7. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.338
    Danke
    932
    Erhielt 3.333 Danke für 2.691 Beiträge

    Standard

    Du könntest die %-Stufen in einem ARRAY[0..4] OF INT hinterlegen und den Wert anhand der Anzahl gezählter Maschinen entnehmen.
    Code:
    //irgendwo ein "Sollwerttabelle : ARRAY[0..4] OF INT" mit den Werten 0, 25, 50, 75, 100 anlegen.
    
    Summe := 0 ;
    IF "Maschine 1 Betrieb" THEN Summe := Summe + 1; END_IF;
    IF "Maschine 2 Betrieb" THEN Summe := Summe + 1; END_IF;
    IF "Maschine 3 Betrieb" THEN Summe := Summe + 1; END_IF;
    IF "Maschine 4 Betrieb" THEN Summe := Summe + 1; END_IF;
    
    "MyDB".Pumpesollwert := Sollwerttabelle[Summe] ; //0..100 an Pumpensollwert geben
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    4nD1 (05.02.2016)

  9. #17
    Avatar von 4nD1
    4nD1 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    31.05.2010
    Beiträge
    414
    Danke
    40
    Erhielt 10 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    #Summe := 0;
    IF #MAE_1_Betrieb THEN
        #Summe := #Summe + 1; // Maschine 1 An
    END_IF;
    IF #MAE_2_Betrieb THEN
        #Summe := #Summe + 1; // Maschine 2 An
    END_IF;
    IF #MAE_3_Betrieb THEN
        #Summe := #Summe +1; // Maschine 3 An
    END_IF;
    IF #MAE_4_Betrieb THEN
        #Summe := #Summe +1; // Maschine 4 An
    END_IF;
    #Sollwert_FU_1 := #Summe; //1-4 Erkennung wieviele Maschinen Inbetrieb sind und weitergabe des Wertes an Ausgang
    So ich habe das nun mal als Temp alles gemacht und nun rufe ich den Baustein in einem anderen FC auf und verknüpfe da die Werte die ich dann will. =)

Ähnliche Themen

  1. AI 750-468 zeigt Werte an, obwohl keine Eingänge dran sind, defekt?
    Von Thomasheins11 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 13.04.2014, 15:12
  2. Antworten: 27
    Letzter Beitrag: 07.03.2011, 12:53
  3. Antworten: 8
    Letzter Beitrag: 30.05.2010, 23:21
  4. einmalige abfrage der eingänge
    Von MarcusS81 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 01.09.2008, 15:36
  5. Antworten: 5
    Letzter Beitrag: 16.02.2004, 16:57

Lesezeichen

Berechtigungen

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