Eingriff in CoDeSys-gesteuerte Ausgangsmodule

clumsi

Level-1
Beiträge
137
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich bin im Thema CoDeSys noch recht neu, und nutze den CAN-Bus bisher auf eine "etwas andere" Art.
Soweit ich weiß, gibt es in CoDeSys verschiedene Möglichkeiten, um einen Ausgang anzusteuern. Entweder der Ausgang wird gesetzt oder Rückgesetzt, wenn eine Bedingung erfüllt ist, oder der Ausgang hat laufend den Zustand der Bedingung, richtig?

Jetzt möchte ich den Ausgang durch eine gezielte Nachricht aus dem PC (unabhängig von der SPS) ansteuern. Entsteht dadurch ein Fehler, oder kann man das einstellen? Was passiert, wenn der Ausgang durch eine ständig wahre Bedingung ständig angesteuert ist, und ich von extern eine Nachricht zum Abfallen des Signales schicke?

Ich könnte mir vorstellen, dass ich nicht einfach z.B. Stromwerte von einem Stromeingang auf seiner ID senden darf, aber das Ansteuern eines Ausganges sollte die SPS erlauben dürfen, oder?

Grüße,
clumsi
 
Hallo,

Deine Idee mit dem direkten Steuern von SPS-Ausgängen von außen vergiss' mal schnell wieder.

Bei Ausgängen die ständig von der SPS gesteuert werden gelingt das Übersteuern bestenfalls für ein paar Millisekunden. Dann überschreibt die SPS ja wieder den Ausgangszustand.
Bei Ausgängen die von der SPS nur bei bestimmten Ereignissen gesteuert werden kann das übersteuern gelingen - doch wenn Du das kannst, dann kann das jeder. Jeder könnte diese "unkontrollierten" Ausgänge nach belieben choatisch schalten. Deshalb ist eine solche "Programmierung" auch als völlig unsauber verpönt. Stell Dir vor Du suchst einen (vermeintlichen?) Programmfehler und die Zustände der Ausgänge ändern sich - Du kannst es aber im Programm nicht sehen, weil es gar nicht aus dem Programm kommt ...

Also: sende von Deinem PC Deine Schaltwünsche an Variablen der SPS und die SPS verknüpft diese Variablen in den ständigen Ausgangszuweisungen wenn es die Umstände erlauben - das ist sauber und nachvollziehbar.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

bis jetzt gibt es ja ein PC-Programm, das alles steuert. Jetzt soll ein Teil (einzelne Abläuft) in eine 750-838 ausgegliedert werden. Ich mache das dann natürlich nur, wenn die 750-839 die entsprechende Funktion nicht gerade selbst ausführt. Im Fehlerfall mache ich einfach das PC-Programm aus, und weiß, dass daher nichts kommt. Mir ging es erstmal nur darum, ob CoDeSys das als Fehler auffasst, dass Nachrichten auf dem Bus laufen, obwohl der Controller keine senden wollte....

clumsi
 
Ich weiß nicht, warum. Aber warum muss man im Jahr 2013 noch immer über so eine Art der Programmierung diskutieren? Schick deine Kommandos vom PC an die SPS. Wenn du eh den "Aufwand" betreiben willst, irgendwelche Ausgangsvariablen zu beschreiben, kannste auch einfach globale Variablen beschreiben und die in der SPS dann in die Zuweisung des Ausgangs packen.

Wie bereits erwähnt ist das höchst unsauber. Und es ist ja schön, dass DU weißt, wo da wann was wie und warum von nicht sichtbarer Stelle geschrieben wird. Aber dein Kollege, der vielleicht in 2 Jahren die Anlage warten muss oder da nen Fehler sucht, de wird das womöglich nicht wissen. Also: nicht tun.

Auch deswegen, weil's sonst eben kein Auslagern in die Wago ist sondern...naja...Gebastel. Ich verweise hierzu auf meine Signatur.

Was den CAN betrifft hab ich da keine Erfahrung. Faktisch ist es so, dass eine Multi-Master-Funktionalität vom Feldbus unterstützt werden muss. Eine Implementierung dieses Feldbusses sollte dann die entsprechenden Möglichkeiten bieten. Wenn das CAN-Bus also Multi-Master unterstützt sollte das auch mit der Wago gehen. Was du da aber vor hast, hat wenig mit Multi-Master zu tun ;-) DAS wäre nämlich eher: PC als Master schickt Nachricht an SPS als Master und die macht mit den Daten irgendwas. So wär's dann auch sauber.
 
Zurück
Oben