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

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

Thema: libnodave Bit setzen

  1. #1
    Registriert seit
    21.11.2012
    Beiträge
    12
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen !
    Ich benutze die libnodave-Funktion daveWriteBits um ein Bit aus einer .NET Anwendung in einer älteren S7 zu setzen (319er).
    Da ich mißtrauisch war ob das überhaupt geht habe ich folgendes gemacht.
    Die SPS zählt 2 Bytes in einem DB ständig von 0..127 und wieder von vorne so schnell sie kann.
    Mit meiner PC Anwendung schreibe ich bei einem der beiden Bytes ständig (hochfrequent) das 8.Bit auf 1.
    Die SPS Anwendung soll stehenbleiben sobald die Bytes (nur die untersten 7 Bit betrachtet) unterschiedlich sind.
    Das dürfte ja eigentlich nicht vorkommen, wenn alles funktionieren würde. Es kommt aber vor !
    Ich vermute also, daß zumindest bei der SPS die ich hier zur Verfügung habe die libnodave-Funktion daveWriteBits nicht funktioniert.
    SPS Bit setzen und PC-Bit setzen beeinflussen sich.
    Hat jemand eine Erklärung dafür ?
    Geht es besser mit neueren SPS-en ?
    Danke für eine Antwort,

    Christof
    Zitieren Zitieren libnodave Bit setzen  

  2. #2
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Wie werden denn die Bytes hochgezählt? Bzw. was wird genau in dem Program mit den beiden Bytes gemacht? Wie erfolgt der Abgleich?
    Als Test würde ich einfach ein nicht verwendetes Byte nehmen, und hier einzelnen Bits setzen bzw. zurücksetzen und dann das Byte zurücklesen und prüfen.
    Wenn die sowohl die SPS als auch libnodave auf ein Byte schreibend zugreifen, dann kann dies schief gehen (SPS überschreibt libnodave Änderung).
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  3. #3
    foreach ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.11.2012
    Beiträge
    12
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Deswegen beschreibt die SPS ja auch nur 7 Bits und der PC das Achte. Damit die eben nicht gleichzeitig auf das gleiche Bit schreiben müssen.
    Mir ist klar, daß wenn auf das gleiche Bit geschrieben wird, der letzte Schreiber "gewinnt".
    Bei einer 400er Steuerung ist das jetzt die ganze Nacht durchgelaufen, ohne stehen zu bleiben.

  4. #4
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Welche libnodave Funktion nutzt du denn? davewritebits?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  5. #5
    foreach ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.11.2012
    Beiträge
    12
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ja, daveWriteBits !

    Das Setzen funktioniert auch, es gibt also keine Probleme daß ich das falsche Bit treffe oder sowas.
    Der Code in der SPS sieht so aus:

    Im OB1



    Als eigenes Netzwerk:

    U DB1000.DBX 11.7

    = #HW_Bit0

    L DB1000.DBB 11

    L W#16#7F

    UW

    L DB1000.DBB 13

    <>I

    SPB ungl

    L 120

    >I

    SPB beg1



    L DB1000.DBB 13

    + 1

    SPA Z1



    beg1: NOP 0

    L DB1000.DBD 6

    L L#1

    +D

    T DB1000.DBD 6

    L 0

    Z1: NOP 0

    T DB1000.DBB 11

    T DB1000.DBB 13

    U #HW_Bit0

    = DB1000.DBX 11.7



    ungl: NOP 0

    L DB1000.DBD 6

  6. #6
    Registriert seit
    11.08.2009
    Ort
    Bei Hamburg
    Beiträge
    100
    Danke
    19
    Erhielt 30 Danke für 18 Beiträge

    Standard

    Handelt es sich u.U. um das Problem Zyklussynchron schreiben?

    Wann wird den das Bit vom PC aus geschrieben?

    Am Zyklusanfang oder Zyklusende oder irgendwann mittendrin?
    Erstmal alles zerlegen und auf alternative Nutzungsmöglichkeiten untersuchen.

  7. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von foreach Beitrag anzeigen
    Deswegen beschreibt die SPS ja auch nur 7 Bits und der PC das Achte. Damit die eben nicht gleichzeitig auf das gleiche Bit schreiben müssen.
    Mir ist klar, daß wenn auf das gleiche Bit geschrieben wird, der letzte Schreiber "gewinnt".
    Bei einer 400er Steuerung ist das jetzt die ganze Nacht durchgelaufen, ohne stehen zu bleiben.
    Tja, beim Transferieren in ein Byte werden trotz ausmaskiertem Bit 7 alle acht Bits geschrieben. Und in der Zeit zwischen merken und setzen des Bitzustandes kann bereits ein neuer Wert mit libnodave geschrieben worden sein, der durch diese Vorgehensweise überbügelt wird.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #8
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Ja durch libnodave wird also nur das 8te Bit geschrieben, aber in der SPS schreibst du durch deinen Byte Zugriff natürlich auf alle 8 Bits. Wenn du nur die ersten 7 beinflußen willst, darfst du natürlich auch nur Bitfunktionen zum setzen und rücksetzen verwenden (=, R, S)
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  9. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Jochen Kühner Beitrag anzeigen
    Ja durch libnodave wird also nur das 8te Bit geschrieben, aber in der SPS schreibst du durch deinen Byte Zugriff natürlich auf alle 8 Bits. Wenn du nur die ersten 7 beinflußen willst, darfst du natürlich auch nur Bitfunktionen zum setzen und rücksetzen verwenden (=, R, S)
    Er setzt dann das Bit 7 wieder auf den Wert, den er sich am Anfang gemerkt hat. Allerdings kann der Schreibzugriff von außen zu jeder Zeit stattfinden, also auch während merken und reinverknüpfen.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  10. #10
    foreach ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.11.2012
    Beiträge
    12
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    So, jetzt habe ich die 7 unteren Bits mal mit 7 Bitfunktionen gesetzt, ich schreibe also nicht mehr auf das komplette Byte.
    Ich hole mir also aus dem einen Byte Bit für Bit raus und schreibe sie in das andere. Meint ihr das mit "Bitfunktionen" ?
    Und trotzdem bleibt er stehen !
    Kann es daran liegen das die 319-3PN/DP SPS eine integrierte CP hat und das es deswegen das Problem gibt.

    U DB1000.DBX13.0
    = DB1000.DBX11.0

    U DB1000.DBX13.1
    = DB1000.DBX11.1

    usw....

    U DB1000.DBX13.6
    = DB1000.DBX11.6


    Schönen FA
    Geändert von foreach (16.01.2013 um 16:38 Uhr)

Ähnliche Themen

  1. Bit in einem Word im FB setzen
    Von volvopenta im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.10.2012, 20:30
  2. Bit in der SPS setzen mit VB.net 2008 und libnodave
    Von poppycock im Forum Hochsprachen - OPC
    Antworten: 12
    Letzter Beitrag: 17.06.2009, 15:59
  3. s7 200 Bit setzen
    Von Praktikus im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.02.2008, 09:39
  4. Libnodave + Excel einzelnes Bit (setzen bzw. abfragen)
    Von Otto im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 21.12.2006, 17:24
  5. SCL Bit setzen
    Von HeinBloed im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 11.12.2006, 15:50

Lesezeichen

Berechtigungen

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