Stack des Warrios leeren?

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Stack des Warrios leeren?

Post by Christoph Jung »

So ich habe heute seit kurz nach 9 Uhr ein Programm mit 2 Threads laufen lassen. Um ca. 15:30 hab ich den Test dann beendet. Es gab keine abstürze, keine Fehler oder sonst irgend etwas. Es kamen immer Daten an, wenn ich etwas am IO-Port geändert haben, so wie es sein sollte.

Allerdings hab ich den Test auf meinem Entwicklungsrechner mit Windows 8 (64 Bit) laufen lassen. Auf meinem Entwicklungsrechner deswegen, um beim Test Systemlast zu haben (Musik, Internet, MAil-Client, Visual Studio, Eclipse und allerlei Apps).

Morgen lass ich das ganze nochmal auf meinem Windows 7 Laptop laufen um sicher zu gehen. Aber soweit ich das sagen kann läufts wie es laufen sollte.
Das Problem ist ich hab hier nicht die Selbe Hardware wie MichaelV. Der Aufbau bei mir besteht aus zwei IO-Warrior24 Starterkits am selben USB-Host mit jeweils 0.5 Meter USB Kabel.


Gibts in der zwischenzeit neue Erkenntnisse MichaelV?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Stack des Warrios leeren?

Post by Christoph Jung »

Es gibt da noch ein paar Fragen zum Aufbau.

1. ) Wozu dienen die Widerstände auf dem Starterkit-board (evtl. schaltplan oder skitze)?
2. ) Wie genau sieht das Kabel von der SPS zum IO-Warrior aus?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
MichaelV
Posts: 32
Joined: Mon May 30, 2011 4:16 pm

Re: Stack des Warrios leeren?

Post by MichaelV »

Hallo,
bin leider krankheitsbedingt erst Montag wieder im Büro.
Zu Ihren Fragen. Die Widerstände sind Pullup widerstände. Die hat der Hardwareersteller angebracht. Sicherlich sind die unnötig, aber sollten nicht stören.
Mehrere Threads sind meinen Tests zufolge nicht nötig um den Effekt zu erzeugen. Ich kann das Problem mit einer einfachen while schleife im consolenprogramm und einem Warrior nachvollziehen. Ich lasse das Programm laufen - alle 10ms eine Abfrage (nonblocking), Anzeige wenn ein Port nach Masse gezogen wird. Auf meinem Entwicklungsrechner liefert das Programm irgendwann (nach mehren Stunden) keine Daten mehr (unter debugger betrieben).
Ziehe ich den Warrior ab, ist der Effekt genauso (logisch), deshalb mein Verdacht auf Verbindungsverlust.
Auf dem Livesystem dauert es nach Aussage nicht sehr lange. Der Rechner ist allerdings dort nicht sehr leistungsfähig. Ich glaube ein P4 mit windows XP.

Ich gebe dem Auftraggeber bescheid, damit er sich zur Verkabelung auessert und wie das interface angesteuert wird.

Michael
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Stack des Warrios leeren?

Post by Christoph Jung »

Ich habe nun auch einen Test über 6 Stunden laufen lassen mit einem einfachen Konsolenprogramm, dass in einer while-Schleife alle 10ms
IowKitReadNonBlocking() aufruft. Die IO-Pins habe ich mit einem IO-Generator gespeist, der mit an einem Port einen zufälligen 8-Bit Wert ausgibt.

Es sind in der Zeit keine Fehler oder aussetzter aufgetreten. Er liest ganz artig die Ports aus. Allerdings hab ich das ganze nicht im Debugger sondern
mit einem eigenständigen Programm betrieben (Release Version). Der Debugger ist ja auch nicht aktiv an der SPS schätze ich mal.

Die Hardware an sich sollte keine Probleme bereiten. Ein P4 ist innernoch leistungsstark genug. Wir haben hier diverse CPUs im Laufe der Jahre gehabt und es kam nie zu den beschriebenen Probleme wegen der geringen Performace.

Der IO-Warrior hat interne Pull-Up Widerstände, daher erschließt sich mir der Einsatz von externen Pull-Ups nicht wirklich. Aber ob das das Problem ist kann ich nicht sagen. Dazu müsste ich die Hardware 1:1 hier nachbauen.

Langsam bin ich mit meinem Latein am Ende. Ich kann den beschriebenen Fehler einfach nicht nachvollziehen oder nachstellen.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
MichaelV
Posts: 32
Joined: Mon May 30, 2011 4:16 pm

Re: Stack des Warrios leeren?

Post by MichaelV »

Hallo,
Zunächst vielen Dank fuer ihre Bemühungen.

Der Ersteller der Hardware hat versucht die Fragen zu beantworten.
1. die Widerstände sind Pull up Wid. zum erzeugen eines definierten Hi-Signals am Warrior-Eingang (8 Eingänge), denn die Schaltstufen des Pegelwandlers im Gerät sind normale npn Transistoren, die das Signal im aktiven Zustand nach Masse ziehen im inaktiven Zustand aber hochohmig sind.
2. Das Kabel ist 8 polig geschirmt, 5 Leitungen als Signal, 1 als GND und der Schirm liegt geräteseitig auf Potentialausgleich.
3. Kollektor von npn BC547 direkt auf Eingang Warrior mit Ziehwiderstand.
4. keine galvanische Trennung. Die Geräte haben 24V-seitig pneumatische Ventile zur Maschinensteuerung, es gibt keine Motoren und Induktivitäten. Die Hochspannungsprüfung (500V) befindet sich in einem separaten Gerät, dass nur SPS-mäßig (24V) mit dem Steuergerät verbunden ist. Hochspannungsleitungen sind geschirmt und räumlich getrennt von den Datenkabeln. Alle Gerätegehäuse liegen auf Potentialausgleich.

Ich werden hier auch nochmal Dauertests fahren.
Ausserdem werden wir den Rechner dort austauschen, um keinen Externen USB Hub verwenden zu müssen.
Ich hatte auch nochmal überlegt, ob ich die iowkit anders ansteuern kann. (Etwa nach jeder Messung neu initialisieren und deintialisieren des Moduls, damit sichs wieder fängt
mit IowKitOpenDevice() bzw. IowKitCloseDevice(); nach jedem Aufruf)
Hier bin ich zur Erkenntnis gekommen, dass das nicht geht, weil ich nicht jedeneinzelnen Warrior direkt ansprechen kann (das sie gemeinsam verwaltet werden).
Es wäre auch gut, wenn es in der Bibliothek eine Methode gäbe, der man eine Callback übergeben kann, die dann aufgerufen werden muesste, sobald der Warrior deconnected wird. (Keine Ahnung ob das erkennbar ist)

Gruss Michael
MichaelV
Posts: 32
Joined: Mon May 30, 2011 4:16 pm

Re: Stack des Warrios leeren?

Post by MichaelV »

Hallo,

wir haben hier Fortschritte gemacht. Das Problem war scheinbar der USB - Hub. Ohne den läuft es, wie es soll.
Ein direkter Defekt an diesem scheint jedoch nicht vorzuliegen. Er funktioniert mit anderen Geräten. Jetzt hängen die Warriors Rechner direkt am Rechner.

Gruss Michael Vanderheyden
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Stack des Warrios leeren?

Post by Christoph Jung »

Wir haben schon einige Hubs kennen gelernt die Probleme verursachen. Wir wissen aber auch nicht genau woran es liegt. Aber wenn das Problem damit behoben ist, schließen wir den Fall ab.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Stack des Warrios leeren?

Post by Guido Körber »

Die Ursachen können vielfältig sein. Einige Hubs sind elektrisch so schlecht aufgebaut, dass die Spannung oder die Signale nicht sauber sind.

Ganz schlimm wird es bei USB 2.0 Hubs, die intern von High Speed auf Low Speed umsetzen, da gibt es anscheinend einige, die Protokollfehler machen.

Die ultimative Steigerung sind USB Verlängerungen, Dinge die in diesem Universum eigentlich nicht existieren können, da die Signale zwischen den Verlängerungsboxen in der Zeit zurückreisen müssten um das Protokoll nicht zu verletzen.
MichaelV
Posts: 32
Joined: Mon May 30, 2011 4:16 pm

Re: Stack des Warrios leeren?

Post by MichaelV »

Hallo zusammen.
Das war ein Logilink Hub (USB2.0) - zumindest mechanisch sah er sehr gut aus. Andere Geräte funktionieren scheinbar problemlos. Sie sollten in den Dokumentationen darauf hinweisen, dass es Probleme geben kann.

Gruss Michael Vanderheyden
Post Reply