Integer von SPS auf Slider 0-100% und Slider Bedienen - wie???

Hallo alle zusammen,

leider hat mich das Stundenlange Foren durchforsten auch nicht weiter gebracht, bin IP Smycon Neuling und möchte einen Slider mit einer ShortInt Variablen aus einer Simatic S7 SPS verheiraten - die wollen aber nicht so wie ich…


Situation:
Ich möchte einen Analogwert angezeigt bekommen und gleichzeitig jederzeit ändern können.

Ich lese hierzu eine Integer Variable (bei IPS ShortINT) aus einer Simatic Steuerung, diese soll einen Wert 0-100% darstellen. Gleichzeitig soll diese im WebFront über den Slider bedienbar sein

Mein Problem:

  1. der Wert 32767 im Integer des Datenbaustein müssten 100% entsprechen, IPS zeigt mir aber 127% :confused: - siehe Bilder

  2. das größere Problem: ich möchte im Slider den aktuellen Istwert darstellen, diesen aber auch bedienen können - und den Wert wieder in den Integer zurück zur SPS schreiben.
    Habe hierzu aber keinerleo Ahnung ob und wie das funktioniert…

Bin für jede Hilfe dankbar.
Der Frust ist schon groß genug…

Moin und Willkommen im IPS Forum :slight_smile:

So viele Fragen auf einmal :slight_smile:

Zum 2. Bild, da fehlt bei der Variable unter „Eigene Aktion“ das Actionscript mit diesem magischen Inhalt:

<?
if ($_IPS['SENDER'] == "WebFront") {
   SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}
?>

Beim Variablenprofil musst du ein eigenes anlegen, dazu steht hier etwas ganz unten:
Beispiel 2 — IP-Symcon :: Automatisierungssoftware
…nur darfst du nicht 0 - 100 eingeben, sondern das, was deine SPS da ausgibt, also z.B. 0 - 127 !? Und als Suffix muss das % hin, dann bekommst du den Slider.

Um den Int-Wert dann zurück zu IPS zu schreiben (habe keine Ahnung von SPS), das könntest du mir in das am Anfang genannte Skript packen, was, das kann dir sicher jemand anderes sagen.

Damit kannst du aber erst mal arbeiten :slight_smile:

Allgemein empfehle ich dir diese Seiten:
Einführung — IP-Symcon :: Automatisierungssoftware
IP-Symcon - Wie kann ich… 2.0
Befehlsreferenz — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

  1. Du willst bei 16Bit entsprechend SmallInt verwenden.
  2. Du willst ein eigenes Variablenprofil erstellen, welches Min = 0, Max = 32767 und als Suffix % hat.
  3. Du willst ein Aktionsskript erstellen, welches die ModBus_WriteRegisterSmallInt — IP-Symcon :: Automatisierungssoftware Funktion aufruft mit dem $_IPS[‚VALUE‘] als Wert :slight_smile:

Und warum das gut ist, steht in den generellen Beiträgen die Chris in der Doku verlinkt hat :slight_smile:

Falls du noch Fragen hast, immer her damit!

paresy

Dank euch beiden hatte ich mein erstes AHA und Erfolgserlebnis bei IPS… Dankeschön!

inzwischen ist einiges klarer, hätte ich die Doku genauer studiert hätte mir das mit den 16Bit Integer auffallen müssen - Asche über mein Haupt.

Folgendes Problem stellt sich mir aber noch, hoffe Ihr könnt mir das noch erklären.

  1. Mit dem von Chris geposteten Code ging es nicht, da er nicht auf die Variable schreiben konnte… Scheint auch Logisch. Habe dies dann wie von Paresi empfohlen geändert, nur eben als „S7_WriteSmallInt“ Befehl.
    Mit diesem Script bekomme ich dann diese Fehlermeldung.

Gebe ich die Variable vor in die ich schreiben möchte (wie im Bild vom Script aus kommentiert) Funktionierts…

Danke schonmal für eure Geduld :slight_smile:

Moin!

Mein Code-Schnipsel ist auch nur dazu da, im Werte aus dem WebFront in eine „normale“ Variable zu übertragen, nicht in eine „Instanz-Variable“, welche nur zum Lesen da ist :wink: Zum Beschreiben einer solchen „Instanz-Variable“ brauchst du deinen Code aus Zeile 7.
> Findest man auch heraus, in dem man mit der rechten Maustaste auf eine Instanz klickt und dann auf „Befehl testen“. Dort gibt es deine Auswahl möglicher Befehle.

Deine auskommentierte Zeile 7 schreibt den Wert aus dem WebFront auf dein SPS :slight_smile: Und damit wird es auch wieder in die IPS-Instanz-Variable übertragen (mit kleiner Verzögerung) - wäre also die passende Variante.

Ich hoffe, dass war so verständlich formuliert :slight_smile:

Grüße,
Chris

PS: Du solltest dich noch ein wenig mit IPS beschäftigen, Grundkenntnisse können nicht schaden :wink:

Du darfst auch nicht auf die Variable schreiben. Du musst diese Befehle auf die InstanzID ausführen.
Variablen — IP-Symcon :: Automatisierungssoftware
Erstes Kapitel ‚Status Variablen‘.
Nur auch mal blöd von einem nicht S7 Nutzer gefragt:
Warum braucht er überhaupt ein Aktions-Skript ?
Sollte die Standardaktion nicht genau diesen Zweck erfüllen ?

Michael
Edit: oh, zu langsam

So würde es gehen:


S7_WriteSmallInt(IPS_GetParent($_IPS['VARIABLE']), $_IPS['VALUE']);

paresy