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

Ergebnis 1 bis 4 von 4

Thema: DB Send

  1. #1
    Registriert seit
    02.11.2010
    Beiträge
    29
    Danke
    18
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusammen

    Ich habe Probleme innerhalb einer Funktion (FC93) den DB Send mehr als einmal zu benutzen (s. unbennant.jpg). Der Send FB wird hier wie gewünscht auch öfters aktiviert, aber die CP340 sendet (blinkt) nur einmal.

    Rufe ich den DB Send im übergeorneten Programmteil öfters auf (z.B. im FC89), so klappt dies auch mehrmals. (s. unbennant2.jpg).

    Im FC89 habe ich einen Receive Baustein. Im FC93 nicht. Liegt es daran?
    Müssen Send Blöcke verschiedene DBs im gleichen Unterprogramm haben?
    Muss ich einen RESET FB einbauen?

    CPU Typ:315-2DP
    Software: STEP7 V5.4 + SP4

    Gruß
    JK
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren DB Send  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Also drei Dinge mal auf die Schnelle:
    1. Ich würde ohnehin immer nur einen Send-Baustein für die CP340 nutzen und das Ganze so aufbauen, das nacheinander die gewünschten Sendeaufträge abgearbeitet werden. Kann durchaus sein, das man mehrere Send-Aufträge absetzen kann, der Baustein regelt das vielleicht intern selbst (wie bei PUT und GET über Ethernet), aber das muss man im Vorfeld abklären, indem man das Handbuch liest.
    2. Wenn du schon mehrere Send-Bausteine aufrufst, dann sollte doch jeder seinen eigenen Db haben, das ist genau wie bei den FB der interne Speicher des jeweiligen FB.
    3. Die Outs des FB haben ihren Sinn. Dinge wie "Done", sagen einem z.Bsp., dass der Auftrag erfolgreich beendet wurde. Die Timer-Orgie die du da veranstaltest, ist nicht nur unschön, sondern auch extrem schlechter Stil. Nutze die Outputs der Bausteine, um die Kontrolle über den Ablauf zu haben und nicht Timer. Diese sollte man zur direkten Steuerung möglichst meiden, als Timeout oder als Pause zwischen zwei Aufträgen ist das ok, aber ansonsten eher nicht.
    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

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    xymoro (13.04.2011)

  4. #3
    xymoro ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.11.2010
    Beiträge
    29
    Danke
    18
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi Ralle,

    Danke für die Kommentare. Ich habe mein Programm umgebaut. Dies hat ein bißchen gedauert, daher erst jetzt meine Antwort.

    Eine Frage vorab:
    Zitat Zitat von Ralle Beitrag anzeigen
    Die Timer-Orgie die du da veranstaltest, ist nicht nur unschön, sondern auch extrem schlechter Stil.
    Wo finde ich guten Stil? Hast du da eine Empfehlung. Evt. die IEC61131-3?

    zu 1. Super Idee. Jetzt brauche ich nicht X Bausteine parametrieren. Und Fehler Bits (Ausgangs des Send bausteins), die bei 20 SEND Bausteinen nervig waren, lassen sich bei einem baustein besser einbauen und vor allem testen...
    zu 2. siehe 1.
    3. Jetzt auch viel einfacher zu programmieren, da es immer nur einen DONE gibt

    --> mehrere Befehle wie bei put get zu senden habe ich nicht gefunden. Aber ich habe einfach eine Variable an den den Baustein verknüpft, der ihm Sagen soll welchen Text er senden soll. Und rufe diesen dann einfach zyklisch auf. Im ersten Zyklus mit Zeile 1 im zweiten mit Zeile 5 usw. (Wie man es dann halt braucht)

    Gruß
    JK

  5. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, das mit dem guten oder schlechten Programmierstil ist so eine Sache. Damit kann man seitenlange Diskussionen starten/auslösen, die teilweise in eine Art Glaubenskrieg ausarten. Jeder sieht das ein wenig anders. Es gibt aber ein paar Grundregeln, die sich in der Praxis bewährt haben. Eine davon besagt, dass man Prozesse möglichst mit Rückmeldungen versehen soll und wenn man diese zur Verfügung hat, man diese auch nutzt. In deinem speziellen Fall, gibt der Baustein eine Done-Meldung aus, wenn er seine Arbeit erledigt hat. Statt dieser Done-Meldung, kann man auch einen Timer nehmen, ein paar mal testen, wie lange das Senden dauert und dann den Timer auf die doppelte Zeit stellen. Das ist dann schlechter Stil, weil man niemals sicher sagen kann, dass es immer so klappt. Die Done-Rückmeldung ist sicher, wenn die kommt, ist alles erledigt. Gleiches gilt m.E. nach für Handshake-Signale zwischen Maschinen oder auch Prozessen. Du kannste einem Roboter ein Signal geben, er soll das Teil abholen und dann einen Timer 20 Sekunden warten lassen. anschließend machst du weiter. Das ist übel, denn im schlechtesten Fall kracht es. Besser, der Robbi gibt ein Signal zurück, welches das Teil als abgeholt signalisiert.
    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

Ähnliche Themen

  1. AG Send, AG Recv
    Von Deep Blue im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 01.05.2015, 16:28
  2. SEND/RECEIVE mit UDP
    Von DerWolf im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 31.07.2007, 18:22
  3. MM4 DP-Send Statusfehler 8180hex
    Von Buchholz im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 24.10.2006, 21:57
  4. SMS Send
    Von Mohrchen im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 06.03.2006, 22:16
  5. Send / Receive
    Von Anonymous im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 19.10.2005, 12:04

Lesezeichen

Berechtigungen

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