Könnts vielleicht sein, dass die CoDeSys IDE trotz Fehler keine Fehlermeldung bringt, aber die HMI schon ?
Was für einen Wert hat denn TableY zum Zeitpunkt des Fehlers ?
Wird die Variable bei der Deklaration mit einem sinnvollen Wert initialisiert ? Wenn nicht, ist der Wert vermutlich noch NULL und dein Array fängt eventuell erst bei 1 an.
Zum Testen kannst du auch TableY mal auf einen festen, gültigen Wert setzen.
Gruss
Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
genauso wie du sagst ist es. TableY hat den Wert 0, und das Array fängt bei 1 an.
Ich kann die Variable TableY aber nicht mit einem festen Wert initialisieren, da diese Variable (abhängig von der in der Visualisierungstabelle angeklickten Zeile) einen festen Wert hat und als VAR PERSISTENT RETAIN deklariert ist.
Mit anderen Worten:
Ich habe eine Visualisierungstabelle mit verschiedenen Handynummern in einer Visualisierungstabelle, und die angewählte Zeile muss gespeichert bleiben, bis sie vom Anwender geändert wird. Würde ich TableY initialisieren, dann wäre doch bei jedem Neustart die Einstellung weg.
Ich hoffe du verstehst was ich meine.
Grüsse,
Dieter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Wenn du eine Retain Variable bei der Deklaration vorbelegst, dann wird diese beim Einlesen der gespeicherten Zustände wieder überschrieben.
Wenn also die Variablen beim letzten beenden der SPS korrekt gespeichert wurden, dann gibts keinen Unterschied in der Funktion zum jetzigen Stand. Sollten die Retain Variablen nicht korrekt gespeichert worden sein, oder beim 1. Programmstart überhaupt, dann hat deine Variable wenigstens einen sinnvollen Wert.
Gruss
Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Aber wenn ich einen Initialisierungswert (Wert 1) angebe, dann startet das HMI zwar korrekt ohne Fehlermeldung, aber die Variable behält den Wert 1 und wird nicht mit dem in der SPS abgespeicherten Wert überschrieben.
Muss ich das noch irgendwo in den Einstellungen ändern ?
Gruß,
Dieter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
genau so sieht die Deklaration aus, bis auf dass PERSISTENT und RETAIN vertauscht sind, aber das hat ja doch keine Bedeutung, oder ?!
Komisch ist, das bei der Visualisierung in der CoDeSys IDE alles einwandfrei funktioniert, selbst nach Stromausfall oder Projektbereinigung bleibt TableY erhalten, nur mit dem HMI gehts nicht.
Ich benutze den WAGO 758-870-000-011 (EC1DPM).
Vielleicht hast du ja noch eine Idee.
Gruß,
Dieter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
arbeitest du mit 2 projekten/controllern und netzwerkvariablen?
wenn ja, kannst du den properties haken bei "request on bootup" versuchen...
ansonsten:
hab ich richtig verstanden: wenn du dich nach neustart wieder einloggst, siehst du die gespeicherten werte wie gewünscht im debug fenster, allerdings nicht auf dem HMI?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
beim Aufruf des HMI bekomme ich immer die Meldung:
FEHLER: Falscher Index für Array! Aufrufhierarchie aufrufen!
Ich komme hier alleine nicht weiter. Wie bekomme ich raus um welches Array es sich handelt ?
Grüsse,
Dieter
Moin
Weitere Hilfe des Compilers gibts da leider nicht.
In einer Kopie des Projektes nacheinander alle Elemente löschen, die eine Array-Variable enthalten, bis der Fehler weg ist.
Vermutlich hast du irgendwo etwas in der Art: ArrayVariable[IndexVariable]
stehen, und die Index-Variable enthält einen ungültigen Wert.
Gruss
Erik
Hallo,
ich hab den Übeltäter gefunden:
( Get SMS-Number )
SmsNumber:=SmsAddress[TableY].ResponsiblePhone;
TableY ist die Variable für die Zeilenposition in einer Visualisierungstabelle.
In der Codesys-Entwicklungsumgebung funktioniert dies einwandfrei, nur im HMI nicht.
Was mache ich falsch ?
Gruß,
Dieter
Mahlzeit
Könnts vielleicht sein, dass die CoDeSys IDE trotz Fehler keine Fehlermeldung bringt, aber die HMI schon ?
Was für einen Wert hat denn TableY zum Zeitpunkt des Fehlers ?
Wird die Variable bei der Deklaration mit einem sinnvollen Wert initialisiert ? Wenn nicht, ist der Wert vermutlich noch NULL und dein Array fängt eventuell erst bei 1 an.
Zum Testen kannst du auch TableY mal auf einen festen, gültigen Wert setzen.
Gruss
Erik
Hallo Erik,
genauso wie du sagst ist es. TableY hat den Wert 0, und das Array fängt bei 1 an.
Ich kann die Variable TableY aber nicht mit einem festen Wert initialisieren, da diese Variable (abhängig von der in der Visualisierungstabelle angeklickten Zeile) einen festen Wert hat und als VAR PERSISTENT RETAIN deklariert ist.
Mit anderen Worten:
Ich habe eine Visualisierungstabelle mit verschiedenen Handynummern in einer Visualisierungstabelle, und die angewählte Zeile muss gespeichert bleiben, bis sie vom Anwender geändert wird. Würde ich TableY initialisieren, dann wäre doch bei jedem Neustart die Einstellung weg.
Ich hoffe du verstehst was ich meine.
Grüsse,
Dieter
Guten morgen
Wenn du eine Retain Variable bei der Deklaration vorbelegst, dann wird diese beim Einlesen der gespeicherten Zustände wieder überschrieben.
Wenn also die Variablen beim letzten beenden der SPS korrekt gespeichert wurden, dann gibts keinen Unterschied in der Funktion zum jetzigen Stand. Sollten die Retain Variablen nicht korrekt gespeichert worden sein, oder beim 1. Programmstart überhaupt, dann hat deine Variable wenigstens einen sinnvollen Wert.
Gruss
Erik
Nabend,
so hatte ich mir das ja auch gedacht.
Aber wenn ich einen Initialisierungswert (Wert 1) angebe, dann startet das HMI zwar korrekt ohne Fehlermeldung, aber die Variable behält den Wert 1 und wird nicht mit dem in der SPS abgespeicherten Wert überschrieben.
Muss ich das noch irgendwo in den Einstellungen ändern ?
Gruß,
Dieter
Moin
Du initialisierst die Variable direkt bei Deklaration ?
Also so:
VAR PERSISTENT RETAIN
TableY : INT := 1;
END_VAR
Dann muss das auch funktionieren. Sonst musst du dich an deinen SPS-Hersteller wenden. Was ists denn für eine Steuerung ?
Gruss
Erik
Nabend,
genau so sieht die Deklaration aus, bis auf dass PERSISTENT und RETAIN vertauscht sind, aber das hat ja doch keine Bedeutung, oder ?!
Komisch ist, das bei der Visualisierung in der CoDeSys IDE alles einwandfrei funktioniert, selbst nach Stromausfall oder Projektbereinigung bleibt TableY erhalten, nur mit dem HMI gehts nicht.
Ich benutze den WAGO 758-870-000-011 (EC1DPM).
Vielleicht hast du ja noch eine Idee.
Gruß,
Dieter
moin
arbeitest du mit 2 projekten/controllern und netzwerkvariablen?
wenn ja, kannst du den properties haken bei "request on bootup" versuchen...
ansonsten:
hab ich richtig verstanden: wenn du dich nach neustart wieder einloggst, siehst du die gespeicherten werte wie gewünscht im debug fenster, allerdings nicht auf dem HMI?
hallo,
volle Kraft zurück, wie blind kann man sein.
HMI war falsch eingestellt (unter Icon-Eigenschaften): "/simulation"
Nach Start des HMI sieht man leider nicht, in welchem Modus gestartet wurde.
Jetzt geht natürlich alles, danke nochmal, hab trotzdem was gelernt .
Gruß,
Dieter