# Web-Visualisierung über Browser



## Axan (12 Dezember 2017)

Hallo SPS-Forum Community,

ich verwende einen WAGO 750-880 Ethernet Controller für eine Steuerung, die ich auf Rechner 1 (Windows XP mit 32 Bit System) mit CoDeSys 2.3 programmiert und erfolgreich getestet habe. Anschließend habe ich mit Rechner 2 (Windows 10 mit 64 Bit System) auf die Web-Visualisierung zugegriffen, was nach einigen Startschwierigkeiten mit Java (32 Bit, Version 8, Update 151) dann funktioniert hat. (Die Ausnahmeregelung im Java Control Panel ließ den Zugriff auf die Web-Visualisierung zu.) Weiterhin habe ich das Häckchen für die Web-Visualisierung bei den Zielsystemeinstellungen gesetzt und kann auch die Visualisierung sehen. Die Java-Version habe ich am 11.12.17 heruntergeladen und neu installiert, sodass zumindest eine veraltete Version ausgeschlossen werden kann.

Das Problem besteht darin, dass ich in der Web-Visualisierung nur teilweise Reaktionen bekomme. Der Wechsel über einen Knopf zu einer anderen Visualisierung im gleichen Projekt mit der "currentvisu" Variable funktioniert zwar, jedoch kann ich keine Ausgänge ansteuern. Es scheint so, als ob man sich eingeloggt hätte, aber dann nicht gestartet hätte, um einen Vergleich zu CoDeSys zu ziehen.Hat jemand einen guten Tipp auf Lager?


----------



## oliver.tonn (12 Dezember 2017)

Geht es um binäre Ausgänge? Dann musst Du unter Eingabe auswählen, ob er beim Drücken die Variable umschalten oder tasten soll und natürlich die Variable angeben. Mach doch mal Screenshots von den Einstellungen des Elements.


----------



## Axan (12 Dezember 2017)

*Screenshots der Einstellungen des Elements*

Hallo Oliver,
Vielen Dank für die schnelle Antwort. Anbei sind die gewünschten Screenshots. Der Knopf tastet die Variable PLC_PRG.xVisuDo16. (leider etwas abgeschnitten im Bild.) Diese Variable triggert dann den Baustein für die fallende Flanke und dann wiederum einen RS-Baustein, der dann den eigentlich Ausgang ansteuert.


----------



## oliver.tonn (12 Dezember 2017)

Geht die Variable nie auf TRUE oder einmal auf TRUE und dann nie wieder auf FALSE?
Ich weiß, dass bei Codesys selber das Programm mit dem Namen PLC_PRG auch ohne explizit angelegten Task ausgeführt wird, wie das bei WAGO ist weiß ich allerdings nicht. Wird PLC_PRG tatsächlich ausgeführt?


----------



## Axan (12 Dezember 2017)

Am Anfang sind beide Variablen auf FALSE. Wenn man dann xVisuDo16 über den Knopf tastet, dann wechselt xDo16 von FALSE auf TRUE. Wenn man dann wieder xVisuDo16 tastet, dann wechselt xDo16 von TRUE auf FALSE. Dieser Vorgang lässt sich dann beliebig oft wiederholen, man hat einen bistabilen Zustand. Das funktioniert wunderbar, wenn man die Visualisierung über CoDeSys direkt ansteuert. Wenn man allerdings die Visualisierung über die Web-Visualisierung aufruft, dann geht das leider nicht.


----------



## oliver.tonn (12 Dezember 2017)

Warum dieser Aufwand? Es gibt doch in der Visu die Option Variable toggeln?
Kommen denn überhaupt Signale über die Webvisu in der SPS an? Ändert sich der Zustand von xVisuDo16 wenn Du den Taster länger drückst?


----------



## Axan (12 Dezember 2017)

Ich hatte diese Struktur aus einem vorgefertigten Projekt übernommen. Außerdem hatte ich es zwischendurch mal in der Tat mit der Option Variable toggeln probiert, doch dann hatte ich Probleme, wenn mehrere Programme auf denselben Ausgang geschrieben haben. 
Und ja, es kommen Signale über die Webvisu in der SPS an. Ich habe einen weiteren Knopf, der auf eine andere Visualisierung (PLC_VISU_B) wechselt. Der funktioniert, jedoch springt nach kurzer Zeit die Web-Visualisierung wieder auf die Startvisualisierung (PLC_VISU) zurück. 
Und nein, der Zustand von xVisuDo16 ändert sich nicht, wenn ich den Taster länger drücke.


----------



## Sagas (12 Dezember 2017)

Hallo,

das klingt in Summe alles andere als normal- vorallem das er immer wieder auf die PLC_Visu zurückspringt. Ich hatte mal ein ähnliches Verhalten, dabei war das Boot-Projekt beschädigt/fehlerhaft.

Nach Möglilchkeit solltest du die Steuerung einmal komplett zurücksetzen/ Reset(Ursprung) und dannach das Projekt komplett bereinigen, neu Übersetzen, laden und explizit "Bootprojekt erzeugen". Ggf. vorher noch die Retain-Daten sichern.

Grüße


----------



## Axan (12 Dezember 2017)

Hallo Sagas,

ich habe deine Anweisungen befolgt und es hat tatsächlich etwas Fortschritt gebracht. Beim Wechsel auf PLC_VISU_B bleibt er erstmal dort und springt nicht wieder zurück.

Daher habe ich jetzt zur Kontrolle noch folgendes Experiment gemacht:

Soll-Zustand:
Knopf 1 soll xDo16 toggeln.
Knopf 2 soll xDo17 tasten.


Da andere Programme auf xDo16 zugreifen, benötige ich folgende Programmierung:


Programmierung:
Knopf 1 tastet xVisuDo16. Mit TRIG-Baustein und RS-Baustein wird xDo16 bistabil getoggelt.
Knopf 2 tastet xDo17 direkt.


Ist-Zustand:
In CoDeSys: (Eingeloggt + Start)
Knopf 1 tastet xVisuDo16 -> Ausgang xDo16 reagiert bistabil. -> Ok.
Knopf 2 tastet xDo17 -> Ausgang xDo17 zieht kurz an und fällt sofort wieder ab, egal wie lange man drückt. -> Ok.


In WebVisu über Browser:
Knopf 1 reagiert überhaupt nicht. -> Nicht Ok.
Knopf 2 tastet xDo17 -> Ausgang xDo17 zieht an und fällt erst dann wieder ab, wenn man die Taste wieder loslässt. -> Nicht ok, soll kurz anziehen und dann sofort wieder abfallen.


In CoDeSys: (Eingeloggt und kein Start!)
Knopf 1 reagiert überhaupt nicht. -> Ok. (Soll ja auch nicht reagieren, solange das Programm nicht läuft.)
Knopf 2 tastet xDo17 -> Ausgang xDo17 zieht an und fällt erst dann wieder ab, wenn man die Taste wieder loslässt. -> Nicht ok. Es sollte doch überhaupt nicht reagieren?

Die Ähnlichkeit zwischen dem Fall Web-Visu und dem Fall CoDeSys (Eingeloggt und kein Start!) scheint mir auffällig ähnlich zu sein.


----------



## NieZuSpaet (12 Dezember 2017)

Wenn das Programm nicht gestartet ist, kann natürlich nur die Variable gesetzt werden. Aber dein r_trig und dein RS werden nicht abgearbeitet. 
Und dann würde ich erst mal versuchen, die Funktion mit Variablen zu testen, die nicht anderswo im Programm noch beschrieben werden. Ist ein Unding, sowas zu tun und erschwert natürlich jegliche Fehlersuche. Besser also mit Hilfsvariablen arbeiten und an einer zentralen Stelle dann aus allen Hilsvariablen dein do. schreiben


----------



## Mavorkit (12 Dezember 2017)

Axan schrieb:


> Hallo Sagas,
> 
> ich habe deine Anweisungen befolgt und es hat tatsÃ¤chlich etwas Fortschritt gebracht. Beim Wechsel auf PLC_VISU_B bleibt er erstmal dort und springt nicht wieder zurÃ¼ck.
> 
> ...


Hi,

Das die Variable mit Tasten erst wieder aus geht wenn du den Button los lässt ist bei Codesys normal. Welche Variablen probierst du damit zu manipulieren? Evtl. Wird deine Variable von einer anderen Stelle beschrieben und auf False gehalten?

@Oliver auch bei WAGO wird ohne Task Konfiguration standardmäßig PLC_PRG ausgeführt.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Axan (13 Dezember 2017)

Hallo NieZuSpaet,

aus deinem Post lese ich heraus, dass man anscheinend sehr wohl das Programm aus der Web-Visualisierung heraus starten kann und auch starten muss. Die doppelte Belegung von Variablen ist meinem relativ frischen Einstieg geschuldet, hier fehlt mir noch einiges an Wissen und Erfahrung. Daher die Frage an dich: Wie kann man das Programm aus der Web-Visualisierung heraus starten?


----------



## Axan (13 Dezember 2017)

Hallo Mavorkit,

mit Hilfe von Knopf 2 wird die Variable xDo17 geschaltet. Diese ist in der Steuerungskonfiguration für Kanal %Q1.1 angelegt worden und ist vom Datentyp BOOL. Einen weiteren Zugriff auf xDo17 gibt es zwar im Rahmen des Programms NOT AUS, dieses wird aber dank einer IF-Abfrage nur durchlaufen, wenn vorher der entsprechende NOT AUS Knopf gedrückt wurde.


----------



## NieZuSpaet (13 Dezember 2017)

Hallo Axan, 
ich habe deine Aussagen


Axan schrieb:


> In CoDeSys: (Eingeloggt + Start)


und


Axan schrieb:


> In CoDeSys: (Eingeloggt und kein Start!)


so gedeutet, das einmal das Programm (also die CoDeSys-Runtime) gestartet ist und einmal eben nicht. Im zweiten Fall kannst du schon Eingänge und Variablen von einer Visualisierung aus steuern, aber da das Programm nicht abgearbeitet wird, wird auch die Flankenauswertung nicht gemacht. Heißt, du kannst zwar xVisuDo16 auf true und false setzen, mehr wird aber nicht passieren.

Jetzt noch mal die Frage an dich: was meinst du damit:


Axan schrieb:


> Daher die Frage an dich: Wie kann man das Programm aus der Web-Visualisierung heraus starten?


Vielleicht reden wir auch aneinander vorbei...
Gruß
Holger


----------



## oliver.tonn (13 Dezember 2017)

Das von Dir als normal bezeichnete Verhalten von xDo17 wenn Codesys läuft ist nicht normal. Die Variable bleibt eigentlich so lange auf TRUE wie der Button in der Visu gedrückt wird.


----------



## Axan (14 Dezember 2017)

Hallo NieZuSpaet,

damit meine ich folgendes: Ich habe den intuitiven Verdacht, dass die Web-Visualisierung sich genau so verhält wie die Testumgebung bei CoDeSys. Man muss sich bei CoDeSys auch zuerst auf die Steuerung einloggen ( Alt + F8 ) und dann nochmal explizit die Ausführung starten (F5). Daher hatte ich die Vermutung, dass beim Aufrufen der Web-Visualisierung durch die IP-Adresse das Einloggen gemacht wird und man nun anschließend ebenfalls explizit die Ausführung starten muss. Jetzt kann man natürlich nicht F5 drücken, weil dies ja im Browser zum Aktualisieren der Seite führt...

Viele Grüße

Axan


----------



## Axan (14 Dezember 2017)

Hallo Oliver,

Da hast du Recht. Es schadet allerdings meiner Steuerung nicht, wenn es sofort wieder abfällt. Die Zeit muss nur ausreichen, um ein Selbsthalterelais wieder anzuziehen. Bisher konnte ich diese Funktion in meiner Steuerung nur bedingt testen, da ich dafür eine Reihe von 4 induktiven Näherungssensoren brauche, die für die endgültige Anwendung bereits fest verbaut sind.

Viele Grüße

Axan


----------



## jensemann (14 Dezember 2017)

Hallo Axan,
das Programm benötigt natürlich ein Bootprojekt und die Steuerung muss das Projekt automatisch starten. Ich arbeite nur mit TwinCat aber das sollte in den Projekteinstellungen bei CodeSys das Gleiche sein. 
Was du in deiner Testumgebung mit F5 machst, sollte die Steuerung auch allein tun. Schliesslich soll sie ja immer laufen.
Eigentlich solltest du auch gleichzeitig in der Entwicklungsumgebung eingelogt sein können und über den Browser die WebVisu bedienen können.


----------



## oliver.tonn (14 Dezember 2017)

Ich glaube Dein Post #16 zeigt jetzt auf wo Dein Problem ist. Du lädst das Projekt zwar auf die Steuerung, startest dieses dann aber nicht. Dies muss jedoch sein damit die Webvisu läuft. Soweit Du ein Bootprojekt erzeugt hast musst Du die Steuerung so konfigurieren das diese automatisch gestartet wird. Das die Buttons zum Umschalten der Visu auch funktionieren wenn die SPS im Stop ist liegt meines Wissens daran, das diese Funktionalität direkt im Webserver abgearbeitet wird und dieser läuft unabhängig von der SPS.


----------



## Mavorkit (14 Dezember 2017)

Axan schrieb:


> Hallo Mavorkit,
> 
> mit Hilfe von Knopf 2 wird die Variable xDo17 geschaltet. Diese ist in der Steuerungskonfiguration für Kanal %Q1.1 angelegt worden und ist vom Datentyp BOOL. Einen weiteren Zugriff auf xDo17 gibt es zwar im Rahmen des Programms NOT AUS, dieses wird aber dank einer IF-Abfrage nur durchlaufen, wenn vorher der entsprechende NOT AUS Knopf gedrückt wurde.


Hi Axan,

Sorry für die späte Antwort. Ich würde auch über If schleifen Ausgangsvariablen nie doppelt beschreiben, sondern immer eine Logik davor schalten (and, or...). Solche Dinge ersparen lange suchen nach Fehlern, die durch Parallelzugriffe verursacht werden. Wenn du mit einem Signalimpuls eine Variable schalten möchtest, nimm doch einfach ein RS-Baustein. Wenn du mit nur einem Signal Ein und ausschalten möchtest, würde ich dir einen Stromstoß Baustein empfehlen oder an den RS an beide Eingänge ein and mit der selben Flanken Auswertung und dem Ausgang negiert.

Zu den anderen Themen ist es grundsätzlich so:

Das Programm wird übersetzt, danach übertragen. Das kannst du auch mit dem Verbinden Button beides machen.
Damit dein Programm bearbeitet wird, musst du dir Steuerung starten. Diese Bearbeitung wird nur durch den Stopp Button, den Hardware Knopf an der PLC oder die fehlende Spannung unterbrochen.
Sonderfall ist beim Ausfall der Spannung, dort startet der PLC nach dem Einschalten der Spannung wieder. Damit hier dein Programm erhalten bleibt muss während du Verbunden bist auf online und Bootprojekt erzeugen.
Beim Ausloggen wird also das Programm nicht gestoppt.
Im Stopp läuft die Visu, kann auch bedient werden aber es gibt keine Ausgabe.

Ich hoffe das hilft dir weiter, wenn nicht kannst du mir auch gerne Mal dein Programm schicken und ich schau drüber.


Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Axan (19 Dezember 2017)

Hallo Oliver,

Kann es vielleicht sein, dass man in der Tasksteuerung den Mainloop durch ein Systemereignis starten lassen muss? Denn ansonsten wüsste ich nicht, wie ich der Steuerung erzählen soll, dass sie auch sofort startet. Ich hatte bisher naiv angenommen, dass der WAGO Ethernet Controller die Abarbeitung vom Mainloop beginnt, sobald er mit Strom versorgt wird.

Viele Grüße

Axan


----------



## oliver.tonn (19 Dezember 2017)

Solange Dein Programm das alles ausführt PLC_PRG heißt und Dir eine Zykluszeit von 10ms reicht benötigst Du keine Taskkonfiguration. Was Du allerdings machen musst ist ein Bootprojekt erzeugen und der Steuerung sagen, dass sie nach dem Einschalten in Run gehen soll/muss. Wie das bei WAGO geht weiß ich allerdings nicht, sorry.


----------



## Axan (19 Dezember 2017)

Hallo Mavorkit,

danke für die Rückmeldung. Ich kann dir allerdings nur teilweise folgen. Wo befindet sich denn dieser "Verbinden" Button? Ich habe bisher nur mit den Schaltflächen "Einloggen" und "Start" in CoDeSys gearbeitet. Oder ist das vielleicht die Version CoDeSys 3.5?

Viele Grüße

Axan


----------



## oliver.tonn (19 Dezember 2017)

Einloggen ist verbinden und Start startet das SPS-Programm ab dann sollte die Webvisu eigentlich laufen und erreichbar sein, nach einem Neustart ohne das Du Dich Einloggst und Start drückst kann das allerdings anders sein und die Steuerung ist im Stop und hat auch nicht unbedingt das Programm geladen..


----------



## Mavorkit (19 Dezember 2017)

Axan schrieb:


> Hallo Oliver,
> 
> Kann es vielleicht sein, dass man in der Tasksteuerung den Mainloop durch ein Systemereignis starten lassen muss? Denn ansonsten wÃ¼sste ich nicht, wie ich der Steuerung erzÃ¤hlen soll, dass sie auch sofort startet. Ich hatte bisher naiv angenommen, dass der WAGO Ethernet Controller die Abarbeitung vom Mainloop beginnt, sobald er mit Strom versorgt wird.
> 
> ...


Moin,

Wenn du keine Tasks angelegt hast startet automatisch PLC_PRG. Sind Tasks angelegt, werden nur die angelegten bearbeitet.

Die Abarbeitung dieser Tasks wird aber durch Start angestoßen nach dem Programm übertragen. Wenn die Spannung ausfällt und das Bootprojekt geladen wurde startet das Programm automatisch, außer der Schalter unter der Klappe steht auf Stopp.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Axan (19 Dezember 2017)

Hallo Oliver,

in der Taskkonfiguration habe ich einen Mainloop, dieser beinhaltet als 1. Task das Programm PLC_PRG. Weiterhin habe ich alle anderen Programme in denselben Mainloop getan, und überall einen Gate-Demon eingebaut. (Gate-Demon ist in diesem Fall eine einfache IF-Abfrage, die einen sofortigen Ausstieg aus dem Programm erzeugt, wenn nicht der erforderliche Knopf gedrückt wurde.) Daher kommt mein Mainloop auf eine Zykluszeit von ca. 2 ms, wenn man keinen Knopf drückt. Um auf einen Ratschlag zurückzukommen, schaue ich mir gerne mal an, ob ich vielleicht noch irgendwie der Steuerung nochmal explizit sagen kann, dass sie sich selbst starten soll, sobald die Versorgungsspannung am Ethernet Controller anliegt.

Viele Grüße 

Axan


----------



## Axan (18 Januar 2018)

Das Problem ist dadurch gelöst worden, dass ich zwar ein Bootprojekt erzeugt habe, aber nicht explizit in die Steuerung geschrieben habe. Ich habe jetzt den automatischen Sourcedownload aktiviert, sodass dieser Fehler in Zukunft nicht mehr passieren kann. Vielen Dank an Jensenmann, Oliver und Mavorkit für den richtigen Hinweis.


----------



## Mavorkit (18 Januar 2018)

Axan schrieb:


> Das Problem ist dadurch gelöst worden, dass ich zwar ein Bootprojekt erzeugt habe, aber nicht explizit in die Steuerung geschrieben habe. Ich habe jetzt den automatischen Sourcedownload aktiviert, sodass dieser Fehler in Zukunft nicht mehr passieren kann. Vielen Dank an Jensenmann, Oliver und Mavorkit für den richtigen Hinweis.


Hi Axan,

Mit dem Sourcedownload lädt das nicht kompilierte Programm in die Steuerung und kann ohne dass Programm zu haben direkt aus der Steuerung geladen werden. Ich weiß nicht ob du das berücksichtigt hast, ist nur als Hinweis gedacht.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Axan (19 Januar 2018)

Hallo Mavorkit,

vielen Dank auch für diesen Hinweis. Dann lade ich ab jetzt wieder das Bootprojekt von Hand in die Steuerung, über die CoDeSys Schaltfläche "Datei in Steuerung schreiben".

Viele Grüße

Axan


----------



## Mavorkit (19 Januar 2018)

Hi Axan,

Online Bootprojekt erzeugen erledigt bei mir alles automatisch.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Axan (19 Januar 2018)

Hallo Mavorkit,

dann mal vielen Dank auch für diesen Tipp. 

Viele Grüße

Axan


----------



## KingHelmer (19 Januar 2018)

Hi Axan,

also das Erzeugen des Bootprojektes kannst du auch über dei Zielsystemeinstellungen automatisch erledigen lassen. (Zielsystemeinstellungen - Allgemein - Bootprojekt automatisch laden).
Wenn du im Online Modus das Bootprojekt anlegst, wird es auch automatisch geladen und du musst nicht extra die Datei schreiben.


----------

