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

Seite 5 von 7 ErsteErste ... 34567 LetzteLetzte
Ergebnis 41 bis 50 von 62

Thema: Libnodave lernen

  1. #41
    Registriert seit
    31.08.2006
    Ort
    OH
    Beiträge
    275
    Danke
    70
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie kann ich ein Array aus der SPS auslesen? Bekomme das nicht hin. Ich muß dem Array doch noch irgendwie sagen können, ab wo es zu lesen ist und wie lange.

    Code:
    Dim wrt5 = conn.ReadValue("DB0.DBW0", TagDataType.ByteArray)


    Würde gerne größere Blöcke auslesen und dann im VB-Code bearbeiten.

    Danke schon mal für die Antwort!
    Wahnsinn wohnt nur 1 Stockwerk unter dem Genie. Aber Genie ist nichts anderes, als kontrollierter Wahnsinn.

  2. #42
    Registriert seit
    01.10.2012
    Beiträge
    203
    Danke
    12
    Erhielt 56 Danke für 36 Beiträge

    Standard

    ich mach das immer so
    Code:
    _result = dc.readBytes(libnodave.daveDB, DBNr,Startbyte,Menge_Bytes, null);
    dann dröselste das ganze über eine Schleife in ein Array wie du es willst und gut.
    Allerdings hab ich euch keine riesigen Arrays und mit der readmutiple Geschichte hab ich mich noch nicht befassen müssen.
    Nüchtern betrachtet war es besoffen besser.

  3. #43
    Registriert seit
    28.11.2007
    Beiträge
    123
    Danke
    19
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Lesen von Lokalen Variablen (gekennzeichnet mit dem Hash mark #)? Ist das moeglich?

  4. #44
    Registriert seit
    28.11.2007
    Beiträge
    123
    Danke
    19
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich habe in meiner S7 Steuerung Signale in einem Function Block (FB302). Das Signal ist definiert im Interface unter STAT. Dort taucht es mit einer Addresse auf (Typ bool, Address 70.1). Im Quellcode selber hat es ein Hashtag #vor dem Namen.

    Wie kann ich dieses Signal mit Libnodave auslesen? Gibt es dazu eine Information?

    In Libnodave finde ich folgende Konstanten:

    Public Const daveInputs = &H81
    Public Const daveOutputs = &H82
    Public Const daveFlags = &H83
    Public Const daveDB = &H84 ' data blocks
    Public Const daveDI = &H85 ' instance data blocks
    Public Const daveV = &H87 ' don't know what it is
    Public Const daveCounter = 28 ' S7 counters
    Public Const daveTimer = 29 ' S7 timers

    Welche ich im Befehl

    Call daveAddBitVarToReadRequest(PDU, daveDB, 302, 70 * 8 + 1, 1)

    verwenden kann.

    Fuer daveDB geht das auch. Nun habe ich aber wie gesagt, den Fall dass ich aus einem FB lesen will. Es gibt aber kein daveFB in Analogie zum DB?
    Zitieren Zitieren Ist das Lesen aus Function Block (FB) moeglich?  

  5. #45
    Registriert seit
    01.10.2012
    Beiträge
    203
    Danke
    12
    Erhielt 56 Danke für 36 Beiträge

    Standard

    1. Ein FB hat immer einen InstanzDB, der wird ihm beim Aufruf zugewiesen und da sind die Variablen drinne.
    2. Mach dir einen globalen DB und kopier dir da alles rein was du auslesen willst und hol das dort in einem Rutsch raus.
    3. erschließt sich mir nicht, warum man temp Variablen auslesen sollte
    Nüchtern betrachtet war es besoffen besser.

  6. #46
    Registriert seit
    28.11.2007
    Beiträge
    123
    Danke
    19
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von Bapho Beitrag anzeigen
    1. Ein FB hat immer einen InstanzDB, der wird ihm beim Aufruf zugewiesen und da sind die Variablen drinne.2. Mach dir einen globalen DB und kopier dir da alles rein was du auslesen willst und hol das dort in einem Rutsch raus.3. erschließt sich mir nicht, warum man temp Variablen auslesen sollte
    Nicht TEMP Variablen, es handelt sich um STAT Variablen. Und ob sich dir was erschliesst oder steht hier nicht zur Diskussion! Produktive Antworten sind erwuenscht!
    Die Frage ist, ob es moeglich ist, ja oder nein!

    Ich kann an dem Programm keine Aenderung vornehmen, da es eine Standardsoftware ist, die auf vielen Maschinen weltweit laeuft. Es muesste dann ueberall ein Update durchgefuehrt werden.

    Die Aufgabe ist, hier in unserem Werk, aus dem Baustein die Daten der STAT-Variablen auszulesen. Der korresponiderende Datenbaustein ist mit KnowHow-Schutz versehen, ich sehe nicht was darin ist.

    Wenn ein Signal eine Adresse hat, sollte es moeglich sein es zu lesen. Ob es nun in einem DB oder in einem FB drin ist, sollte doch keine Rolle spielen? Die Frage ist, wie kann ich das STAT signal auslesen?

    Die Frage geht auch an die Anbieter von anderen Bibliotheken, wie zB von DELTALOGIG. Ich bitte um eine produktive Antwort!

    Wenn es nicht geht, dann geht es eben nicht. Dann muss ich an dem Programm eben doch eine Aenderung vornehmen. Dafuer muss ich erst die Erlaubnis der Programmaenderung einholen und weiterhin das Distributed Safety Package kaufen, denn im Moment ist der FB read-only.
    Geändert von Burkhard (22.01.2014 um 15:34 Uhr) Grund: Erweiterung des Inhaltes

  7. #47
    Registriert seit
    18.10.2005
    Beiträge
    107
    Danke
    9
    Erhielt 9 Danke für 7 Beiträge

    Standard

    OK, du willst keine Diskussion, nur eine Antwort:
    Nein, temporäre Daten können nicht ausgelesen werden. Programm muss geändert werden.

  8. #48
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Burkhard Beitrag anzeigen
    Nicht TEMP Variablen, es handelt sich um STAT Variablen. Und ob sich dir was erschliesst oder steht hier nicht zur Diskussion!
    [...]
    Die Aufgabe ist, hier in unserem Werk, aus dem Baustein die Daten der temp-Variablen auszulesen. Der korresponiderende Datenbaustein ist mit KnowHow-Schutz versehen, ich sehe nicht was darin ist.

    Wenn ein Signal eine Adresse hat, sollte es moeglich sein es zu lesen. Ob es nun in einem DB oder in einem FB drin ist, sollte doch keine Rolle spielen? Die Frage ist, wie kann ich das STAT signal auslesen?
    Ja was willst Du denn nun lesen? TEMP oder STAT?

    Zunächst: Statt die Helfer zu beschimpfen solltest Du Dir mal mehr Mühe bei der Formulierung Deiner Fragen geben und nicht die Fachbegriffe durcheinanderwürfeln. (Bist Du überhaupt ein SPS-Programmierer?)

    Zweitens: TEMP-Variablen kann man nicht von außen lesen, weil TEMP-Variablen keine absolute Adresse haben. Sie haben nur einen relativen Offset zu einer nicht bekannten (möglicherweise dynamisch vergebenen) Anfangsadresse im Lokaldatenstack. Auch der Simatic Manager kann nicht von außen auf TEMP-Variablen zugreifen.
    Ausnahme: ein Baustein B, der direkt vom Baustein A aufgerufen wird, kann auf die TEMP-Variablen des Bausteins A zugreifen (Stichwort: Vorgänger-Lokaldaten) - das ist allerdings höchst unsauber, weil der Baustein B nicht wirklich die Struktur der Lokaldaten des aufrufenden Bausteins A kennt; er weiß ja noch nichtmal, von welchem Baustein A,X,Y... er aufgerufen wurde.

    Drittens: STAT-Variablen kann man von außerhalb lesen, indem man auf deren absolute Adresse im IDB zugreift: DB12.DBX34.5. Im SPS-Programm geht das sogar symbolisch: "IDB_Regler1".internes_Fehlerbit
    Die absolute Adresse einer STAT-Variable kann man aus der Schnittstelle des FB oder aus dem IDB erfahren.
    Sollte der FB als Multiinstanz aufgerufen werden, dann muß man etwas mehr rechnen, was die absolute Adresse der STAT-Variable der betreffenden Instanz ist; oder in den IDB desjenigen FB schauen, der den betreffenden FB als Multiinstanz enthält.
    Wenn man die absolute Adresse aus irgendwelchen Gründen nicht rauskriegt, dann könnte man den original-Programmierer danach fragen...

    Viertens: Dein FB302, an dem Du rumfummeln willst - ist das womöglich ein F-Baustein?

    Deine sonstigen Äußerungen von vor und nach dem Ändern Deines Beitrags bezüglich KnowHow-Schutz und read-only ignoriere ich zunächst mal. Die empfinde ich als so verworren - wenn Du dazu Auskünfte willst, dann formuliere die Frage nochmal neu.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #49
    Registriert seit
    01.10.2012
    Beiträge
    203
    Danke
    12
    Erhielt 56 Danke für 36 Beiträge

    Standard

    Ist schon eine grausame Welt in der man vor dem Auslesen wissen muß was man wo auslesen will...
    Nüchtern betrachtet war es besoffen besser.

  10. #50
    Registriert seit
    28.11.2007
    Beiträge
    123
    Danke
    19
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von scrolllkock Beitrag anzeigen
    Nein, temporäre Daten können nicht ausgelesen werden. Programm muss geändert werden.
    Zitat Zitat von PN/DP Beitrag anzeigen
    Ja was willst Du denn nun lesen? TEMP oder STAT?

    Zunächst: Statt die Helfer zu beschimpfen solltest Du Dir mal mehr Mühe bei der Formulierung Deiner Fragen geben und nicht die Fachbegriffe durcheinanderwürfeln. (Bist Du überhaupt ein SPS-Programmierer?)
    Nach TEMP Variablen war von meiner Seite aus niemals gefragt worden. Ich habe klar formuliert, dass die Variablen unter STAT definiert sind. Wer hier TEMP und STAT durcheinander wuerfelt, war Bapho.

    Von Beschimpfungen kann auch gar nicht die Rede sein. Ich habe schlicht und ergreifend gesagt, dass es nicht darum geht ob der Helfer etwas als sinnvoll erachtet, sondern nur ob es geht.

    Bapho aber hat STAT und TEMP Signale verwechselt! Das ist ein Fakt.

    Dennoch kam ein interessanter und hilfreicher Beitrag, naemlich die Antwort, dass STAT Variablen aus einem FB in dem korrespondierenden DB zu finden sind. Ich bin ein Beckhoff-TwinCat Programmierer mit 12 Jahre Erfahrung mit Beckhoff und TwinCat. Mit Siemens S7 befasse ich mich zwangslaeufig und finde, das System kommt eben aus dem vorigen Jahrhundert. Was macht es fuer einen Sinn einen FB und einen DB zu haben? Damit blaeht man die Struktur nur unnoetig auf. Es reicht wenn man einem Signal einmal im FB adressiert. Ein weiterer DB ist unnoetig.

    Ja, es handelt sich um einen F-DB. Es ist ein Safety Datablock!
    Geändert von Burkhard (22.01.2014 um 07:58 Uhr) Grund: Korrektur

Ähnliche Themen

  1. AWL lernen
    Von Flux im Forum Simatic
    Antworten: 32
    Letzter Beitrag: 08.10.2012, 15:07
  2. E-Plan lernen
    Von dirknico im Forum E-CAD
    Antworten: 20
    Letzter Beitrag: 23.01.2012, 21:44
  3. Englisch lernen
    Von Lipperlandstern im Forum Stammtisch
    Antworten: 18
    Letzter Beitrag: 07.12.2007, 15:05
  4. Pascal lernen
    Von tycomatze im Forum Hochsprachen - OPC
    Antworten: 18
    Letzter Beitrag: 05.07.2007, 09:13
  5. WIN CC lernen
    Von Outrider im Forum HMI
    Antworten: 4
    Letzter Beitrag: 27.07.2004, 16:21

Lesezeichen

Berechtigungen

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