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

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

Thema: FC-Bausteinschnittstelle Byte deklariert, Bit-Zugriff

  1. #1
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Hab TIA v13 und möchte einem FC ein paar Signale übergeben. Da es recht "viele" sind, dachte ich mir, zwecks übersicht, das ich sie als Byte übergebe.
    Hab also in der Bausteinschnittstelle 4 Eingangswörter als Byte deklariert.

    Bei Step7 hab ich dann immer diese auf eine Temp-Variable umkopiert und dann z.B. L#0.0 geschrieben.
    Bei TIA ändert er das automatisch auf %L0.0 um.

    Beim Übersetzen merkert er aber, das
    1. absolute Zugriffe nicht schön sind und
    2. Einen Typkonflikt an der Stelle, wo ich %L0.0 geschrieben habe.

    Die im Handbuch beschriebene Version mit #TempVar.%x1 funktioniert nicht, da meine SPS dies nicht unterstüzt.

    Jemand noch andere Ideen? Ich will nicht 32 Einzeleingänge anlegen -.-
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN
    Zitieren Zitieren FC-Bausteinschnittstelle Byte deklariert, Bit-Zugriff  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard

    300/400 Cpu?

    In SCL könntest du mit AT-Sicht arbeiten.

    In AWL könntest du mit nem Pointer auf ein Array of Bool (oder struct) im Temp arbeiten.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    WinAC RTX
    SCL wollte ich vermeiden, da Instandhalter den Baustein auch verstehen sollen. Und da gibt es leider zu viele bei uns, die das nicht können.
    Array hab ich schon versucht, muss ich aber von Extern an den Baustein auch als Array übergeben. D.H. ich muss alle DBs nochmal anfassen und von Typ Byte auf Array of Bool umstellen.
    Viel Arbeit, wenns anders möglich wäre

    Ich will das wieder von Step7 haben!
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  4. #4
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    Array hab ich schon versucht, muss ich aber von Extern an den Baustein auch als Array übergeben. D.H. ich muss alle DBs nochmal anfassen und von Typ Byte auf Array of Bool umstellen.
    Nö, so war es nicht gemeint.

    Code:
    //B_IN => Byte am IN
    //B_IN_ARRAY => Array[0..7] of Bool in Temp (Könnte auch eine Struktur sein)
    
    L     P##B_IN_ARRAY
    LAR1                        //Pointer auf Array
    L     #B_IN
    T     LB [AR1,P#0.0]   //Byte kopieren
    Sofern TIA das noch ohne zu meckern akzeptiert.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    ... SCL wollte ich vermeiden, da Instandhalter den Baustein auch verstehen sollen. Und da gibt es leider zu viele bei uns, die das nicht können.
    ... und das Pointer-Spiel verstehen die dann ? Kann ich mir nicht wirklich vorstellen ...

    Gruß
    Larry

  6. #6
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Also die "alte" Version funktioniert. Man muss nur die Compiler-Warnungen umstellen, das er auch übersetzt. Zwar hab ich dann 32 Warnungen, aber die Fehler wegen Typkonflikt sind weg.
    Jetzt muss es nur noch in der Steuerung laufen, das kann ich aber erst morgen testen...
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  7. #7
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Info: Funktioniert!


    z.B.:
    #IN_R #IN_1 %L0.0
    |----| |------|/|----------( )
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    Info: Funktioniert!


    z.B.:
    #IN_R #IN_1 %L0.0
    |----| |------|/|----------( )
    Aber das halte ich wirklich für die denkbar schlechteste Lösung!
    Unübersichtlich und tatsächlich auch gefährlich, wenn später noch jemand lokale Variablen deklariert, gibt es u.U. Überschneidungen und böse Effekte.
    Warum legst du nicht eine Struktur an, die du dann in einem DB definierst. Diese Struktur kannst du im FC in der IN-, OUT- oder noch besser INOUT-Schnittstelle einfügen und beim Aufruf des FC antragen.
    Gefüllt wird diese Struktur dann genauso, wie du das oben zeigst, nur nicht auf Lokaldaten, sondern auf den DB. Das wäre m.E. nach viel sauberer, verständlicher und auch für jeden nachvollziehbar.
    Im FC kannst du dann mit den Elementen der Struktur arbeiten.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.339
    Danke
    449
    Erhielt 688 Danke für 513 Beiträge

    Standard

    Zitat Zitat von Krumnix Beitrag anzeigen
    Also die "alte" Version funktioniert. Man muss nur die Compiler-Warnungen umstellen...
    Die Betonung liegt auf "alt" wie "S5-Steinzeit-alt"...
    Die Compilerwarnungen haben schon ihren Grund.
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  10. #10
    Krumnix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jungs, nicht aufregen
    Ich muss eine alte Version nutzen, da 60% unser Anlagen noch S5 sind und somit die Instandhalter das gewöhnt sind.
    Es bringt mir nix, wenn ich was top modernes und optimales einsetze, wo nachher nur 2-3 Leute das verstehen.
    Ich hab keine Lust Nachts angerufen zu werden, wenn die Anlage steht, nur weil ich es "sauber" programmiert habe.
    Dann sterbe ich lieber diesen Tot
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

Ähnliche Themen

  1. Sonstiges Byte zu Bit
    Von Suni im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 21.08.2014, 07:49
  2. Step 7 DB Byte in Bit aufdröseln
    Von mariob im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.11.2013, 07:12
  3. S7 bit /byte
    Von MyNameIsThoms im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.05.2012, 20:46
  4. bit and byte
    Von PG710 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.12.2008, 21:57
  5. Antworten: 0
    Letzter Beitrag: 23.10.2008, 21:11

Lesezeichen

Berechtigungen

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