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

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

Thema: Auswertung eines Bits für 2 funktionen

  1. #11
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Konnte mir Dein Projekt noch nicht ansehen, da ich unterwegs bin.
    Aber wenn er bei Dir die Namen mit der Raute nicht nimmt, dann hast Du diese Symbole in der Schnittstelle des Bausteins nicht deklariert.
    Die Schnittstelle lässt sich am oberen Rand des Programmeditors aufklappen. Schau mal in meine letzten Beiträge in Kutis letzten Thread, da findest Du einen Screenshot davon.
    Geändert von hucki (05.07.2013 um 05:26 Uhr) Grund: Tapatalk sucks

  2. #12
    Registriert seit
    23.11.2012
    Ort
    Österreich
    Beiträge
    147
    Danke
    48
    Erhielt 19 Danke für 19 Beiträge

    Standard

    ich kann dein Projekt leider nicht öffnen. kannst du die AWL Anweisung rein posten?

    grüsse

  3. #13
    Registriert seit
    19.01.2012
    Ort
    Mitte Deutschlands
    Beiträge
    77
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist kop und für s71200 und hab's an Arbeit mit tia 12 erzeugt

  4. #14
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Zitat Zitat von Der Dreschi Beitrag anzeigen
    das mit den rauten in den beispielen nimmt der nicht. Das wird rot markiert, also irgendwas habe ich da falsch gemacht.
    Hallo.

    Es sind in dem Beispiel Lokal Variablen, die muss du oben im Deklarationsteil deines FBs erst "bekannt geben". Wenn dann Name und Typ korrekt sind, ist es dann im Netzwerk nicht mehr rot...
    Du kannst dafür aber auch ertsmal einen Merker verwenden.

    Gruß
    DerMatze
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  5. #15
    Registriert seit
    19.01.2012
    Ort
    Mitte Deutschlands
    Beiträge
    77
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Habe ich ja versucht, kann man ja in dem projekt sehen, aber irgendwas ist halt falsch

  6. #16
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Ja, da ist einiges falsch:

    Du hast zwar die beiden lokalen Variablen "Zeitvorgabe" und "Zeitvorgabe neu" erstellt, aber diese haben das Format "bool" bzw. "byte". Beide sollen aber einen Inhalt vom Typ "Time" bekommen. Also musst Du das auch bei der Deklaration angeben.

    Im Netzwerk 2 verwendest Du dann die falsche Flankenabfrage. Die von Dir gewählte ist eine Zuweisung, zu erkennen an der Klammer (). Du benötigst aber die Abfrage, gekennzeichnet durch ||. Dazwischen steht dann die Art der Flanke, die Du mit N für Negativ richtig gewählt hast.

    PS: Ich hab' gerade gesehen, dass Du vermutlich mal das Taktmerkerbyte aktiviert hattest und dafür auch das MB0 angegeben war, wie jetzt für das Systemmerkerbyte. Dadurch gibt's für die Adresse M0.0 (und einige folgende) zwei Symbole, worüber natürlich auch gemeckert wird. Diese Symbole also löschen oder andere Adressen eintragen.


    Ich könnte Dir das korrigierte Programm zwar jetzt hochladen, aber ich vermute mal, dass Du's erst mal noch selbst versuchen willst.
    Geändert von hucki (06.07.2013 um 23:59 Uhr) Grund: PS

  7. #17
    Registriert seit
    19.01.2012
    Ort
    Mitte Deutschlands
    Beiträge
    77
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die Antwort.
    Ich werde es probieren und melde mich bei Problemen

  8. #18
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard

    Dann gibt es noch 3 Sachen, die an meinem Beispiel oben nicht besonders gut gelöst sind und die Du dann gleich mit verbessern könntest:

    1. Verwende ich als Flankenmerker für die negative Flanke des Timers einen Merker. In einem FB ist es aber besser, dafür eine lokale statische Variable vom Typ BOOL zu verwenden.

    2. Der Timer hat jetzt einen eigenen Instanzdatenbaustein. Da er aber in einem FB verwendet wird, ist es m.M.n besser, diese Instanz in die Instanz des FBs mit einzubetten. Man spricht dann von einer Multiinstanz. Dazu wird eine weitere statische Variable vom Typ "IEC_Timer" erstellt und diese dem Timer anstatt des eigenen DBs zugewiesen. Dabei muss der Typ des Timers dann auch auf Multiinstanz umgestellt werden.
    Noch einfacher ist es, den Timer noch mal neu einzufügen. Wenn bei den aufpoppenden Eigenschaften des Timers dann gleich Multiinstanz ausgewählt wird, legt TIA die statische Variable automatisch an und weist sie dem Timer zu.

    3. Und um den FB komplett zu kapseln, sollte man auch den Starteingang I0.0 auf die Schnittstelle des FBs führen. Also eine lokale Input-Variable z.B. "Start Timer" anlegen und diese Variable auf den Freigabeeingang des Timers im Netzwerk 3 geben. Dann den Aufruf des FBs im OB1 aktualisieren und an den Eingang "Start Timer" des FBs dann den Eingang I0.0 schreiben.

  9. #19
    Registriert seit
    19.01.2012
    Ort
    Mitte Deutschlands
    Beiträge
    77
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    So, theoretisch hats jetzt schon mal geklappt, nichts mehr rot, testen kann ich das widerum zuhause erst. Wenn ich das aber in ne 300 er reindattel, sollte das doch auch gehen zum testen oder gibts da die systemmerker in dem sinn nicht? Vlt sollte ich mir zum testen noch ne CPU holen

    Edit: gerade gesehen das du geantwortet hast. Da sind sie wieder die böhmischen Dörfer

  10. #20
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 920 Danke für 740 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hier mal in Bildern:

    Erweiterte Schnittstelle


    Verbessertes Programm


    Aufruf FB




    Es ist zwar nicht verboten, in FBs mit globalen Variablen (im Beispiel von Post#7 Merker und SPS-Eingang) zu arbeiten, aber es ist auch kein guter Programmierstil, weil der Baustein nicht in sich gekapselt ist. Besser ist es, innerhalb eines Bausteins nur lokale Variablen zu verwenden. Wenn ein Baustein mehrmals im Programm verwendet werden soll, ist diese Kapselung (meist, hier ist das Systemmerkerbit eine dieser Ausnahmen) sogar unumgänglich. Es ist also nicht verkehrt, sich diese Programmierweise gleich anzueignen.

    Also sorry, dass ich das überhaupt erst anders aufgezeigt habe.
    Geändert von hucki (07.07.2013 um 09:17 Uhr) Grund: globale Ausnahme trotz Kapselung

  11. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    Der Dreschi (07.07.2013)

Ähnliche Themen

  1. InstanzDB: IN(INT), Auswertung der Bits...
    Von AndreK im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 07.11.2012, 12:33
  2. Auswertung eines Zählwerts
    Von 4nD1 im Forum Simatic
    Antworten: 25
    Letzter Beitrag: 25.03.2011, 06:43
  3. Zugriff auf einzelne bits eines Realwerts
    Von Züttu im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 12.01.2011, 08:22
  4. Auswertung eines analogen Signals
    Von Rübezahl im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 26.09.2008, 22:46
  5. Antworten: 6
    Letzter Beitrag: 14.11.2006, 13:11

Lesezeichen

Berechtigungen

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