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

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

Thema: P_RCV_RK in altem Projekt

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi zusamme. Ich versuche grad aus einem alten Projekt schlau zu werden.

    Eine S7-300 kommuniziert per RK512 mit einem übergeordneten Rechner.
    Aber aus dem Aufbau der Kommunikation werde ich irgendwie nicht schlau. Hier mal ein Auszug.

    Code:
          SET   
          =     M    200.0
          =     M    200.1
          =     M    200.2
          =     M    200.3
          =     M    200.4
          =     M    200.5
          =     M    200.6
    
    
          CALL  "P_RCV_RK" , DB7
           EN_R    :=M200.0
           R       :=
           LADDR   :=272
           DB_NO   :=110
           DBB_NO  :=0
           L_TYP   :=
           L_NO    :=MW204
           L_OFFSET:=MW206
           L_CF_BYT:=MW208
           L_CF_BIT:=MW210
           NDR     :=M201.0
           ERROR   :=M202.0
           LEN     :=MW212
           STATUS  :=MW214
    
          CALL  "P_RCV_RK" , DB7
           EN_R    :=M200.1
           R       :=
           LADDR   :=272
           DB_NO   :=111
           DBB_NO  :=0
           L_TYP   :=
           L_NO    :=MW204
           L_OFFSET:=MW206
           L_CF_BYT:=MW208
           L_CF_BIT:=MW210
           NDR     :=M201.1
           ERROR   :=M202.1
           LEN     :=MW212
           STATUS  :=MW214
    
          CALL  "P_RCV_RK" , DB7
           EN_R    :=M200.2
           R       :=
           LADDR   :=272
           DB_NO   :=112
           DBB_NO  :=0
           L_TYP   :=
           L_NO    :=MW204
           L_OFFSET:=MW206
           L_CF_BYT:=MW208
           L_CF_BIT:=MW210
           NDR     :=M201.2
           ERROR   :=M202.2
           LEN     :=MW212
           STATUS  :=MW214
    Wohlgemerkt die Kommunikation funktioniert, wenn man nix verändert. Ich weiss blos nicht wieso?

    warum wird da jedesmal der gleiche Instanzdb übergeben? Steht da irgendein tieferer Sinn dahinter den ich nicht verstehe?

    Ist das dann so Zufall das es funktioniert hat?
    Ich würde das jetzt gerne etwas besser aufbauen. Also die Rückmeldungen auf einen db bringen (für jeden RCV einen eigenen Bereich) und natürlich die Instanz individualisieren. Habe ich da Probleme zu erwarten?

    mfG René
    Zitieren Zitieren P_RCV_RK in altem Projekt  

  2. #2
    Registriert seit
    15.10.2010
    Beiträge
    34
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Rene,


    ich kann mir auch keinen Reim darauf machen, warum. Würde aber darauf tippen, dass die Programmzeilen von einem S5ler erstellt wurden, der mit den instanzierbaren FBs von S7 schlicht überfordert war.

    Ich habe keine Erfahrung mit mehreren Instanzen eines "P_RCV_RK", weiß aber aus eigener Erfahrung, dass das im Falle des Gegenstücks "P_SND_RK" funktioniert!

    Dein Post hat mich aber etwas verunsichert. Poste hier dochmal bitte, ob Deine Programmänderung funktioniert hat. Danke.

    Mfg.: Heiko.
    Zitieren Zitieren P_SND_RK funktioniert!  

  3. #3
    Registriert seit
    15.10.2010
    Beiträge
    34
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    ...das hab ich heute in der Online-Hilfe zu den CP341-Funktionsbausteinen gefunden:

    Funktionsbausteine CP341

    Beschreibung

    Im Anwenderprogramm darf für jeden eingesetzten CP*341 gleichzeitig immer nur ein FB*P_SND_RK und ein FB*P_RCV_RK aufgerufen werden.

  4. #4
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Das ist jetzt interessant im Handbuch S7Cp341a.pdf steht.
    Gleichzeitig bearbeitbare Aufträge
    Im Anwenderprogramm darf für jeden eingesetzten CP 341 nur ein aktiver und ein passiver
    Auftrag programmiert werden. Während der CP 341 einen aktiven Auftrag abwickelt, kann er
    gleichzeitig einen passiven Auftrag bearbeiten.
    Außerdem dürfen Sie nur
    ● 1 Instanz-Datenbaustein für den FB P_SND_RK und
    ● 1 Instanz-Datenbaustein für den FB P_RCV_RK,
    da im Instanz-Datenbaustein die für den internen Ablauf des FBs notwendigen Zustände
    abgelegt sind.
    Und in der Onlinehilfe steht genau:
    Gleichzeitig bearbeitbare Aufträge:

    Im Anwenderprogramm kann gleichzeitig immer nur ein aktiver und ein passiver Auftrag bearbeitet werden. Während der CP 341 einen aktiven Auftrag abwickelt, kann er gleichzeitig einen passiven Auftrag bearbeite
    Das hört sich für mich schon etwas seltsam an. Heisst also ich kann nach dem Handbuch FBs wie ich lustig bin am Start haben, aber nur ein Instanzdb dafür. Also für jeden FB den gleichen. Und die Onlinehilfe ist in mehreren Arten zu deuten.

  5. #5
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Hallo zusammen !

    Zitat Zitat von postman78 Beitrag anzeigen

    Hallo Rene,
    ....
    ch kann mir auch keinen Reim darauf machen, warum. Würde aber darauf tippen, dass die Programmzeilen von einem S5ler erstellt wurden, der mit den instanzierbaren FBs von S7 schlicht überfordert war.
    ....
    Mfg.: Heiko.
    ich habe folgendes gefunden:

    Anwendung von Koppelmerkern
    Vor dem Empfang von Daten wird der im RK 512-Telegrammkopf angegebne Koppelmerker abgeprüft. Die Daten werden nur übertragen, wenn der Koppelmerker den Wert "0" hat. Nach Abschluss des Übertragungsvorganges wird der Koppelmerker vom Funktionsbaustein auf den Wert "1" gesetzt und am Funktionsbaustein für einen Zyklus (NDR) der Koppelmerker ausgegeben.
    Im Anwenderprogramm kann durch Auswertung des Koppelmerkers erkannt werden, dass die übertragenen Daten bearbeitet werden können. Sobald die Daten bearbeitet wurden, muss der Anwender den Koppelmerker wieder auf "0" setzen. Ein SEND-Auftrag vom Kommunikationspartner ist wieder möglich.

    _CF_BYT 1
    OUTPUT
    INT
    Koppelmerkerbyte auf lokaler CPU
    0 ≤ L_CF_BYTE ≤ 255255 bedeutet: ohne Koppelmerker

    L_CF_BIT 1
    OUTPUT
    INT
    Koppelmerkerbit auf lokaler CPU
    0 ≤ L_CF_BIT ≤ 7

    Die Koppelmerker werden jeweils vom Verbindungspartner direkt in die CPU geschrieben bzw. umgekehrt.

    Ich denke, dass hier vielleicht damit gearbeitet und das Senden/Empfangen gesteuert wird...

    Der Hinweis kommt hierher:
    https://www.automation.siemens.com/m...t=koppelmerker P_RCV_RK&Query=koppelmerker P_RCV_RK&cssearchengine=NEW


    gruss
    kind regards
    SoftMachine

  6. #6
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Nochmal hallo

    Da gibt es es auch Beschreibungen, die nicht von Koppel- , sondern von Koordinierungsmerkern sprechen ...

    Nur noch mal als Hinweis

    Gruss
    kind regards
    SoftMachine

  7. #7
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Warum soll man nicht den selben IDB verwenden?

    Man muss sich doch so und so sich darum kümmern, dass immer nur ein Aufruf aktiv ist. Es wird eben nacheinander der IDB bei jedem Aufruf neu befüllt.


    bike

  8. #8
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Warum soll man nicht den selben IDB verwenden?

    Man muss sich doch so und so sich darum kümmern, dass immer nur ein Aufruf aktiv ist. Es wird eben nacheinander der IDB bei jedem Aufruf neu befüllt.
    Nicht zwingend. Im IDB kannst du auch Daten abspeichern und beim nächsten abruf des Bausteins nur abfragen.
    Vielleicht hast du dir einen FIFO gebaut und speicherst im IDB bei jedem Aufruf des Bausteins einen Wert und schiebst alle schon gespeicherten nach hinten. Da wäre es fatal wenn der gleiche IDB nochmal benutzt wird von einem zweiten FIFO der ganz einen anderen Wert einfach dazwischenspeichert.

    mfG René

  9. #9
    Registriert seit
    03.04.2008
    Beiträge
    6.200
    Danke
    237
    Erhielt 815 Danke für 689 Beiträge

    Standard

    Zitat Zitat von vollmi Beitrag anzeigen
    Nicht zwingend. Im IDB kannst du auch Daten abspeichern und beim nächsten abruf des Bausteins nur abfragen.
    Vielleicht hast du dir einen FIFO gebaut und speicherst im IDB bei jedem Aufruf des Bausteins einen Wert und schiebst alle schon gespeicherten nach hinten. Da wäre es fatal wenn der gleiche IDB nochmal benutzt wird von einem zweiten FIFO der ganz einen anderen Wert einfach dazwischenspeichert.

    mfG René
    Stimmt fast.
    Wenn ich eine Funktion schreibe, die sich allgemein etwas merken soll, dann hat die immer einen Global DB.
    Doch war das ja nicht deine Frage.
    Du hast gefragt ob du das so machen kannst und ich schreibe: ja.


    bike

  10. #10
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von bike Beitrag anzeigen
    Stimmt fast.
    Du hast gefragt ob du das so machen kannst und ich schreibe: ja.
    Bei dem Baustein scheint das so zu funktionieren. Allerdings ist das doch sehr ungewöhnlich wie ich finde.

    Wenn du alles in Globalen DBs speicherst, wozu brauchst du dann einen IDB?

Ähnliche Themen

  1. HW-Inkonsistenz bei altem S7 Projekt beheben
    Von vollmi im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 04.05.2011, 10:12
  2. Antworten: 3
    Letzter Beitrag: 06.08.2010, 14:20
  3. Antworten: 11
    Letzter Beitrag: 13.02.2010, 13:52
  4. CX bootet nicht nach altem Image
    Von karlheinzsps im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 18.03.2009, 11:41
  5. Antworten: 6
    Letzter Beitrag: 15.05.2008, 00:27

Lesezeichen

Berechtigungen

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