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

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

Thema: die 1500 und das IO Mapping vorteile und nachteile der untersch. Herangehensweise

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.302
    Danke
    682
    Erhielt 591 Danke für 452 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen

    Ich bin grade wiedermal dran eine neue CPU für Dubai zu normieren.

    Neu habe ich die abgesetzten Schaltränke komplett auf RemoteIOs umgerüstet. Da es die Fehlerquote beim Verkabeln enorm einschränkt wenn man keine 20 paralellen Drähte von Schrank zu schrank anschliessen lassen muss.

    Also bekommt jeder Schrank ein ET200sp IO mit exakt der gleichen belegung. Also 32DI, 16DO, 2AO und eine 480VAC Energiemesskarte (zum ersten mal).

    Jetzt wollte ich das erst wie gehab mit Strukturen in der Symbolik aufbauen.

    und dann so zuweisen


    Aber die 1500er bietet ja jetzt z.B. einen Symbolischen Zugriff auf die Module an mit dem man gleich die Länge und Adresse rauskriegt und ummappen kann.
    Code:
    #statErrInfo := RD_ADDR(LADDR := "Local~DI_8x24VDC_BA_1_1",
                            PIADDR => #statAddrInIO,
                            PICount => #statLenIn,
                            PQADDR => #statAddrOutIO,
                            PQCount => #statLenOut);
    
    
    //read inputs from Energy Meter 480VAC
    #GETIO_PART_Instance(ID:="Local~DI_8x24VDC_BA_1_1",
                         OFFSET:=0,
                         LEN:=UDINT_TO_INT(#statLenIn),
                         STATUS=>#statStatusGetIOPart,
                         ERROR=>#statErrGetIOPart,
                         INPUTS:=#ldb_SL1);
    
    
    "IO_DB".LDB1.CabinTempAlert := NOT #ldb_SL1.CabinTempAlert;
    "IO_DB".LDB1.CB230VAC := NOT #ldb_SL1.CB230VAC;
    Man könnte also z.B. "Local~DI_8x24VDC_BA_1_1" auch über die Objektbausteinschnittstelle übergeben und das Mapping intern machen. Würde auch Schnittstellenverlängerungen automatisch mitkriegen etc. Aber dasselbe ginge ja auch einfach mit nem UDT auf der Hardwaresymbolik und UDT Schnittstelle am Baustein.

    Also wozu genau dient das GETIO genau? was sind die Vorteile?

    mfG René
    Zitieren Zitieren die 1500 und das IO Mapping vorteile und nachteile der untersch. Herangehensweise  

  2. #2
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    230
    Danke
    12
    Erhielt 64 Danke für 33 Beiträge

    Standard

    Ich denke in erster Linie ist der GETIO dafür da Daten Konsistent auszulesen. Immerhin ruft dieser den SFC14 DPRD_DAT auf.
    Vermutlich besteht der Unterschied nur darin das der GETIO sein Zielbereich als VARIANT adressieren kann.

    Du würdest also für alle von dir verfügbaren Baugruppen UDTs anlegen und dann deine Peripherie über Objekte einlesen und auf DBs schreiben ?
    It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.


  3. #3
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.302
    Danke
    682
    Erhielt 591 Danke für 452 Beiträge

    Standard

    Zitat Zitat von miasma Beitrag anzeigen
    Du würdest also für alle von dir verfügbaren Baugruppen UDTs anlegen und dann deine Peripherie über Objekte einlesen und auf DBs schreiben ?
    Jop vor allem die Objekte die sich auch auf den IOs abbilden. Also immerwieder die gleiche Reihenfolge haben.
    LDB ist z.B. so ein Objekt. Eine DI Karte,dann DO, AO, und Energiemesskarte. Immer gleich belegt. Da bietet sich eine Struktur eben an. Dann könnte man dann am Objektbaustein direkt die Struktur anhängen und der macht dann Alarming, Verarbeitung und die Objektbedienung gleich dadraus. Hat den Vorteil das man bei einem zusätzlichen Schaltschrank für 40 zusätzliche Datenpunkte nur in echt 5 Strukturen an einem FB anhängt und von LDB5 nach LDB6 ändert.
    Verringert die Fehlerquote ungemein. Ohne n haufen schwer nachvollziehbare Pointer im Baustein selber.

    mfg René

  4. #4
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    230
    Danke
    12
    Erhielt 64 Danke für 33 Beiträge

    Standard

    Wenn man wirklich so fest definierte Objekte hat ist das sicher eine sehr interessante Lösung.
    Wenn man die Siemens HMI nutzt könnte man sich die Alarme dann sogar automatisch generieren lassen mit dem Program_Alarm da Baugruppenname und Elemente ausgelesen werden können.

    Auf jeden Fall eine interessante Möglichkeit.

    Ganz genau betrachtet hat man so vermutlich einen doppelten Peripheriezugriff. Einmal durch das zyklische Prozessabbild und dann durch den GETIO.
    Bei der Performance der heutigen Steuerungen wohl kein Problem, falls doch kann man die Anschaltung ja aus dem Prozessabbild raus nehmen.
    It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.


  5. #5
    Registriert seit
    13.10.2007
    Beiträge
    11.599
    Danke
    2.676
    Erhielt 3.011 Danke für 2.046 Beiträge

    Standard

    Hallo René, hallo Martin,
    könnt ihr mal für Dummys erklären was ihr da vor habt.
    Ich hab das noch nicht so richtig verstanden.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  6. #6
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    230
    Danke
    12
    Erhielt 64 Danke für 33 Beiträge

    Standard

    Der Kollege liest seine IOs ein und mapped diese auf DBs.

    Hierzu hat er zwei Methoden ins Auge gefasst.

    1. UDT für die Peripheriebereiche anlegen (geht bei der 1500er) und anschließend Händisch den Peripheriebereich in den DB kopieren.

    2. Der Kollege schreibt sich eine Funktion die nur den symbolischen Namen der Peripherie kennen muss. Über diesen Namen liest (RD_ADDR) er die Adresse der der Baugruppe aus. Mit der Adresse als Parameter für GETIO liest er dann die Peripherie der Baugruppe aus und kopiert diese in seinen DB. In seinem Beispiel hier macht er das zwar für jedes Element seiner Struktur einzeln (vermutlich wegen der Negierung) aber er könnte auch Struktur auf Struktur kopieren. Wenn man ganze Strukturen kopiert könnte man den Baustein sogar so gestalten das dieser die Struktur per VARIANT bekommt und somit ein Baustein für das Mapping aller Baugruppen zu verwenden ist.
    It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.


  7. #7
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.302
    Danke
    682
    Erhielt 591 Danke für 452 Beiträge

    Standard

    Zitat Zitat von miasma Beitrag anzeigen
    2. Der Kollege schreibt sich eine Funktion die nur den symbolischen Namen der Peripherie kennen muss. Über diesen Namen liest (RD_ADDR) er die Adresse der der Baugruppe aus. Mit der Adresse als Parameter für GETIO liest er dann die Peripherie der Baugruppe aus und kopiert diese in seinen DB. In seinem Beispiel hier macht er das zwar für jedes Element seiner Struktur einzeln (vermutlich wegen der Negierung) aber er könnte auch Struktur auf Struktur kopieren. Wenn man ganze Strukturen kopiert könnte man den Baustein sogar so gestalten das dieser die Struktur per VARIANT bekommt und somit ein Baustein für das Mapping aller Baugruppen zu verwenden ist.
    Ich hab mir bei dieser Vorgehensweise halt gedacht, dass es irgendwie möglich sein sollte einem Baustein nur den Baugruppennamen zu übergeben
    "LDB-01~DI16_1" und dann auf die Module dieser Baugruppe indiziert zugreifen kann. Also dieses Symbol zum übersetzungszeitpunkt irgendwie zusammensetzen kann (oder wärend der Laufzeit)
    Also kann ich LDB-01~ am aufrufenden Baustein übergeben und dann an RD_ADDR das Symbol zusammensetzen LDB-01~DI16_1.
    Dann könnte ich die ganze Behandlung mit nur einem einzigen Datenpunkt statt mit einem Datenpunkt für jedes Modul behandeln.

    mfG René

  8. #8
    Registriert seit
    13.10.2007
    Beiträge
    11.599
    Danke
    2.676
    Erhielt 3.011 Danke für 2.046 Beiträge

    Standard

    achso ...

    ist das verwenden des UDT in den Peripheriebereich nicht schon eine Art Mapping und
    kann er dann diese gemappte Periperie nicht direkt Symblisch an seinen Baustein legen?

    Meiner Aufassung nach währe doch diese doppelte mappen eine Recourcen Verschwendung
    und macht die sache noch ein wenig unüberschaubarer.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  9. #9
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.302
    Danke
    682
    Erhielt 591 Danke für 452 Beiträge

    Standard

    Zitat Zitat von rostiger Nagel Beitrag anzeigen
    Meiner Aufassung nach währe doch diese doppelte mappen eine Recourcen Verschwendung
    und macht die sache noch ein wenig unüberschaubarer.
    Eben, doppelt wollte ich es auf keinen Fall machen. In der Symbolik kann ich ja aber nur Typweise mappen. Also zusammenhängende Adressbereiche.
    Wenn ich ein DI modul, dann DO, dann AI habe. Dann kann ich zwar ein UDT über DI und AI legen (wenn die adressen direkt aufeinander folgen) aber in diesem UDT kann sich dann nicht DO befinden.

    Kann ich das aber mit RD_ADDR in einem Baustein abhandeln, kann mir die peripherieadresse ja egal sein. Ich frag einfach die einzelnen Slots ab und leg die entsprechend auf die DB/IDB Variable
    Also will ich meinen DB

    direkt abfüllen indem ich eine der Hauptvariablen des Kopfes an einem Baustein anlege.

    und daraus dann die Submoduladresse ableite.


    Und damit könnte ich dann ja die Peripherieadressen auslesen.

    mfG René

  10. Folgender Benutzer sagt Danke zu vollmi für den nützlichen Beitrag:

    rostiger Nagel (28.09.2016)

  11. #10
    Registriert seit
    25.01.2008
    Ort
    Hamburg
    Beiträge
    230
    Danke
    12
    Erhielt 64 Danke für 33 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nein, das verwenden von UDTs für Variablen nutzt trotzdem die E/A aus dem Prozessabbild. Es ändert sich nur die Sicht.
    It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is most adaptable to change.


Ähnliche Themen

  1. CANopen SDO Konfiguration und Variable Mapping der Parameter.
    Von Sohaib im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 11.10.2015, 13:55
  2. Antworten: 6
    Letzter Beitrag: 07.07.2015, 09:10
  3. Umstieg auf das TIA Portal und die S7-1500
    Von Grollmus im Forum Werbung und Produktneuheiten
    Antworten: 0
    Letzter Beitrag: 08.08.2013, 09:39
  4. welche VM? Vor- und Nachteile der verschiedenen Produkte ...
    Von Perfektionist im Forum PC- und Netzwerktechnik
    Antworten: 50
    Letzter Beitrag: 27.12.2011, 21:37
  5. Der EURO, das ÖL und die Währungsreform
    Von Onkel Dagobert im Forum Stammtisch
    Antworten: 48
    Letzter Beitrag: 21.07.2010, 18:41

Lesezeichen

Berechtigungen

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