Siemens Logo8

Hallo,

Ich steuere meine Rollladen mit einer Logo 8. Nun versuche ich die Visualisierung in IPS umzusetzen.
So wie ich das jetzt verstanden habe kann ich dies nur über in der Logo anzulegende Netzwerkeingänge steuern.
Da dies wohl nur mit dem Befehl „S7_WriteBit“ funktioniert stellt sich mir die Frage ob ich nun für jeden Rollladen jeweils 2 Instanzen (auf/ab) benötige oder ob es möglich ist mit nur einer Instanz verschiedene Adressen anzusprechen.

Danke im voraus.

Gruß, E.D.

Ich weiß nicht wie du Rolladen in der Logo 8 ansteuerst, aber ich würde mir einen Merker erstellen mit z.B. 0=auf, 1=ab, 2=stop und die Logik in der Logo lassen (z.B. Verriegelung) Und dann kannst du in IPS ein schönes Profil an deine Integer setzen, womit die Steuerung auch gut aussieht.

paresy

Hallo,

Danke für die Antwort. Leider kann ich nicht ganz folgen. Es geht mir um den Zugriff auf die Logo, z.B. auf den in der Logo-Programmierung angelegten Netzwerkeingang Ni1. Dieser hat die Adresse V0.0. Nun kann ich in IP-Symcon eine Instanz für die Logo anlegen (Hier Instanz 54427). Als Area-Address wähle ich 0 und als Adresse ebenfalls 0 (weil V0.0). Somit kann ich in einem script über „S7_WriteBit(54427 /[Logo 1 V0.0]/, true);“ den Netzwereingang Ni1 steuern.
Geht das auch anders, oder muss ich nun für jeden Eingang eine weiter Instanz anlegen?

Gruß,

E.D

Ja, du brauchst pro Adresse eine eigene Instanz. Aber bei der Rolladen Steuerung würde ich nicht Bits nehmen, sondern ein Byte/Word.

paresy

Ok, Danke.
D.h ich brauche für 20 Rollläden 20 Instanzen? Gilt das nur für die Logo? Weil ich sehe hier noch einige Beiträge bei denen z.B. alle Ausgänge der Logo in einer Instanz abgebildet sind, oder funktionierte das vielleicht nur in der Symcon-Version < 4 ?
Welchen Vorteil bringt denn die Benutzung von S7_WriteByte gegenüber S7_WriteBit ($Wert )

Gruß,

E.D

Wenn du Bit verwendest, brauchst du bei 20 Rollos insgesamt 40 Instanzen, oder? :slight_smile:

Aber du willst auch 20 Instanzen haben, da jedes Rollo in der Visu als Gerät dargestellt werden soll.

paresy

Ja, klar, mein Fehler, brauche natürlich 40 Instanzen. Wieso brauche ich mit Byte nur 20? Man kann doch mit write_byte auch nur die Instanz übergeben und nicht die Adresse, oder fehlt mir ein Byte in meinem begrenzten Schädel?

In einem Byte kannst du die 3 Zustände (siehe oben) abbilden und dann per Logik auf der Logo deine Rolladen ansteuern.

paresy

Ok, ich kann also jetzt mit dem Befehl S7_WriteByte ( 54427, integer $Wert ) 0 1 oder 2an die Instanz 54427 übergeben. Ich kann aber trotzdem an den Netzwerkeingang I1 nur true oder false an Adresse V0.0 weitergeben, den Merker in der Logo kann ich ja nicht direkt ansprechen. Hab ich da irgendwo nen Denkfehler? Sorry, habe erst gestern mit IP-Symcon begonnen.

Gruß,

E.D

Hallo eusebio,

Die LOGO hat für Ein-/Ausgänge/Merker feste Speicheradressen im VM-Speicher oberhalb des Benutzer-Bereich des 850sten Bytes reserviert.

Es gibt noch einiges mehr: z.B:

I1 1024.0 Q1 1064.0
I2 1024.1 Q2 1064.1
I3 1024.2 Q3 1064.2
I4 1024.3 Q4 1064.3
I5 1024.4 Q5 1064.4
I6 1024.5 Q6 1064.5
I7 1024.6 Q7 1064.6
I8 1024.7 Q8 1064.7

M1 1104.0 AM1 1118
M2 1104.1 AM2 1120
M3 1104.2 AM3 1122
M4 1104.3 AM4 1124
M5 1104.4 AM5 1126
M6 1104.5 AM6 1128
M7 1104.6 AM7 1130
M8 1104.7 AM8 1132

Wenn du also den Eingang I1 abfragen möchtest, dann richtest du eine Instanz mit Bit 1024.0 ein und schon hast du den Zustand.

mfg
cäsar

Hallo
Sorry ich muss mich jetzt auch noch mal an das Thema anhängen.
Habe ich das richtig verstanden, dass ich Merker aus der Logo nur Bitweise lesen kann oder geht das auch mit Byte?
Ich habe in der Logo einen Zufallsgenerator laufen und möchte jetzt die Merker bzw. Rolladen Zustände in IPS visuallisieren.
Hab in IPS 4.0 Variablen angelegt für Rollo 1 mit dem Profil 0=Stop, 1=schliessen (Merker1), 2=öffnen (Merker2).
Rollo 2 hat dann das Profil 0=Stop, 4=schliessen (Merker3) und 8=öffnen (Merker4) usw. Jetzt soll aus der Siemens Instanz die Merker gelesen werden und dementsprechend die Variablen in IPS gesetzt werden. Geht das so überhaupt?
Das Problem ist wenn beide Merker z.B. 1 und 3 gesetzt werden in der Siemens Variable 5 gelesen wird und in den IPS Variablen nichts passiert weil natürlich auf 1 und 4 abgefragt ist.

Ich bin leider auch noch Neuling in IPS von daher schon mal Danke im vorraus für eure Hilfe
Gruß

Klar kannst du Bytes lesen. Aber die Variableprofile gehen nur mit konkreten Werten. Du kannst du keine Bitmasken nutzen. Somit musst du deine Zustände für das Rollo auch explizit definieren, sodass der Fall 1+3 = 5 eben nicht auftritt.

paresy

Ok. Dann darf in einem Byte immer nur ein Merker gesetzt sein für die Profile. Gibt es eine Möglichkeit ohne Variablenprofil innerhalb eines Bytes mehrere Merker Zustände gleichzeitig zu lesen oder muss in dem Fall dann über mehrere Bit Instanzen jeder Merker einzeln gelesen werden?

Warum ließt du nicht die Ausgänge direkt, z,B. so:

// Q1
if (1 == ($_IPS[‚VALUE‘] & 1))
{
SetValue(59785, true);
}elseif (0 == ($_IPS[‚VALUE‘] & 1))
{
SetValue(59785, false);
}

// Q2
if (2 == ($_IPS[‚VALUE‘] & 2))
{
SetValue(45279, true);
}elseif (0 == ($_IPS[‚VALUE‘] & 2))
{
SetValue(45279, false);
}

// Q3
if (4 == ($_IPS[‚VALUE‘] & 4))
{
SetValue(15615, true);
}elseif (0 == ($_IPS[‚VALUE‘] & 4))
{
SetValue(15615, false);
}

// Q4
if (8 == ($_IPS[‚VALUE‘] & 8))
{
SetValue(48436, true);
}elseif (0 == ($_IPS[‚VALUE‘] & 8))
{
SetValue(48436, false);
}

Dann kannst du die Zustände direkt anzeigen.

Das hatte ich auch mal versucht, allerdings war das Ergebnis leider negativ. Die Code Zeilen waren auch ein bißchen anders vielleicht lag es daran oder ich hatte noch einen anderen Fehler eingebaut. Aber jetzt funktioniert es:D. Super Danke an alle.:slight_smile: