# Login Codesys festtstellen



## Termi (19 Mai 2015)

Hallolö,
ich möchte gerne, wenn ich mich mit der CoDeSys ein/auslogge, Variable sichern/laden. Gibt ein Ereignis was beim Login aufgerufen wird oder anders herum gefragt, wie kann ich beim Programmablauf feststellen ob ich mit der CoDeSys verbunden bin?

Chris


----------



## lord2k3 (19 Mai 2015)

Ich kann dir leider nicht sagen ob es einfacher (bzw. mit anderen Zielsystemen) funkioniert...

Bei den PFC200er gibt es die Möglichkeit mit der ConfigToolLib zwischen Linux und CODESYS zu "kommunizieren".
Dafür habe ich einfach mal mit netstat gespielt um die Info zu bekommen:



Die Datei "get_codesys_socket" muss ins Verzeichnis /etc/config-tools/ und benötigt folgende Berechtigung: chmod 755


----------



## Exing (19 Mai 2015)

Hallo Termi,

was mir noch einfällt: Du kannst eine boolsche Variable deklarieren, die Du nach dem Einloggen per _Online->Werte forcen_ oder <F7> auf TRUE setzt. Das wäre dann aber natürlich nicht direkt nach dem Einloggen, sondern erst ein paar Sekunden später...
Hilft Dir das trotzdem weiter?

MfG
Exing.


----------



## Termi (20 Mai 2015)

Exing schrieb:


> Hallo Termi,
> 
> was mir noch einfällt: Du kannst eine boolsche Variable deklarieren, die Du nach dem Einloggen per _Online->Werte forcen_ oder <F7> auf TRUE setzt. Das wäre dann aber natürlich nicht direkt nach dem Einloggen, sondern erst ein paar Sekunden später...
> Hilft Dir das trotzdem weiter?
> ...



leider nein. Ich denke Du hast es nicht richtig verstanden, was ich  wollte: Sobald ich in der CoDeSys sage "login" und mich auf den Controller einlogge, soll die Steuerung es  merken, und automatisch in eine kleine Unterroutine verzweigen, den Code ausführen und anschließend ganz normal weitermachen. Ebenfalls beim Verlassen, also Logout soll ein weiterer Programmteil durchlaufen werden. Ziel ist es ein Array zu sichern und wiederherzustellen, also Daten zu behalten, obwohl ich in der Codesys Programmcode geändert habe und die Arrays beim Laden des Codes neu initialisiert werden. Da sollen dann die alten Werte vor der Programmänderung wieder rein. Ich weiß, es gibt den Bereich "retain persistant" der fällt aber leider dafür aus. lord2k3 hat mir einen sehr guten Ansatz geliefert, den ich weiter verfolgen werde. 

Trotzdem, danke für deinen Beitrag.

Chris


----------



## Termi (20 Mai 2015)

lord2k3 schrieb:


> Ich kann dir leider nicht sagen ob es einfacher (bzw. mit anderen Zielsystemen) funkioniert...
> ... chmod 755



Hallo,
nun ich habe folgende Ergebnisse :

Anhang anzeigen 28716


und 

Anhang anzeigen 28717


einmal über einen Router mit codesys eingeloggt, das andere mal nicht verbunden nur über einen Browserzugriff. Nur der Text ändert sich. Die Ausgänge am Baustein bleiben unverändert.
Wie erkenne ich nun den Login? Oder anders gefragt : wie codierst du die xCODESYS Variable ?

Chris


----------



## lord2k3 (20 Mai 2015)

Aloha,

leider kann ich deine Anhänge nicht sehen 

xCODESYS wird true wenn stResult > 1 und der ConfigTool aktiv ist:

```
iLEN := LEN(oconfigToolFB.stResultString);
IF iLEN > 1 AND bEnable = TRUE THEN
    xCODESYS := TRUE;
ELSE
    xCODESYS := FALSE;
END_IF
```

Ist auf jedenfall noch ausbaufähig


----------



## Roland Wagner (21 Mai 2015)

Hi,
ich vermute, die Applikation wird mit CODESYS V2.3 entwickelt. Dort gibt es in der Task configuration (unter Ressources) die Möglichkeit, so genannte System Events zu definieren. Allerdings nur, wenn der Gerätehersteller das auch integriert und unterstützt hat. Ich habe gerade mal nachgesehen: für die SoftSPS CODESYS SP PLCWinNT gibt allerdings auch keinen Event für das Login.
In CODESYS V3 gibt es dagegen auch einen Even für das Login.
Leider hilft Dir das so wohl auch nichts. Zumal ich auch gar nicht weiß, ob für das Gerät überhaupt Systemevents definiert sind.


----------



## Termi (21 Mai 2015)

Hallo,
ja ich arbeite (leider) noch mit der CoDeSys V2.3. Aber Wago steht ja mit dem e!COCKPIT und der aktuellen CoDESys in den Startlöchern. Da es Linux ist, was da auf dem Controller werkelt, klappt der Vorschlag von lord2k3. Lediglich kannte er bei mir nur den "localhost" und nicht 127.0.0.1. War aber kein Problem. Also Aufgabe gelöst. Danke allen, die geantwortet haben. 

Aber wo ich den Support von 3S im Thread habe: Ich hatte in einem anderen Thread bemängelt, dass sich die schwarzen Skalenlinien eines Histogrammes auf einem schwarzern Hintergrund vom Kontrast her schlecht machen. ;-) Anscheinend ist das mit normalen Mitteln nicht änderbar. Da 3S die CoDeSys 2.xy noch weiterentwickelt, wäre das zumindest für mich eine kleine Weiterentwicklung mit großem Nutzen, wenn es einstellbar wäre. 

Chris


----------



## Vertipper (7 Juni 2016)

Hallo,
ich habe die Variante von lord2k3 umgesetzt (mit Abfrage auf Webserver Port 80). Prinzipiell funktioniert das hervorragend - vielen Dank dafür.

Leider ergibt sich daraus ein ganz anderes Problem:
Die Abarbeitung des ConfigToolFB dauert etwa 300ms obwohl in der Anleitung steht, dass der Baustein keine Auswirkung auf die Laufzeit des Task hat.
Der Aufruf hat einen eigenen Task mit Prio 30 bekommen. Allerdings wird bei jedem Aufruf die KBus Kommunikation gestört, die Ausgänge werden kurz weggeschaltet.

In dieser Konstellation kann ich die Abfrage ja nicht verwenden.
Was habe ich hier falsch gemacht ?


----------



## lord2k3 (7 Juni 2016)

Vielleicht ist es mit einer aktuellen Firmware nicht mehr so wie beschrieben?!


----------



## Dennis2004 (9 Juni 2016)

Vertipper schrieb:


> Hallo,
> ich habe die Variante von lord2k3 umgesetzt (mit Abfrage auf Webserver Port 80). Prinzipiell funktioniert das hervorragend - vielen Dank dafür.
> 
> Leider ergibt sich daraus ein ganz anderes Problem:
> ...



Ensure that any task that writes/reads IO has priority in range 6..20. Or, go to PLC Configuration -> K-Bus -> Edit -> KBus settings and select "Asynchronuous"  Update mode.
Also you have option "Update unused I/Os" in Target Settings -> General that affects K-Bus operation.


----------



## Vertipper (9 Juni 2016)

The IO Task has a priority of 10.
If I start htop then I can see that all the System is very slow, so I think the ConfigToolLib starts a high priority system-function.

Is there any other way to detect a connection to the webvisu ?
We have a local Panel-PC with a WebVisu but there is also the possibility to connect a second visualisation from remote. This second Connection I want to detect.


----------



## Dennis2004 (10 Juni 2016)

As an alternative to calling configtool:
create a bash script in autorun folder, eg /etc/rc.d/codesys_socket_check. Give access rights (chmod 755).

```
#!/bin/sh
#
# Cyclically checks if CoDeSys connection is established

while true; do
    usleep 1000000
    echo `netstat -tn | grep 2455 | grep ESTABLISHED | grep -v 127.0.0.1` > /var/tmp/codesysconnection
done
```
Now you can manually start this script or reboot your PFC.
Sice that you will have a cyclically updated file "/var/tmp/codesysconnection" in ramfs (no flash memory overwrites will occur) and can read it's content or check size by SysLibFile.lib functions.

If you want to detect a WebVisu connection this method is not a good solution since WebVisu establishes temporary connections. A clue can be found in /var/log/lighttpd/access.log.
While WebVisu is runnig the contents of this file is like this:

```
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:04 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:04 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:04 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 19 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 11 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 11 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:05 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
10.0.1.73 10.0.1.75 - [10/Jun/2016:11:19:06 +0300] "POST /webvisu/webvisu.htm HTTP/1.1" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
127.0.0.1 10.0.1.75 - [10/Jun/2016:11:19:07 +0300] "POST /webvisu/webvisu.htm HTTP/1.0" 200 20 "-" "Mozilla/4.0 (Windows 7 6.1) Java/1.8.0_91"
```


----------



## Vertipper (11 Juni 2016)

Thank you very much for these hints. 
I will try it after my vacation.


----------

