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

Page 1 of 4 123 ... LastLast
Results 1 to 10 of 35

Thread: MODBUSPN - OB100 neu aufrufen

  1. #1
    Join Date
    02.07.2013
    Location
    Ostfriesland
    Posts
    38
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein Problem mit der Modbuskommunikation über den FB - MODBUSPN, also die Modbus Kommunikation über die Integrierte PN Schnittstelle der CPU (CPU315-2PNDP).
    Die CPU arbeitet als Client und bekommt Daten von zwei Modbus Servern im Netzwerk. Das funktioniert soweit auch ganz gut.
    Das Problem besteht nun darin, dass die Server (Prüftechnik - WEARSCAN) alle 24h einen Reboot durchführen. Dies lässt sich leider absolut nicht ändern.
    Da die Modbus Kommunikation aber im OB100 aufgebaut wird kann die CPU keine neue Verbindung herstellen, sobald dieser Reboot durchgeführt wurde.
    Dementsprechend werden natürlich nach 24h keinerlei Daten mehr übertragen.

    Hat eventuell irgendjemand eine Idee wie man das ganze lösen könnte ohne die CPU alle 24 Stunden neu zu starten? Ist eventuell ein Neuaufruf des OB100 möglich?

    Ich danke schonmal im Vorraus.

    Gruß, drng
    Last edited by drng; 02.07.2013 at 16:04.
    Reply With Quote Reply With Quote MODBUSPN - OB100 neu aufrufen  

  2. Folgender Benutzer sagt Danke zu drng für den nützlichen Beitrag:

    nobi1959 (16.11.2018)

  3. #2
    Join Date
    22.11.2006
    Location
    CH
    Posts
    4,270
    Danke
    955
    Erhielt 837 Danke für 625 Beiträge

    Default

    Wie wird die Kommunikation im OB100 denn aufgebaut? Poste das Teil mal.
    IMHO was man im OB100 macht, kann man auch im OB1 mit ner Freigabe machen.

    mfG René

  4. #3
    Join Date
    02.07.2013
    Location
    Ostfriesland
    Posts
    38
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Default

    Naja die Verbindung wird im OB100 initialisiert. Im OB1 (oder einem anderen Zyklischen OB wenn man möchte) wird diese dann weiter aufgebaut. Ich poste mal beide Programmteile.

    OB100:
    Code:
    //adapt the initialisation parameters according to your configuration
    
          L     1
          T     "CONTROL_DAT".ID
    
          CALL  "MODBUSPN" , "IDB_MODBUS"
           ID              :="CONTROL_DAT".ID
           DB_PARAM        :="MODBUS_PARAM"
           RECV_TIME       :=
           CONN_TIME       :=
           KEEP_ALIVE      :=
           ENQ_ENR         :=
           DISCONNECT      :=
           REG_KEY         :=
           LICENSED        :=
           BUSY            :="CONTROL_DAT".BUSY
           CONN_ESTABLISHED:="CONTROL_DAT".CONN_ESTABLISHED
           DONE_NDR        :="CONTROL_DAT".DONE_NDR
           ERROR           :="CONTROL_DAT".ERROR
           STATUS_MODBUS   :="CONTROL_DAT".STATUS_MODBUS
           STATUS_CONN     :="CONTROL_DAT".STATUS_CONN
           STATUS_FUNC     :="CONTROL_DAT".STATUS_FUNC
           IDENT_CODE      :=
           UNIT            :=
           DATA_TYPE       :=
           START_ADDRESS   :=
           LENGTH          :=
           TI              :=
           WRITE_READ      :=
    
          L     500
          T     "CONTROL_DAT".RECV_TIME
    
          L     T#5S
          T     "CONTROL_DAT".CONN_TIME
    
    //      UN    "CONTROL_DAT".ERROR
    //    BEB   
    
          L     "CONTROL_DAT".STATUS_CONN
          T     "CONTROL_DAT".Save_STATUS_CONN    //for static display in VAT
    
          L     "CONTROL_DAT".STATUS_MODBUS
          T     "CONTROL_DAT".Save_STATUS_MODBUS    //for static display in VAT
    
    // STATUS_FUNC => Save_STATUS_FUNC
          L     DB1.DBD   38
          T     DB1.DBD   92
          L     DB1.DBD   42
          T     DB1.DBD   96
          L     DB1.DBW   46
          T     DB1.DBW  100
    OB1: Bei jeder Positiven Flanke auf "ENQ_ENR" werden werte übertragen.

    Code:
      U     "FL_Takt20"
          =     "CONTROL_DAT".ENQ_ENR
    
    
    
    
    
          CALL  "MODBUSPN" , "IDB_MODBUS"
           ID              :=W#16#1
           DB_PARAM        :="MODBUS_PARAM"
           RECV_TIME       :="CONTROL_DAT".RECV_TIME
           CONN_TIME       :="CONTROL_DAT".CONN_TIME
           KEEP_ALIVE      :=
           ENQ_ENR         :="CONTROL_DAT".ENQ_ENR
           DISCONNECT      :="CONTROL_DAT".DISCONNECT
           REG_KEY         :="LICENSE_DB".REG_KEY
           LICENSED        :="CONTROL_DAT".LICENSED
           BUSY            :="CONTROL_DAT".BUSY
           CONN_ESTABLISHED:="CONTROL_DAT".CONN_ESTABLISHED
           DONE_NDR        :="CONTROL_DAT".DONE_NDR
           ERROR           :="CONTROL_DAT".ERROR
           STATUS_MODBUS   :="CONTROL_DAT".STATUS_MODBUS
           STATUS_CONN     :="CONTROL_DAT".STATUS_CONN
           STATUS_FUNC     :="CONTROL_DAT".STATUS_FUNC
           IDENT_CODE      :="CONTROL_DAT".IDENT_CODE
           UNIT            :="CONTROL_DAT".UNIT
           DATA_TYPE       :="CONTROL_DAT".DATA_TYPE
           START_ADDRESS   :="CONTROL_DAT".START_ADDRESS
           LENGTH          :="CONTROL_DAT".LENGTH
           TI              :="CONTROL_DAT".TI
           WRITE_READ      :="CONTROL_DAT".WRITE_READ
    
          U     "CONTROL_DAT".ENQ_ENR
          R     "CONTROL_DAT".ENQ_ENR       //reset trigger after job has started
    
    //for cyclic data exchange remove the comment keys
    //    O     "CONTROL_DAT".DONE_NDR
    //   O     "CONTROL_DAT".ERROR
    //    S     "CONTROL_DAT".ENQ_ENR
    
    
          U     "CONTROL_DAT".DONE_NDR
          SPBN  err
    
    //job finished without error
    
          L     "CONTROL_DAT".Count_Done    //for test purposes
          INC   1
          T     "CONTROL_DAT".Count_Done
    
          L     "CONTROL_DAT".TI            //TI should be incremented with each job
          INC   1
          T     "CONTROL_DAT".TI
    
    
    // you can set the parameters for the next job here
    // it is set in comments to give you the possibility to use the variable table 
    // for changes during test
    
    //      L     1
    //      T     "CONTROL_DAT".UNIT
    
    //      L     3
    //      T     "CONTROL_DAT".DATA_TYPE
    
    //      L    800
    //      T     "CONTROL_DAT".START_ADDRESS
    
    //      L     5
    //      T     "CONTROL_DAT".LENGTH
    
    //      SET   
    //      =     "CONTROL_DAT".WRITE_READ
    
    //      SET   
    //      =     "CONTROL_DAT".ENQ_ENR       //job trigger
    
    
          BEA   
    
    
    err:  U     "CONTROL_DAT".ERROR
          SPBN  end
    
    //job finished with error
    
          L     "CONTROL_DAT".Count_Error   //for test purposes
          INC   1
          T     "CONTROL_DAT".Count_Error
    
          L     "CONTROL_DAT".STATUS_CONN
          T     "CONTROL_DAT".Save_STATUS_CONN    //for static display in VAT
    
          L     "CONTROL_DAT".STATUS_MODBUS
          T     "CONTROL_DAT".Save_STATUS_MODBUS    //for static display in VAT
    
    // STATUS_FUNC => Save_STATUS_FUNC
          L     DB1.DBD   38
          T     DB1.DBD   92
          L     DB1.DBD   42
          T     DB1.DBD   96
          L     DB1.DBW   46
          T     DB1.DBW  100
    
    end:  NOP   0
    Last edited by drng; 02.07.2013 at 19:10.

  5. #4
    Join Date
    22.05.2005
    Location
    sonniges Maifeld
    Posts
    1,102
    Danke
    84
    Erhielt 210 Danke für 164 Beiträge

    Default

    Klingt nach Parametrierfehler. Poste mal.
    "Man kann auf seinem Standpunkt stehen, aber man sollte nicht darauf sitzen" - Erich Kästner

  6. #5
    Join Date
    02.07.2013
    Location
    Ostfriesland
    Posts
    38
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Default

    Quote Originally Posted by Lars Weiß View Post
    Klingt nach Parametrierfehler. Poste mal.
    Kann mit Parametrierfehlern nichts zu tun haben. Ist einfach Siemens Vorgabe.

    Auszug aus der Bedienungsanleitung ModbusPN:

    Das heißt pro Verbindungwird benötigt:
    • Ein Verbindungsparameterblock und die zugehörigen Modbusparameter im DB MODBUS_PARAM
    • Aufruf von FB MODBUSPN in OB100
    • Aufruf von FB MODBUSPN in OB1 oder einem Weckalarm-OB

    Es funktioniert ja einwandfrei. Werte werden übertragen und können auch wunderbar verarbeitet werden.
    Problem ist nur, dass die Initialisierung der Verbindung scheinbar nur über den OB100 machbar ist und ich suche jetzt nach einer Lösung DAS zu umgehen, bzw nach einem Reboot des Modbus Servers eine Verbindung neu aufzubauen.

    Danke schonmal!

  7. #6
    Join Date
    12.07.2006
    Posts
    45
    Danke
    5
    Erhielt 2 Danke für 2 Beiträge

    Default

    Hallo,

    du kannst den Aufbau der Modbus-Kommunikation doch in einem separaten FC unterbringen. Diesen rufst Du dann sowohl vom OB100 als auch jeweils kurz nach dem Neustart der Server auf. Fertig.

    Gruß

    Koslovski

  8. #7
    Join Date
    02.07.2013
    Location
    Ostfriesland
    Posts
    38
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Default

    Quote Originally Posted by Koslovski View Post
    Hallo,

    du kannst den Aufbau der Modbus-Kommunikation doch in einem separaten FC unterbringen. Diesen rufst Du dann sowohl vom OB100 als auch jeweils kurz nach dem Neustart der Server auf. Fertig.

    Gruß

    Koslovski
    Genau soetwas habe ich mir auch gedacht, aber funktioniert das?
    Ich habe momentan so eingerichtet, dass ich vom OB100 zwei FC's aufrufe (Für jeden Server einen, da diese sich natürlich zu unterschiedlichen Zeiten rebooten können)
    Und im OB1 versuche die Verbindung herzustellen nachdem diese zuvor abgebrochen ist. Bislang komme ich da aber nicht auf die richtige Variante.

    Danke schonmal für die Hilfe und entschuldigt die langen Antwortzeiten, als Neuling werden wohl alle Posts erst überprüft

    Gruß

  9. #8
    Join Date
    13.10.2007
    Posts
    12,571
    Danke
    2,977
    Erhielt 3,501 Danke für 2,281 Beiträge

    Default

    Quote Originally Posted by drng View Post
    Danke schonmal für die Hilfe und entschuldigt die langen Antwortzeiten, als Neuling werden wohl alle Posts erst überprüft
    Ja bei dir schlägt die Spamabwehr erbarmungslos zu

  10. #9
    Join Date
    02.07.2013
    Location
    Ostfriesland
    Posts
    38
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Default

    Quote Originally Posted by rostiger Nagel View Post
    Ja bei dir schlägt die Spamabwehr erbarmungslos zu
    Und ich dachte ich kann sinnvolle Beiträge leisten


  11. #10
    Join Date
    13.10.2007
    Posts
    12,571
    Danke
    2,977
    Erhielt 3,501 Danke für 2,281 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Leiste mal, dein letzter Beitrag ist ja durchgekommen.

Similar Threads

  1. OB100-Fehler
    By siegener19 in forum Simatic
    Replies: 5
    Last Post: 14.01.2013, 18:39
  2. OB100 im PLCSIM ?
    By sk1rie in forum Simatic
    Replies: 5
    Last Post: 10.05.2011, 13:34
  3. OB100 verstehen
    By snowpanter in forum Simatic
    Replies: 12
    Last Post: 01.10.2010, 17:19
  4. SFC12 in OB100
    By M4RKU5 in forum Simatic
    Replies: 8
    Last Post: 03.07.2008, 15:30
  5. Ob100
    By tino2512 in forum Simatic
    Replies: 3
    Last Post: 24.09.2007, 09:47

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •