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

Seite 4 von 8 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 75

Thema: AG_RECV (FC6) für Modbus TCP Verbindung

  1. #31
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von DerMatze Beitrag anzeigen
    Nachdem Versuch dass die Werte zyklisch aktualisiert werden, gibt es wieder einen Versatz. Und es lässt sich nicht mehr reproduzieren, dass die Werte wieder "passig" im Empfangs DB landen
    Update:
    nach einem CPU Neustart stehen die Werte nun wieder passig im Empfangs DB
    aber werden nach wie vor nicht aktualisiert

    am zweiten AG_RECV wird der Status:

    Error.JPG

    ausgegeben.

    Wie verriegele ich fie beiden AG_RECV Aufrufe am besten/einfachsten
    das Bit ENO & NDR fällt dafür nun leider aus, da am ersten AG_RECV nach wie vor die 80B1 angezeigt wird, was anscheinend aber für das Empfangen egal ist - da die MW ja kommen

    Der Rx Header Inhalt sieht jetzt auch anders aus...

    Rx_nach Neustart.JPG


    Gruß
    Matze
    Geändert von DerMatze (28.03.2016 um 13:57 Uhr)
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  2. #32
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Mit dem NDR des ersten FC6 gibst du den 2ten frei, mit dem NDR des 2ten gibst du den ersten wieder frei.
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  3. #33
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Zitat Zitat von Lars Weiß Beitrag anzeigen
    Mit dem NDR des ersten FC6 gibst du den 2ten frei
    genau das funktioniert ja augenscheinlich nicht, da am ersten AG_RECV Aufruf
    Error: 1
    Status: 80b1
    ausgegeben werden und das NDR Bit nicht gesetzt wird
    AG_RECV_1.JPG
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  4. #34
    Registriert seit
    22.05.2005
    Ort
    sonniges Maifeld
    Beiträge
    1.067
    Danke
    77
    Erhielt 205 Danke für 159 Beiträge

    Standard

    Das muss funktionieren. In meinem Modbus-Baustein funktioniert das doch auch:

    MODBUS TCP Funktionbausteine Step 7
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  5. Folgender Benutzer sagt Danke zu Lars Weiß für den nützlichen Beitrag:

    DerMatze (30.03.2016)

  6. #35
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Den Baustein werde ich mal aus der Quelle erzeugen und testen.
    Zur Zeit ist ein Siemens Beispiel die Grundlage für meine Modbus Kommunikation mit dem PAC...
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  7. #36
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.327
    Danke
    932
    Erhielt 3.332 Danke für 2.690 Beiträge

    Standard

    Zur Sicherheit mal die Nachfrage, ob Deine Gerätschaften aktuell sind. Was benutzt Du?
    - CPU 315: 6ES7315-.......... Firmware V.....
    - CP343-1: 6GK7343-.......... Firmware V.....
    - FC6 AG_RECV ist V4.7?
    - FC5 AG_SEND ist V4.2?

    Der Fehler 80B1 kommt imho von der SFC59 RD_REC und tritt da angeblich nur bei alten CP auf.
    (Oder vielleicht auch bei Firmware-Problemen oder Inkompatibilitäten?)



    Es ist bei CP343-1 definitiv möglich mit mehreren verschiedenen verriegelten AG_RECV-Aufrufen zu arbeiten (z.B. zur Erhöhung der Verständlichkeit des Programms), ich verstehe allerdings nicht, wieso Du da so große Probleme mit hast. Doch wenn Du das nicht in den Griff bekommst - die gute Nachricht: es geht auch mit nur 1 AG_RECV "für alles".

    Eigentlich ist es gar nicht nötig, das Antwort-Telegramm vom PAC zu zerstückeln und abwechselnd über verschiedene AG_RECV-Aufrufe zu empfangen. Die Länge der PAC-Antwort ist nicht wirklich dynamisch variabel, sondern steuerbar/bekannt. Man muß nur geschickt dafür sorgen, daß alle 3 Antworten gleich lang sind und schon reicht 1 AG_RECV mit nur 1 konstantem RECV-Buffer-ANY für alles.
    Bei solchen Kommunikations-Aufgaben nehme ich mir üblicherweise zuerst ein Blatt Papier und einen Stift und entwerfe die Lösung, statt per trial-and-error loszuprogrammieren.

    Zuerst: Warum liest Du eigentlich die Register bis 302 vom PAC3200? Brauchst Du die wirklich? Was erwartest Du in den Registern 223 bis 302? Ist das irgendwo dokumentiert, ob und was da drin steht? Die fertigen Siemens-Bausteine lesen diese Register nicht.

    Um das Ausleseprogramm zu vereinfachen und ohne Schrittkette auszukommen, würde ich wohl folgendermaßen vorgehen:
    • bei PAC3200 nur die Register 1 bis 222 lesen
    • bei PAC4200 zusätzlich die Register 223 bis 370 lesen (falls tatsächlich Bedarf)

    Dies läßt sich in genau 3 bzw 5 Anforderungen von jeweils 74 Registern aufteilen, wodurch das RX-Telegramm vom PAC immer 9 + 148 = 157 Byte lang ist --> es kann für alle Anfragen mit nur 1 AG_RECV gearbeitet werden.

    • in die PAC-Abfragen einen Identifizerungs-Code im Header-Transaction-Identifier einbauen, den der PAC zurückgibt, dann kann man die AG_SEND und AG_RECV völlig unabhängig voneinander programmieren. Man kann alleine am TI im RX-Telegramm-Header erkennen was es enthält:

    Code:
    Transaction Identifier TI    Empfangsdaten Payload    --> speichern in DB83
    ----------------------------------------------------------------------------
    1 = Register   1 -  74       RECV-Buffer Byte 9 .. 156    DBB0   - DBB147
    2 = Register  75 - 148       RECV-Buffer Byte 9 .. 156    DBB148 - DBB295
    3 = Register 149 - 222       RECV-Buffer Byte 9 .. 156    DBB296 - DBB443
    
    4 = Register 223 - 296       RECV-Buffer Byte 9 .. 156    DBB444 - DBB591
    5 = Register 297 - 370       RECV-Buffer Byte 9 .. 156    DBB592 - DBB739
    Dies kann einfach in AWL mit direkter Angabe der absoluten Adressen runterprogrammiert werden (ähnlich dem Programm von kassla #24).
    Wenn man will kann man es mit etwas mehr Aufwand auch symbolisch lösen, wobei da das größte Problem ist, daß in S7 Structs nicht auf ungeraden Adressen anfangen können. Ich würde da vermutlich mit ANY-Pointern arbeiten, welche ich zunächst symbolisch entgegennehmen würde und dann um 1 Byte kürzer (für AG_RECV) oder 1 Byte früher (für BLKMOV) manipuliert in ANY-Variablen speichern würde.

    • alle 9 Bytes im RX-Header auf Korrektheit prüfen, insbesondere die Längenangaben im Byte 5 und Byte 8

    Wenn nicht korrekt, dann RX-Telegramm verwerfen, wenn mehrere aufeinanderfolgende RX-Telegramme Fehler haben (z.B. durch Verschiebungen im RECV-Buffer oder Fehlermeldung des PAC), dann mit FC10 AG_CNTRL CMD 2 CN_RESET die Verbindung beenden und neu aufbauen lassen.


    Ich habe leider keine PAC zum testen zur Verfügung (wir benutzen Janitza UMG96RM), sonst hätte ich statt vieler Worte lieber das Programm zusammengetippt. Doch vielleicht finde ich noch Zeit dazu..

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #37
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Beitrag

    Zitat Zitat von PN/DP Beitrag anzeigen
    Zur Sicherheit mal die Nachfrage, ob Deine Gerätschaften aktuell sind. Was benutzt Du?
    - CPU 315: 6ES7315-.......... Firmware V.....
    - CP343-1: 6GK7343-.......... Firmware V.....
    - FC6 AG_RECV ist V4.7?
    - FC5 AG_SEND ist V4.2?
    Das ist meinem (Test-)aufbau
    CPU: 6ES7 315-2AF03-0AB0 Firmware 1.2.1 (alte Schreibtisch CPU)
    CP: 6GK7 343-1EX30-0XE0 Firmware 3.0

    Die Bausteine
    AG_SEND: Version 4.2
    AG_RECV: Version 4.7

    Es soll später mit einer 6ES7 315-2AG10-0AB0 Firmware:2.6 laufen, der CP ist der o.g.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Der Fehler 80B1 kommt imho von der SFC59 RD_REC und tritt da angeblich nur bei alten CP auf.
    (Oder vielleicht auch bei Firmware-Problemen oder Inkompatibilitäten?)
    "imho" =

    Das trifft ja für den o.g. CP nicht zu?

    Zitat Zitat von PN/DP Beitrag anzeigen
    Es ist bei CP343-1 definitiv möglich mit mehreren verschiedenen verriegelten AG_RECV-Aufrufen zu arbeiten (z.B. zur Erhöhung der Verständlichkeit des Programms), ich verstehe allerdings nicht, wieso Du da so große Probleme mit hast. Doch wenn Du das nicht in den Griff bekommst - die gute Nachricht: es geht auch mit nur 1 AG_RECV "für alles".
    Der Übersicht wegen, möchte ich es aufteilen.
    Wenn die Probleme nicht in den Griff zu bekommen sind, verfolge ich die Möglichkeit alles mit einem AG_RECV zu realisieren. Das liest sich aber recht kompliziert, da ich bislang mit AG_SEND/AG_RECV sowie ModbusTCP noch nichts zu tun hatte


    Zitat Zitat von PN/DP Beitrag anzeigen
    Warum liest Du eigentlich die Register bis 302 vom PAC3200? Brauchst Du die wirklich? Was erwartest Du in den Registern 223 bis 302? Ist das irgendwo dokumentiert, ob und was da drin steht?
    Es soll erstmal alles gelesen werden was vom PAC verfügbar ist. Was letztendlich weiter ausgewertet oder benötigt wird ist in dem momentanen Statium noch nicht ersichtlich. Du weißt doch bestimmt auch wie das ist "...mach erstmal alles was geht..."

    Aus dem Beispielprogramm von Lars ist ein DB mit den Empfangsregistern zum PAC3200 enthalten - an diesem Aufbau habe ich mich orientiert, darum diese Registeranzahl

    Gruß
    Matze
    Geändert von DerMatze (31.03.2016 um 07:00 Uhr)
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  9. #38
    Registriert seit
    18.01.2007
    Beiträge
    26
    Danke
    2
    Erhielt 9 Danke für 9 Beiträge

    Standard

    Hallo Dermatze

    Hier ist ein Beispiel Programm für Modus Client.
    Ist nicht getestet für PAC aber du Sollt damit zumindest die Kommunikation zum PAC am Laufen kriegen.
    Hab auch getestet mit alter Büro Hardware.

    Server ist in Test eine CTI plc mit ECC Ethernet Module wo CTI data gemapped ist zum modbus Registers.
    315 mit CP leset und schreibt data, CTI PLC mit ECC Module ist passive (modbus Server)

    Für PAC sollt Dan nur Job 4 reichen modbus Funktion 3( read multiple holding registers).
    OB1 =>FC99=>FB11,IDB71 Register DB = DB11.
    In FB11 FC5 AG_SEND , FC6 AG_RECEIVE, SFC24 Test DB,SFC21 FILL.

    Ist original eine sehr alte Siemens Modbus FB und hat dann nur Funktion 3 und 16.
    Hab diese von jemand bekommen wobei know how protect entfernt war. Habe dann zum Übung diese erweitert für Modbus function 2 und 15 und mit eine registers DB nach beispiel von Lars Weiß seine Modbus TCP server baustein.

    Siehe auch die Bilder das Kommunikation mit CTI plc damit lauft.

    Entschuldigung fuhr meine nicht zu gute deutche Sprache

    Gruß
    Henny

    status 1.jpgstatus 2.jpgAnhang 32310status 4.jpgstatus5.jpg
    Angehängte Dateien Angehängte Dateien

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

    DerMatze (03.04.2016)

  11. #39
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Zitat Zitat von Henny Beitrag anzeigen
    ... du Sollt damit zumindest die Kommunikation zum PAC am Laufen kriegen.
    Die Kommunkiation steht ja, aber die zwei AG_RECV Aufrufe machen mir zuschaffen.

    Zitat Zitat von Henny Beitrag anzeigen
    ...nur Job 4 reichen modbus Funktion 3( read multiple holding registers).
    OB1 =>FC99=>FB11,IDB71 Register DB = DB11.
    In FB11 FC5 AG_SEND , FC6 AG_RECEIVE, SFC24 Test DB,SFC21 FILL.
    Danke, ich werde mir das mal ansehen und testen.
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

  12. #40
    DerMatze ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.01.2012
    Beiträge
    511
    Danke
    92
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Lars Weiß Beitrag anzeigen
    Das muss funktionieren. In meinem Modbus-Baustein funktioniert das doch auch:

    MODBUS TCP Funktionbausteine Step 7

    Leider kann ich den Baustein aus der Quelle heraus nicht übersetzen - 104Fehlermeldungen... (Symbolik fehlt usw.)
    Werde mir nun den Baustein anhand der Quelle "händisch" anlegen.
    -----------------------------------------------------------------------------------------
    Programmierumgebung: Step 7 V5.5 + SP3
    WinCC flexible 2008 Advanced + SP3
    -----------------------------------------------------------------------------------------

Ähnliche Themen

  1. CP343-1 Lean, Version von AG_RECV (FC6)
    Von BoxHead im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.12.2012, 21:28
  2. FC6 AG_RECV Probleme beim Datenempfang
    Von danielplp im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.02.2011, 07:59
  3. Simatic Net, AG_CNTRL (FC10) und AG_RECV (FC6)
    Von Hansruedi im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 12.03.2010, 08:56
  4. Konflikt durch FC6 : AG_RECV <--> DT_DATE
    Von biertrinker im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.03.2010, 12:32
  5. Datenübernahme beim FC6 AG_RECV
    Von Florian_Niedermaier im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 11.11.2007, 13:37

Lesezeichen

Berechtigungen

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