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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Lesen aus Stream

  1. #11
    Registriert seit
    20.04.2007
    Beiträge
    81
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ah norwegen....

    Mein Vater is fanatiker wenn es um Norwegen geht...

    Hat vor kurzem ne Motorradtour zum Nordcap und zurück gemacht...

    Will er dieses oder nächstes Jahr wieder machen...


    ok das mit dem Thread muss ich mir mal Anschauen aber ich brauch die daten schnell weil damit zum beispiel Temperaturen und geschwindigkeiten geregelt werden und alle sek is zu langsam....



    aber nun ein neues Problem (wer hätte is gedacht)

    so nun wollte ich das ganze einmal ausprobieren wie das in echt aussieht und habe die lese Routine in einen Timer (50ms) gepackt...

    beim ersten durchlauf liest er den Wert aus und zeigt ihn an...

    im 2ten durchlauf bekomme ich eine unbehandelte ausnahme bei
    tcads.Read
    Code:
    tcAds.Read(varTest, sStream)
                sStream.Position = 0
                varTest = binReader.ReadInt16()
                sStream = Nothing
                Me.TextBox1.Text = varTest
    scheinbar macht er das nur einmal aber nicht öfter... hast du eine erklärung dafür oder muss ich einfach nur den Stream oder Reader neuladen...

    mfg
    Andre Wagner

  2. #12
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    1) Wenn du mit Basic hier eine Regelung bauen willst, fällst du auf die Nase. Die Regelung gehört in die SPS.

    2) Die Exception solltest du dir Anzeigen lassen.


    3) Du setzt den Stream auf "nothing" und das ist die Ursache.

  3. #13
    Registriert seit
    20.04.2007
    Beiträge
    81
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok konnte es beheben... neuinitieren des readers und der stream mit New blabla hat geholfen... gibt es da eine komfortabere lösung oder macht man das so... was passiert wenn ich den stream nicht auf nothing setze


    arbeitet einwandfrei...

    warum sollte man mit VB keine regelung schreiben können???

    die mathematischen möglichkeiten zur berechnung von stellgrößen sind gegeben....

    es ist klar das ein PID-Regler der vorkonfiguriert ist besser arbeitet es geht hier jedoch nur um das angleiche ein paar geringer werte wobei ein P und I anteil ausreichend wäre...

    mfg

  4. #14
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    1) Weil die Kopplung weder Realtime-Ansprüchen gerecht wird, noch ist sie sonderlich zuverlässig.

    2) Gesetzt den Fall, der PC hat ein Problem, was passiert auf der SPS? Du kannst auf der SPS alles mit ST machen und die sollte wesentlich zuverlässiger sein.

    3) Damit trennst du auch die Steuerung von der Schnittstelle zum Menschen und das ist ein Merkmal guter Software.


    Du kannst es versuchen und es wird vielleicht sogar funktionieren, aber du hast dann 2 Komponenten, die die Maschine steuern. Und denk daran, VB ist kein Realtimesystem! Das kann Instabilitäten beim Regler nach sich ziehen. Ich lasse die SPS immer die Komplette Maschine steuern und der PC setzt nur die Parameter.

  5. #15
    Registriert seit
    20.04.2007
    Beiträge
    81
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hm... naja ich habe einen Timer der mir im prinzip die zyklische funktion übernimmt...

    allerdings hab ich da ja im prinzip keine großen sachen... die regelung ist weniger eine regelung sondern ein vergleich 2er werte und eine reaktion darauf...


    so nun habe ich gestern a weng mit meinem neuen Wissen zumgebastelt und funktioniert optimal... sollte ich dieses jahr nach norwegen kommen (was gar net so abwegig ist) bring ich viel bier mit....

    ok next problem...

    so das mit dem Threat....

    ich habe nun mal so ca 30 vars eingebunden und es geht auch alles opti nur wie befürchtet wird die Anwendung sehr träge... im endzustand also nutzlos....

    gut aber da ich ja einen profi hab sollte das mit dem Threat ja kein problem werden....


    ok du hast mir ja gezeigt wie ich so nen threat erstelle... kann ich die Funktion die dazu gehört einfach mit in die Form Class schreiben oder muss ich da n modul oder sowas erstellen...

    wenn ich threat.start aufrufe läuft dann die funktion die ganze zeit und den ganzen tag oder muss ich da auch noch irgendwie so a art zyklus vorgeben wie beim timer...

    und dann noch die address of Funktion

    angenommen die funktion heißt Private Function LesenSchreiben()

    was is dann die addresse.. kann ich da einfach LesenSchreiben() reinschreiben oder muss ich da noch was beachten...

    danke
    mfg
    Andre Wagner

  6. #16
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Ja der Thread ist nichts anderes, als eine Funktion, die als paralleles Programm läuft, bis sie an ihr Ende kommt. Dh. wenn du zyklich arbeiten willst, kannst du den Thread jedesmal neu starten oder eine Kombination von While-Schleife und Pause im Thread einlegen. Der AdressOf-Operator benötigt nur den Namen der Routine!

  7. #17
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 64 Danke für 62 Beiträge

    Standard

    Wenn du dir mal solche Protokolle ansiehst, wird dir auffallen warum deine Anwendung langsam wird.

    Es gibt eine mindestgröße für jedes Paket, wenn du also eine Variable per ADS abrufst dann wird immer das ganze Packet verschickt in dem dann 99% der Daten nur Müll sind um das Packet voll zu bekommen. Nun rufst du 30 Packete alle 100ms oder so ab. Ist klar das du damit unnötig viele Daten transportierst und verarbeitest die du garnicht brauchst.

    Lösung:
    Schreib dir in der SPS eine Struktur in der alle wichtigen Variablen enthalten sind die du abrufen willst. Nun rufst du diese Struktur ab und ließt die Daten einzelnd aus dem Stream, sprich ReadInt, ReadDouble, ReadSingle usw.
    Du wirst sehen das deine Anwendung um einiges schneller wird, ohne das du Threads benötigst.
    Zitieren Zitieren Protokol  

  8. Folgender Benutzer sagt Danke zu Neals für den nützlichen Beitrag:

    drfunfrock (24.04.2008)

  9. #18
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Danke für den Tip, denn den kannte ich auch nicht.

  10. #19
    Registriert seit
    20.04.2007
    Beiträge
    81
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK das mit dem Thread funzt einwandfrei...


    is echt ne super erfindung son Multitasking

    etz hab ich noch ein Problem:

    Ich beschreibe Variablen zyklisch mit werten welche aus dem Programm abgefragt werden...

    beim beenden des Progs verwende ich .Dispose()

    damit wird allerdings scheinbar nur die verbindung zur Steuerung getrennt also muss ich ja noch alle handels mit DeleteVariableHandle schließen oder sehe ich das falsch...

    dabei ergibt sich ein neues Problem... die Werte bleiben im Sysmanager gespeichert und die Anlage läuft weiter auch wenn ich das Prog beende...

    nun könnte ich alle vars auf 0 setzen aber das problem is nun das im nächsten Zyklus alle vars wieder mit den Aktuellen werten beschrieben werden...

    gibt es da eine Funktion die die Verbindung und Handels trennt und dabei alles rücksetzt???

    mfg
    Wagner Andre

  11. #20
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Schreibe doch zum Schluss in eine Var, so dass deine PLS weiss, wann sie stoppen soll.

    Ich gebe immer alle Variablen explizit frei, dh. vor dem client.Dispose, lösche ich die Handles mit DeleteVariableHandle. Das ist auch der Grund für meine Konstruktion mit der Liste. Leider hat Beckhoff nicht dokumentiert, ob mit client.Dispose auch alle Variablenhandles freigegeben werden. Zumindestens hilft die explizite Freigabe, so dass der der PC nicht nach einiger Zeit rebootet werden muss. So sind jedenfalls meine Erfahrungen.
    Geändert von drfunfrock (24.04.2008 um 15:24 Uhr)

Ähnliche Themen

  1. Mobotix-Kamera-Stream abfangen
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 24.09.2011, 20:29
  2. TwincAT und TCP-Stream
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 07.08.2011, 11:28
  3. Intouch 10 RSTP Stream
    Von MatMer im Forum HMI
    Antworten: 0
    Letzter Beitrag: 09.03.2011, 11:10
  4. Antworten: 1
    Letzter Beitrag: 25.01.2010, 15:57
  5. Variablen Handle per Stream schnell Abfragen
    Von Parallax im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 21.05.2008, 08:52

Lesezeichen

Berechtigungen

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