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

Ergebnis 1 bis 6 von 6

Thema: Variablen Handle per Stream schnell Abfragen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi...

    nach langer Zeit bins ich mal wieder...

    eigentlich wollte ich am Mittwoch die Anlage endlich abschließen und nie wieder was damit zu tun haben, allerdings habe ich mal wieder ein problem...

    Ich habe mittlerweile annähern 90 Handels die mit ads.createvariablehandle("Variablenname") ereugt wurden....

    in einem Threat frage ich dann die einzelnen Variablen mit zum Beispiel:


    sStream = New AdsStream(2)
    binWriter = New AdsBinaryWriter(sStream)
    sStream.Position = 0
    binWriter.Write(CType(varExzenter1, Int16))
    tcAds.Write(varWrite(23), sStream)
    sStream = Nothing

    ab und das geht auch sehr schön...

    Allerdings ist mir heute aufgefallen das der Threat mittlerweile bei 90 Variablen ca 1sek braucht um alles abzufragen... sollte nun der Schaltpunkt kurz nach seiner Abfrage auftreten und die Reaktion daraus kurz davor so habe ich eine Reaktionszeit von max. 2 sekunden... das ist definitiv zu lang...

    nun habe ich gehört das das neuerzeugen von streams sehr lange dauert also habe ich mir gedacht ich schreibe alle daten in einen Stream und ändere nur die Positionen... also den stream einmal mit
    sStream = New AdsStream(12 erzeugt und dann nur noch jeweils

    sStream.Position = 0 'Änderung der Position um +2 bei nächster Variable
    binWriter.Write(CType(varExzenter1, Int16))
    tcAds.Write(varWrite(23), sStream)

    hingeschrieben... allerdings mag er etz gar nicht mehr...

    könnte ihr mir da sagen was falsch is oder wie wie ich die abfrage wieder in eine geeignete Zykluszeit bekomme (so 100ms) währen ausreichend...

    mfg
    parallax
    Zitieren Zitieren Variablen Handle per Stream schnell Abfragen  

  2. #2
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Wie wärs wenn du den Ads-Server entscheiden laesst, wann sich was geändert hat (Stichwort AdsNotification)

    Beispiel siehe:

    http://infosys.beckhoff.com/content/...s.sample03.htm

    So mach ich das in Anlagen wo mehrere 100 Vars übertragen werden ... und nebenbei hole ich bei Statusänderung noch ein 2D-Array mit 2x 10000 Reals aus der CPU ...

    Bisher (obwohl ich am Anfang auch skeptisch war) hat das Ohne Probleme Funktioniert ...

    Viel Erfolg,
    michael

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

    Standard

    danke... werd ichs wohl so machen müssen....

    hoffe das das nun schneller ist weil sonst bin ich recht am arsch....

    allerdings habe ich wieder ne neue frage...

    bei dem beispiel stehen ja etz wieder nur das programm für c++ dabei....

    ich hab nun in vb.net folgendens geschrieben:

    varRead(25) = tcAds.AddDeviceNotification("VARIABLEN.EINGÄNGE.SENKEN/HEBEN", sStream, 0, 2, AdsTransMode.OnChange, 100, 0, tbData)

    das funktioniert ja so ganz gut....

    nur etz muss ja noch der stream irgendwie bei änderung ausgelesen werden... das bedeutet ich brauch ein event bei dem ein lesen aus Stream ausgeführt wird... leider geht das so wie in dem C++ beispiel in vb.net nicht...

    wäre dankbar wenn du mir dazu noch was sagen könntest...

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

    Standard

    Zitat Zitat von nekron Beitrag anzeigen
    Wie wärs wenn du den Ads-Server entscheiden laesst, wann sich was geändert hat (Stichwort AdsNotification)

    Beispiel siehe:

    http://infosys.beckhoff.com/content/...s.sample03.htm

    So mach ich das in Anlagen wo mehrere 100 Vars übertragen werden ... und nebenbei hole ich bei Statusänderung noch ein 2D-Array mit 2x 10000 Reals aus der CPU ...

    Bisher (obwohl ich am Anfang auch skeptisch war) hat das Ohne Probleme Funktioniert ...

    Viel Erfolg,
    michael
    Hast du irgendwelche Anhaltspunkte, wie lange es von der Änderung bis zu deinem Programm benötigt?

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

    Standard

    das problem ist mir aufgefallen als ich einen Wickler wenden wollte...

    die Stellung wird von einer Nocke gegeben, was dann den befehl zum motorstopp auslöst.... allerdings wurde die nocke häufig komplett überfahren und erst dann hat der motor gestoppt... das entspricht ca einer ansprechzeit von 2 sekunden...

    mittlerweile habe ich das einlesen über Notficiation gelöst und es läuft super...

    allerdings kann ich per notify nicht schreiben und brauche dafür eine ähnlich schnelle methode....

    ich verstehe nicht warum beckhoff in ihren dokus nur C++ Codes anzeigt aber ihre beispiel programme in VB.net geschrieben sind...

    habe gestern nacht bis um halb 4 gebraucht um per try and error alles herauszufinden.... aber nun gehts ja... die frage ist jetzt nur noch wie ich genau so schnell wie mit den notifys einen ausgang beschreiben kann... den das geht ja nun nicht...

    mfg
    Parallax

  6. #6
    Registriert seit
    23.07.2003
    Beiträge
    209
    Danke
    22
    Erhielt 14 Danke für 12 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi ...

    Also schreiben kannst du per Notify gar nicht ... da geht es ja nur darum, über Änderungen an PLC-Variablen automatisch benachrichtigt zu werden.

    warum hast du Probleme mit dem Überfahren einer Nocke ? Macht das nicht Sinnvollerweise die PLC ?

    oder hast du einen BKxxxx und machst dein PLC-Programm in Basic ?

    michael

Ähnliche Themen

  1. TwincAT und TCP-Stream
    Von merlin im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 07.08.2011, 11:28
  2. Kont. Heizen, schnell Heizen, schnell kühlen
    Von Krumnix im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 21.02.2011, 18:43
  3. Windwos Handle
    Von Bender25 im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 24.08.2009, 10:32
  4. libnodave port-handle
    Von leo im Forum Feldbusse
    Antworten: 3
    Letzter Beitrag: 29.06.2007, 17:20
  5. Variablen abfragen
    Von otto99 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 13.03.2006, 12:53

Lesezeichen

Berechtigungen

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