Siemens LOGO 0BA7 an IPS

Hallo Leute,

es gibt bereits einen sehr langen Thread der sich mit der Anbindung der Siemens LOGO 0BA7 an IPS beschäftigt.

Da der Sachverhalt dort bereits ganz gut beschrieben ist, habe ich mir erlaubt einen neuen Thread zu eröffnen, in der nun weitere Möglichkeit der Nutzung diskutiert und beschrieben werden können.

Wenn man eine neue Siemens S7-Instanz im IPS auswählt, dann bekommt man ja im Auswahlmenü diverse Möglichkeiten angeboten. Mir ist es bisher nicht gelungen eine Dokumentation zu finden, die mir diese erklärt.
Ich selbst benutze bisher nur die „Ausgänge“, „Flags“ (Merker) und „Datenblock“ (Netzwerkeingänge).

Hier wurde zudem noch beschrieben wie man die analogen Eingänge der LOGO nutzen kann.

Ich würde mich freuen, wenn hier weitere Möglichkeiten von anderen Nutzern aufgezeigt werden…

Joachim

IPS mit LOGO.zip (659 KB)

…dann führe ich meinen Monolog mal weiter…:wink:

Für die Siemens S7 gibt es offenbar z.B. die Möglichkeit die Uhrzeit und das Datum auszulesenals auch diese zu setzen. Voraussetzung dazu sind sicher Kenntnisse der LOGO-internen Systemvariablen. Leider habe ich bisher kein Dokument gefunden, in dem diese beschrieben sind. Ich habe versucht nach dem Muster Daten aus der LOGO auszulesen, es kommen zwar Daten, diese ergeben aber m.E. nicht Datum und Uhrzeit.

Möglicherweise ist der Kern der LOGO anders? Hat jemand von Euch so einen Dokument der LOGO-Systemarchitektur?

Joachim

Damit ein Dialog zustande kommt:

Analogvorgabe IPS—SPS

Gruß
Cäsar

Analogvorgabe IPS–SPS.pdf (237 KB)

Hallo Cäsar,

ich habe mal versucht Deinem Beispiel folgend die Zeiten der Wochenschaltuhr auszulesen…
Ich habe die interessanten Daten in der LOGO-Soft-VM-Parameterzuordnung eingetragen. (Tage, Einschaltzeit, Ausschaltzeit). Wenn ich nun die Speicherstellen vom IPS aufrufe bekomme ich auch Daten, ich habe aber keinen blassen Schimmer wie diese „codiert“ sind.

Beispiele:
Für die Wochentage Mo, Di, Mi, Do, Fr wird als „Word“ 15877 ausgegeben…
Für die Einschaltzeit von 5:45 Uhr wird 1313 ausgegeben…
Für die Ausschaltzeit von 21:30 Uhr wird 8513 ausgegeben…

Ich habe es auf „Word“ eingestellt, weil es in Deinem Beispiel so ist, wenn ich andere „Einheiten“ einstelle, bekomme ich auch andere Ergebnisse, nichts davon konnte ich aber mit den in der LOGO-Soft eingegebenen Daten in Verbindung bringen…

Kannst Du mir sagen, was für eine Codierung hier vorliegt??

Joachim

…ich habe nun mal eine weitere Wochenzeit-Schaltuhr erstellt und die Ein- und Ausschaltzeiten gesetzt. Meine Abfragen vom IPS aus ergeben m.E. keinen wirklichen Sinn:

Nocken Zeit Aktiv VM-Parameter Word Integer Byte
Einschaltzeit 1 00:00 Ja 1 0 23039 0
Ausschaltzeit 1 23:59 Ja 2 89 5898239 0
Einschaltzeit 2 00:00 Nein 3 23039 1509949439 89
Ausschaltzeit 2 23:59 Nein 4 65535 -1 255
Einschaltzeit 3 01:00 Ja 5 65535 -256 255
Ausschaltzeit 3 02:00 Ja 6 65535 -65536 255

In der Logo-Soft wird der Datentyp als „Word“ angegeben, ich aber da diesen keine schlüssigen Ergebnisse liefert auch mal seitens IPS andere Datentypen (Word, Integer, Byte) probiert.

Ich glaube so kommt man nicht an die Daten heran…

Irgendjemand noch eine Idee?

Joachim

Hallo Joachim,
im Moment kann ich mit den Werten auch noch nichts anfangen. Ich werd’s nächste Woche auch mal ausprobieren.
Vielleicht kann ich dir dann mehr sagen.
Vom Betriebsstundenzähler in der Logo lassen sich die Zeiten in IPS darstellen. Das läuft schon seit Monaten bei mir.
Bei der Wochenschaltuhr hab ich’s bisher noch nicht versucht.

mfg
cäsar

…das wäre ja vielleicht mal etwas zum testen!
Magst Du mir mal ein paar Screenshoots posten?

Joachim

…kann ich machen, aber erst ab Montag.

mfg
caesar

Das wäre toll!

Joachim

Anleitung Betriebsstundenzähler von Logo nach IPS

mfg
cäsar

Betriebsstunden von SPS nach IPS.pdf (181 KB)

Hallo Cäsar,

vielen Dank erst einmal!
Hat es einen höheren Sinn, das Du die Adressen in der LOGO-Soft in solchen Schritten vergeben hast??

Joachim

Nein überhaupt nicht.
Da ich aber mehrere Logo’s am Laufen habe, mit z.Teil gleichen Programminhalten, hab ich überall die gleichen Adressen verwendet. Da kann’s schonmal zu Lücken innerhalb eines Programm’s kommen.
Somit kann ich aber einfach nur kopieren ohne jedesmal die neuen Adressen festzulegen.

mfg
cäsar

…ich hatte gerade die Befürchtung, das meine „1er“-Schrittweite - je nach Datentypen zu Überschneidungen geführt haben könnte, das also die Adresse eine feste Datenlänge hat und ein Wert der länger ist dann auch mehrere Adressen belegt…

Joachim

Hallo Joachim,
ich hab’s gerade auch mal versucht. Die Darstellung ist hexadezimal.

Nehmen wir mal die Ausschaltzeit von 21:30 Uhr mit dem Wert 8496(8513 ist falsch):

Zehner-Stunde = übertragener Wert div 4096 (Ganzzahlendivision) :
8496:4096= 2

Einer-Stunde = (übertragener Wert - Zehner-Stunde*4096) div 256
8496-(2x4096):256= 1

Zehner-Minute = (übertragener Wert – Zehner-Stunde4096 – Einer-Stunde256) div 16:
8496-8192-256:16= 3

Einer-Minute = übertragener Wert – Zehner-Stunde4096 – Einer-Stunde256 – Zehner-Minute*16
8496-8192-256-48= 0

mfg
cäsar

Oder man verknüpft mit Hex FFFF ;=)

8496 AND FFFF ergibt… 2130, guggst Du Bildchen.

Gruß Helmut

Hallo Cäsar und Helmut,

vielen Dank für die Tipps!!

Was denke ich ganz wichtig ist: Man muss tatsächlich für die Vergabe der Speicheradresse die Länge des Datentyps in der LOGO beachten!!
Jetzt wo ich aus den 1er-Schritten 10er-Schritte in der Parameter-VM-Zuordnung gemacht habe, kommen dann auch sinnvolle Daten heraus!

Ansonsten: Man kann auch

echo (dechex("8704"));

nutzen…:smiley:

So, jetzt muss ich erst einmal sehen wie man da noch weiter machen kann - schön wäre es ja, wenn man diese WErte auch setzen könnte! :wink:

Joachim

…so, noch etwas herausgefunden:

Bezüglich der Wochentage die eine Wochenschaltuhr aktiv ist, gilt folgende Codierung:
Abgebildet werden die Wochentage in einem Byte, wobei das 2-8 für den jeweiligen Wochentag stehen, an dem die Uhr aktiv ist.
Beispiele:
Mo-Fr aktiv -> 0111110 -> Ausgabe in IPS ist 62
Sa-So aktiv -> 1000001 -> Ausgabe in IPS ist 65
(Beachte das in der LOGO die Woche am Sonntag beginnt!)

Von der Idee her würde ich den IPS-Integer-Wert in eine Binär-Zahl umwandeln (PHP decbin), dann als String von „hinten“ Ziffer für Ziffer einlesen und dann die entsprechenden Wochentage abbilden…

Oder gibt es einen einfacheren Weg?

Joachim

Hallo Leute,

ich habe mir zwei kleine Funktionen erstellt, die die Umrechnung für mich machen:

//*************************************************************************************************************
// Wandelt das Wochentags-Byte der LOGO in einen lesbaren String um
function Wochentage($LOGO_Wert)
	{
	// Zuordnung der Bits zu den Wochentagen
	$ErgebnisArray = array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa");
	$Ergebnis = "";

	// Umwandlung in eine Binär-Zeichenfolge
	$BinKette = str_pad(decbin($LOGO_Wert), 7, "0", STR_PAD_LEFT);

	// die Bits 2-7 untersuchen (Mo-Sa)
	for($i=1; $i <= 7; $i++)
		{
	   $Status = substr ($BinKette, $i, 1);
		If ($Status == "1")
			{
			$Ergebnis = $Ergebnis.", ".$ErgebnisArray[$i];
			}
		}

	// das Bit 1 untersuchen (So)
	$Status = substr ($BinKette, 0, 1);
	If ($Status == "1")
		{
		$Ergebnis = $Ergebnis.", ".$ErgebnisArray[0];
		}

	// den Rückgabewert formatieren
	Return (substr($Ergebnis, 2, strLen($Ergebnis)-2));
   }

//*************************************************************************************************************
// Rechnet eine Zeitangabe der LOGO um
function Uhrzeit($LOGO_Wert)
	{
	Return (str_replace(".", ":",number_format((int)dechex($LOGO_Wert)/100, 2)));
   }

Sind sicherlich nicht perfekt, helfen vielleicht jemanden…
Beide wandeln den von der LOGO ausgelesenen Wert für IPS um (LOGO->IPS), wenn man diese Werte auch setzen kann (was ich noch nicht probiert habe!), dann könnte man sicherlich auch eine Funktion für die Richtung IPS->LOGO erstellen.

Joachim

Das sieht ja schonmal gut aus.
Kannst du mal ein komplettes Beispiel mit ausgelesenen Werten aus der Logo und Darstellung mit deinem Script in IPS geben?
Ein Setzen der Wochenzeitschaltuhr von IPS wäre super. Im Moment muss ich bei Änderung der Schaltzeiten in der Logo immer „online“ gehen.
Ich habe bewusst die Schaltuhr in der Logo ausgewählt(IPS hat ja auch eine tolle Schaltuhr).
Bei mir ist es zwingend notwendig, dass die Logo auch ohne IPS läuft. IPS dient bei mir in erster Linie zur Visualisierung.
Bei Ausfall von IPS werden Default-Werte in der Logo gesetzt. Somit bleibt genügend Zeit im Fehlerfall zu reagieren.

mfg
cäsar

Hallo Cäsar,

auch ich habe wohl einen sehr ähnlichen Ansatz. Die LOGOs soll stabil die „Grundfunktion“ erledigen, IPS bringt den Komfort oder auch hier und dort einen Automatismus.

Ich hoffe das ich es morgen schaffe Dir mal ein paar Screenshots und Skripte hier zu posten. Zur Visualisierung setze ich neben der „klassischen“ Darstellung im Webfront auch auf die Darstellung im Floorplan.

Ich werde die nächsten Tage mal schauen, ob man die Werte auch von IPS aus manipulieren kann, ich melde mich dann…

Nochmals Dank für die hilfreichen „Schupser“ in die richtige Richtung!

Joachim