![]() |
CanOpen Netzwerk, VI schließen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA) +---- Thema: CanOpen Netzwerk, VI schließen (/Thread-CanOpen-Netzwerk-VI-schliessen) |
CanOpen Netzwerk, VI schließen - kalle - 07.02.2012 13:03 Hallo Forumsnutzer, ich habe für ein CanOpen Netzwerk ein VI kreiert. Ich setze die NI CanOpen Library ein. Es funktioiert alles sehr gut. Nur eine mögliche Fehlermöglichkeit kann ich nicht abfangen. Unzwar, wenn das VI geschlossen wird ohne vorher die CAN-Verbindung zu schließen. Dann harrt das Netzwerk im letzten Zustand aus. Zumindest in der CanOpen Library scheint es keine Funktion zu geben die das verhindern kann. Was kann man machen? Gruß Kalle RE: CanOpen Netzwerk, VI schließen - GerdW - 07.02.2012 13:33 Hallo Kalle, Zitat:Unzwar, wenn das VI geschlossen wird ohne vorher die CAN-Verbindung zu schließenWarum machst du auch sowas? Beende doch einfach die CAN-Verbindung (mit etwaigem Setzen neuer Werte für die Signale) und beende dann erst das VI... RE: CanOpen Netzwerk, VI schließen - kalle - 07.02.2012 15:25 Üblicherweise wird dass auch so geschehen, nicht zuletzt weil ich das VI "nicht schließbar" mache, wenn der Verbindungsknopf gedrückt ist. Dennoch, wenn der Rechner hängt oder das VI im Taskmanager rausgeschmissen wird bliebe eine E/A Station im Netzwerk auf den alten Stand stehen. Schöner wäre es wenn sie in Störung ginge und die Ausgänge auf null setzt, oder? RE: CanOpen Netzwerk, VI schließen - schrotti - 07.02.2012 19:43 Hast du keinen Heartbeat? RE: CanOpen Netzwerk, VI schließen - Hook1986 - 09.02.2012 11:12 Hallo Kalle, (07.02.2012 15:25 )kalle schrieb: ..., nicht zuletzt weil ich das VI "nicht schließbar" mache ... Wieso machst du denn sowas? Du kannst doch einfach eine Eventstruktur nutzen und dann das "Panel-Close" discarden und zuerst das Netzwerk schliessen und dann das Programm beenden. Des Weiteren sollten Programme nicht mittels Taskmanager geschlossen werden. Damit das nicht geschieht sollten die Progs einfach so Fehlerfrei als Möglich laufen und somit das Schliessen per Taskmanager garnicht notwendig machen. Wer es dennoch per Taskmanager schließt, der ist es halt selbst schuld, wenn dann das Netzwerk abschmiert. Darüber hinaus sollte deine Hardware eventuell einen Watchdog/Timeout haben, der dann automatisch zum Abschalten der Ausgänge bei zu langer Pause führt. Dies ist wahrscheinlich bei dem "Einstellungsknoten" einstellbar. Ich hatte einmal eine Kommunikation zwischen einem PC und einem Roboter per Can-Bus herstellen müssen. Dort gab es einen Methodenknoten zum einstellen eines Timeouts. Wurde die dort eingestellte Zeit überschritten, so wurde die Verbindung geschlossen. Könnte ja bei dir eventuell auch so in der Art eine Möglichkeit geben. MfG Carsten RE: CanOpen Netzwerk, VI schließen - kalle - 27.02.2012 10:55 Das Schließen über den Taskmanager nehm ich nur als mögliche Fehlerquelle an, regulär ist das VI nur schließbar wenn die CAN-Verbindung getrennt wurde. Heartbeat nutze ich auch und die Teilnehmer gehen in Störung wenn man zum Beispiel das Bus-Kabel zum Teilnehmer trennt. Beendet man das VI nun aber ohne die Verbindung zu trennen, dann läuft der Bus weiter, auch ohne VI. Die CAN-Karte hält den Bus am laufen, unabhängig ob weiter oben ein VI läuft oder nicht. Mich beunruhigt dies da man mit einer E/A-Einheit zum Beispiel eine Heizung steuern könnte. Wird das VI irregulär beendet wenn der Digitalausgang gerade die Heizung angeschalten hat, würde die Heizung nicht wieder ausgehen. Aber letztlich ist ein VI auf einem Windows PC keine SPS, oben beschriebene Sicherheitslücken muss man einfach mit Hardwaremaßnahmen (Temperaturwächter) schließen. Gruß Kalle RE: CanOpen Netzwerk, VI schließen - schrotti - 05.03.2012 20:25 Ok, mach folgendes: Benutze nicht das Heartbeat-VI von NI, sondern bau dir ein eigenes VI, welches den Heartbeat softwaregesteuert versendet. Soll heißen, du lässt deine Schleife mit meinetwegen 2 Hz laufen und greiftst pro Iteration zweimal auf CAN-Write zu, um einen Heartbeat in die Write-Queue zu schieben. NI hat glaube ich den Heartbeat auf die CAN-Karte ausgelagert. Gibt dazu ja Funktionen, die von der API bereitgestellt werden. Schont die Ressourcen, allerdings würde der Verzicht darauf ebenfalls Ressourcen schonen. |