TIA Variable Ablauf Reihenfolge Zylinderbewegungen - wie würdet ihr das umsetzen?

Zuviel Werbung?
-> Hier kostenlos registrieren
Für HMI:

Feld mit 4 x 4 Checkboxen die je ein Bit bearbeiten

Dann kann man einfach das anklicken was passieren soll.

für die Schrittkette muss man das dann halt beenden wenn alle zu fahrenden Zylinder ihre Enposition erreich haben (zB.: wenn im 1. Schritt gleich alle 4 Zylinder gefahren werden sollen)
Genau. Dann ist mann so wie in meiner Skizze
 
Mahlzeit,

hatte ein wenig Langeweile. Vielleicht kannst Du damit etwas anfangen. Ist ein TIA V17 Projekt mit Visu zum testen. Der Ablaufbaustein ist in SCL.
 

Anhänge

  • Zylinderreihenfolge.zip
    642,9 KB · Aufrufe: 19
Zuviel Werbung?
-> Hier kostenlos registrieren
wow, danke schön, das schau ich mir an sobald ich wieder in der Firma ab januar bin,
echt klasse von dir, tolle Weihnachtsüberrasschung und freut mich, dass meine Problemstellung dein Interesse geweckt hat es zu lösen.
;)

hast es mal getestet im simu? (kann leider ja nichts machen zu hause)
 
In der Simulation läuft es in beide Richtungen auch mit mehreren Ventilen gleichzeitig schaltend. Hab es mit 16 Ventilen probiert. Du musst nur beachten dass in der Folge keine Lücken sind. Also z.B. 1,2,3,4... und nicht 1,2,4....
 
danke schön, würde es zu gern anschauen, hab zu hause leider nicht die Möglichkeit...
die Positionen der Zylinder hast sicherlich berücksichtigt.
auch die "0"? also wenn ein Zylinder mal nicht schalten soll?

hört sich toll an. nun muss ich warten.. seufz
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist wirklich Klasse umgesetzt! Habe ein Feature gefunden, wenn "Entspannen" während dem Spannen Aktiviert wird bleibt der letzte Zylinder in Arbeitsposition.
IF NOT #FP_Entspannen THEN in IF NOT #FP_Entspannen AND #Gespannt THEN geändert dann werden alle Zylinder in GS geschalten...

Kleines Video anbei ;)

Wenn deine Geduld am ende sein sollte, dann kannst bei Siemens auch das TIA V17 herunterladen. Brauchst aber eine Registrierung und eine Freischaltung...
 

Anhänge

  • Bildschirmaufzeichnung vom 21.12.2022, 15:03:54.zip
    2,1 MB · Aufrufe: 36
super, danke für das Video, macht die warterei erträglicher. ;)
sieht echt gut aus wie das abläuft.

tia möchte ich hier nicht installieren, da es schon tief ins system verankert.

das heisst wenn ich eine andere reihenfolge zb umgekehrt beim entspannen haben möchte, nutze ich das script einfach ein 2. mal diesmal zum entspannen oder?
 
So wie das im Video abläuft ist das Programm, also Spannen und Entspannen. Die Änderung die ich gemacht habe, verhindert nur eine dauerhafte Ansteuerung eines Zylinders wenn unterm Betrieb von Spannen auf Entspannen geschalten wird.
Die Reihenfolge legst du selbst mit den Zahlen fest...

tia möchte ich hier nicht installieren, da es schon tief ins system verankert.
Deshalb habe ich mein Windows in eine VirtualBox gesperrt ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist wirklich Klasse umgesetzt! Habe ein Feature gefunden, wenn "Entspannen" während dem Spannen Aktiviert wird bleibt der letzte Zylinder in Arbeitsposition.
IF NOT #FP_Entspannen THEN in IF NOT #FP_Entspannen AND #Gespannt THEN geändert dann werden alle Zylinder in GS geschalten...

Kleines Video anbei ;)

Wenn deine Geduld am ende sein sollte, dann kannst bei Siemens auch das TIA V17 herunterladen. Brauchst aber eine Registrierung und eine Freischaltung...
Die Sonderfälle habe ich mir jetzt noch nicht genau angeschaut.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist ein typisches Mapping-Problem und lässt sich mit einem sog. Kreuz-Und-Quer-Schalter erledigen.
Für dein Problem mit den 4 Zylinder, wäre das ein 4-fach Bit-Mapping-Baustein. Die 4 Eingänge werden
den 4 Ausgängen anhand von Numern zugeordnet, der Mapping-Tabelle. In deinem Fall wäre das dein Programm.

Hier der SCL Code des 4-fach Bit-Mapping-Bausteins
Code:
FUNCTION m7_MAP_4xBOOL : VOID
    TITLE ='Maps 4 IN to 4 OUT using a mapping table; BOOL'

// ==============================================================================
// This function maps 4 individual Inputs to 4 individual Outputs using a
// mapping table MAP_1..MAP_4. There is no check FOR double using an INPUT
// or OUTPUT.
//
// 2 mapping modes are available: Set it with cfg_InToOut_OutFromIn
// For MAP_TABLES [1,2,3,4] and [4,3,2,1] the result of both modes
// is identical
//
// Mode InToOut: The input is copyied to the output according to the MAP_TABLE
//               IN_x => OUT[MAP[x]]
//
// MAP_1 = 4 :  OUT_4 := IN_1   ; IN_1 => OUT_4
// MAP_2 = 2 :  OUT_2 := IN_2   ; IN_2 => OUT_2
// MAP_3 = 1 :  OUT_1 := IN_3   ; IN_3 => OUT_1
// MAP_4 = 3 :  OUT_3 := IN_4   ; IN_4 => OUT_3
//
// Mode OutFromIn : The output reads the corresponding input according to the
//                  MAP_TABLE
//                  OUT_x := IN[MAP[x]]
//
// MAP_1 = 4 :  OUT_1 := IN_4   ; OUT_1 <= IN_4
// MAP_2 = 2 :  OUT_2 := IN_2   ; OUT_2 <= IN_2
// MAP_3 = 1 :  OUT_3 := IN_1   ; OUT_3 <= IN_1
// MAP_4 = 3 :  OUT_4 := IN_3   ; OUT_4 <= IN_3
// 
// ==============================================================================
//
// AUTHOR: S.Maag
// DATE: 07/2012
//
// CHANGELOG:
// ------------------------------------------------------------------------------
// DATE         NAME        DESCRIPTION
// ------------------------------------------------------------------------------
// 07.04.2020   S.Maag      Coverted to SCL
//                          Now support 2 mapping modes InToOut and OutFromIn
//                          old version from 2012 was only for OutFromIn
// ------------------------------------------------------------------------------
 
    VERSION : '3.0'
    AUTHOR  : 'S.Maag'
    FAMILY  : 'Maagic7'

VAR_INPUT
  inBit1 : BOOL;
  inBit2 : BOOL;
  inBit3 : BOOL;
  inBit4 : BOOL; 
  MAP_1  : INT;     // mapping table MAP[1]
  MAP_2  : INT;     // mapping table MAP[2]
  MAP_3  : INT;     // mapping table MAP[3]
  MAP_4  : INT;     // mapping table MAP[4]
  cfg_InToOut_OutFromIn : BOOL;  // 0: inBit_x => OUT[MAP_x]; 1: OUT_x := inBit[MAP_x]
END_VAR

VAR_OUTPUT
    outBit1 : BOOL;
    outBit2 : BOOL;
    outBit3 : BOOL;
    outBit4 : BOOL;
END_VAR
    
VAR_TEMP
    memIN : ARRAY[1..8] OF BOOL;
    memOUT: ARRAY[1..8] OF BOOL;
 //   ptr_memOUT AT memOUT : BYTE;
END_VAR

BEGIN 
  //   ptr_memOUT := B#16#0;  // memOUT[] := 0;

     memOUT[1] := FALSE;
     memOUT[2] := FALSE;
     memOUT[3] := FALSE;
     memOUT[4] := FALSE;
    
    IF cfg_InToOut_OutFromIn THEN
    // OutFomIN
    // OUT_x := inBIT[MAP_x];
        memIN[1] := inBit1;
        memIN[2] := inBit2;
        memIN[3] := inBit3;
        memIN[4] := inBit4;
        
        IF MAP_1 >=1 AND MAP_1 <=4 THEN memOUT[1] := memIN[MAP_1]; END_IF;
        IF MAP_2 >=1 AND MAP_2 <=4 THEN memOUT[2] := memIN[MAP_2]; END_IF;
        IF MAP_3 >=1 AND MAP_3 <=4 THEN memOUT[3] := memIN[MAP_3]; END_IF;
        IF MAP_4 >=1 AND MAP_4 <=4 THEN memOUT[4] := memIN[MAP_4]; END_IF;

    ELSE
    // InToOut
    // inBIT_x => OUT(MAP_x]
        IF MAP_1 >=1 AND MAP_1 <=4 THEN memOUT[MAP_1] := inBit1; END_IF;
        IF MAP_2 >=1 AND MAP_2 <=4 THEN memOUT[MAP_2] := inBit2; END_IF;
        IF MAP_3 >=1 AND MAP_3 <=4 THEN memOUT[MAP_3] := inBit3; END_IF;
        IF MAP_4 >=1 AND MAP_4 <=4 THEN memOUT[MAP_4] := inBit4; END_IF;
    END_IF;

    outBit1 := memOUT[1];
    outBit2 := memOUT[2];
    outBit3 := memOUT[3];
    outBit4 := memOUT[4];

END_FUNCTION

Damit muss man mal etwas spielen!
 
hab jetzt mal eine kurze Demo mit dem Mapping gezimmert.
In S7 Classic und konvertiert zu TIA 15.1
 

Anhänge

  • ZylinderMapping_classic.zip
    338,4 KB · Aufrufe: 2
  • ZylinderMapping_V15_1.zip
    341,8 KB · Aufrufe: 5
danke dir. schau ich mir bei Beginn des Projekts mal an.
ist bei deinem projekt auch die dann jeweilige enschalterabfrage eingepflegt?, denn diese ändern sich ja auch anhand der reihenfolge der Zylinderbewegung.

Wie schaut denn jetzt deine Lösung aus?
das projekt wurde nochmal verschoben, wird aber mitte februar gestaret, werde dann berichten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zylinder Endlagen sind mit umgeschaltet!
Da es aber nur eine schnelle Demo ist, um das Prinzip zu zeigen, ist es natürlich kein fertiges Programm für die Anwendung.
Weitere Umschaltungen z.B. die Grundstellungen oder Startbefehle aus einer Schrittkette kann man nach dem gleichen Prinzip umschalten (mappen)!

Der Vorteil im Mapping liegt, dran, dass man damit extrem komplizierte Sachen hinbekommt, an denen man sonst scheitert oder es so kompliziert wird, dass kein Mensch mehr durchblickt.
Z.B. optimierte Umschaltung von Heizungen, Pumpen, Kompressoren ...!
 
Zurück
Oben