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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 25

Thema: Automatische Adressierung

  1. #11
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Generell muss bei TwinCAT die Anazhl der E/A-Adressen beim Aufstarten feststehen, schon wegen der Verknüpfung.
    Du hast natürlich immer die Möglichkeit, Arrays von FB und Strukturen zu erstellen und in den FBs die Adressen in der Deklaration mittels %I* oder %Q* zuzuweisen. Dann werden beim kompilieren genau soviele In/Outputs erstellt, wie Bausteine deklariert wurden.

    Beispiel:
    Du deklarierst dein ARRAY [1..MAX_ANZAHL] OF BausteinFB , im Deklarationsteil VAR (nicht in VAR_INPUT / OUTPUT !!!) des BausteinFB werden die Ein/Ausgänge mit %I* und %Q* angelegt.
    Der Baustein wird in einer FOR-Schleife aufgerufen, wobei der Endwert deiner gewünschten Anzahl Bausteine (einstellbar) entspricht.

    FOR i := 1 TO GewuenschteAnzahl DO
    BausteinFB[i]();
    END_FOR

    Aber um's Verknüpfen kommste trotzdem nicht umher . Du hättest die E/As von MAX_ANZAHL Bausteinen zu verknüpfen

  2. #12
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Anders ausgedrückt:

    ich kann auf keinen fall die Input- und Output-Vars der Aufgerufenen Instanzen automatisch hochzählen lassen.


    Ideal wäre halt wenn ich %IB* und %QB* hinschreiben könnte und er würde mir dann für den Stern [i] einsetzen....

    Bei Step 7 kann ich ja z.B. indirekt adressieren über L PEW[MW10] sofern denn im MW 10 eine Zahl steht....

  3. #13
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Fakt bleibt: Bei Twincat musst du verknüpfen, direkt adressieren geht nicht, da das Programm hardwareneutral ist.
    Mit %I* erlaubt du TwinCAT, die Zuordung zwischen Prozessabbild der Hardware und Prozessabbild der SPS (die sind bei TwinCat getrennt!!!) selbst herzustellen. Mit %IW10 kannst du die Speicheranorndung manuell beeinflussen und ggf. auch gewollte Speicherüberschneidungen erzeugen. Ansonsten herrscht klare Trennung zwischen SPS-Prozessabbbild und Hardware. Erst durch das Mapping im System Manager werden beide Speicherbereiche miteinander in Beziehung gebracht.
    Nachteil: das was du möchtest geht so einfach nicht (wüsste jedenfalls nicht wie).
    Vorteil: du kannst das Programm hardwareunabhängig halten und auf beliebige Systeme portieren.

    Wie wär's mit nem Zwischenschritt?
    Du verknüpft vorab etliche Dummy-Bytes (evtl. Arrays) mit der Hardware, und zwar so viele, wie maximal an E/As vorhanden sind.
    Im Programm dann weist du den Bausteinen mittels ADR(E_Byte_xy) oder Indizes der Arrays die jeweiligen Prozessdaten zu.

    Da fällt mir ein, du kannst bei EtherCAt auch über einen Umweg absolut adressieren. Es gibt die Ethercat-Adresse für jeden Slave. Die kannst du im Programm mit entsprechenden Bibliotheken direkt ansprechen. Inwieweit das auch für Prozessdaten gilt, kann ich leider nicht sagen. Hab's noch nicht ausprobiert.
    Geändert von trinitaucher (24.07.2008 um 21:43 Uhr)

  4. #14
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Verstehe ich das richtig:

    Prozessabbild der Hardware ist z.b. das Abbild von Lo oder Hi der einzelnen Bits z.b. in einer 8-fach DI-Klemme.

    Prozessabbild der SPS sind die zugewiesenen %IX füts Programm

    Aber wenn ich das so sehe, dann führt eine Automatische, beliebige Verknüpfung dazu, dass mein Ein-Taster der Hardwareseitig am Einganbsbyte 3 , Bit 0 liegt..nachher in der SPS nich mit %IX3.0 angesprochen werden kann....

  5. #15
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Mit %IX3.0 wird ein Bit im Wort 3 des logischen Twincat Prozessabbilds reserviert. Welches physikalisch Bit das letztendlihc ist, entscheidest du durch die Verknüpfung. Ohne Verknüpfung keine Auswirkung auf die HArdware.

    Das logische Bit %IX3.0 kannst du auch mit dem physikalischen Bit %IX123.2 verküpfen. Um Überschneidungen zu vermeiden sollte man bei Twincat ja auch mit %I* adressieren.

  6. #16
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Ahja...okay...

    ABER wenn man mit %I* adressieren sollte...woher weiß ich dann, was Twincat dann selbstständig damit assoziiert???

    Ich weiß ja z.b. dass mein physikalisches Bit %IX3.0 auf dem 3. Byte, erstes Bit liegt. Also leg ich da z.b. meinen Not-Aus-Taster auf.

    Wenn ich aber im Programm dann überall %I* hinschreib...dann steht da auch 100 oder 200 mal I*

    woher weiß ich dann, womit ich den physikalischen Eingang im System-Manager verknüpfen muss??

  7. #17
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    Zitat Zitat von Majestic_1987 Beitrag anzeigen
    Ich weiß ja z.b. dass mein physikalisches Bit %IX3.0 auf dem 3. Byte, erstes Bit liegt. Also leg ich da z.b. meinen Not-Aus-Taster auf.
    Das Bit ist NICHT physikalisch, es ist logisch!
    Erstell doch mal ein Projekt mit drei Bit-Variablen (%IX3.0, %IX3.1 und %IX3.2). Im System Manager sieht du dann einfach 3 Variablen. Diese verknüpfst du mit Bit-orientierten Prozessdaten deiner Hardware. Adressen interessieren hier nicht mehr!
    Zitat Zitat von Majestic_1987 Beitrag anzeigen
    woher weiß ich dann, womit ich den physikalischen Eingang im System-Manager verknüpfen muss??
    Anhand deiner E/A-Konfiguration und der Verknüpfung, die du wählst....
    Hast du überhaupt schonmal E/As im System Manager eingefügt?

  8. #18
    Majestic_1987 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Hab grad ma was zusammengeklickt
    Und ich glaub ich habs kapiert. Problem is halt dass ich noch nich über konkrete Hardware verfüge und momentan noch mit dem Simulations-Runtime-Ding rumexperimentiere (wie gesagt, ich steige grad in die Twincat-Welt ein).

    Hab bisher nur Erfahrung mit Simatic S7 + WinCC + WinCC flex und n bissl PCS7...das ist halt der Nachteil, wenn man bei Siemens lernt...dann lernt man nur Siemens....

  9. #19
    Registriert seit
    19.11.2006
    Beiträge
    1.346
    Danke
    6
    Erhielt 254 Danke für 231 Beiträge

    Standard

    schau auch mal bei den Beispielprogrammen:
    http://infosys.beckhoff.com/index.ph...rt_sample6.htm

  10. #20
    Registriert seit
    25.06.2008
    Beiträge
    8
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von trinitaucher Beitrag anzeigen
    Fakt bleibt: Bei Twincat musst du verknüpfen, direkt adressieren geht nicht, da das Programm hardwareneutral ist.
    Mit %I* erlaubt du TwinCAT, die Zuordung zwischen Prozessabbild der Hardware und Prozessabbild der SPS (die sind bei TwinCat getrennt!!!) selbst herzustellen. Mit %IW10 kannst du die Speicheranorndung manuell beeinflussen und ggf. auch gewollte Speicherüberschneidungen erzeugen. Ansonsten herrscht klare Trennung zwischen SPS-Prozessabbbild und Hardware. Erst durch das Mapping im System Manager werden beide Speicherbereiche miteinander in Beziehung gebracht.
    Nachteil: das was du möchtest geht so einfach nicht (wüsste jedenfalls nicht wie).
    Vorteil: du kannst das Programm hardwareunabhängig halten und auf beliebige Systeme portieren.
    Cool, dass das gerade hier diskutiert wird. Ich habe gerade auch so gemacht.
    Code:
    Var_Global
         b_out           AT %Q* : BOOL;        
    end_var
    Allerdings meckert der Compiler:

    Code:
    Warnung 1990: Kein VAR_CONFIG für 'b_out'
    In einem anderen Projekt wurde die Liste als ein readonly-file (TwinCat_Configuration (VAR_CONFIG) <R>) erzeugt
    Bsp:
    Code:
    Var_Config
           .Ix_B_AbsaugungOK AT %IX126.4 : BOOL;
    end_var
    Welche Einstellung muss ich n da noch vornehmen? Ich habe beide Projekte miteinander verglichen, aber konnte nix feststellen.

Ähnliche Themen

  1. ASI 3422 (automatische Adressierung)
    Von fai004 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 29.07.2010, 14:57
  2. Automatische Umwandlung von Kop in AWL
    Von Mario_1 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.06.2006, 12:04
  3. Automatische Richtungswahl
    Von Jim Knopf im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 21.02.2006, 09:06
  4. Automatische Bildumschaltung
    Von chivas im Forum HMI
    Antworten: 3
    Letzter Beitrag: 06.10.2004, 10:17
  5. Automatische Programmänderung S5
    Von Balou im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 25.04.2004, 18:46

Lesezeichen

Berechtigungen

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