Den Zeiger einer Befehlstabelle innerhalb einer Befehlstabellenliste aktualisieren, um den Zugriff zum Online-Change sicher zu gestalten
Die Funktion sucht in der Liste der Befehlstabellen i_pstListofCmdTables von 1 bis i_diCmd nach dem Befehl i_udiNumberofCmdTables und aktualisiert in der Liste i_pstListofCmdTables den Zeiger der Befehlstabelle mit i_pstCmdTable.
Durch einen Online-Change kann sich die Position der Befehlstabelle im Speicher verschieben. Wenn der Zeiger auf diese Befehlstabelle nicht aktualisiert wird, werden falsche Befehle gelesen, sodass die Maschine unerwartetes Verhalten zeigt.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_pstListofCmdTables |
POINTER TO ST_CmdTable |
Die Liste der Befehlstabellen des Equipmentmoduls. |
i_udiNumberOfCmdTables |
UDINT |
Die Anzahl der Befehlstabellen in der Liste am Eingang i_pstListofCmdTables. |
i_diCmd |
DINT |
Der Befehl für die Befehlstabelle, die aktualisiert werden soll. |
i_pstCmdTable |
POINTER TO ST_Cmd |
Der Zeiger auf die Befehlstabelle. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Fehlermeldung. |
|
q_etDiagExt |
POU-spezifischer Ausgang des Diagnosegeräts. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Fehlermeldung |
q_etDiag |
q_etDiagExt |
Aufzählungswert |
Beschreibung |
---|---|---|---|
OK |
Ok |
0 |
OK |
InputParameterInvalid |
CmdRange |
35 |
Ein Befehl ist außerhalb des gültigen Bereichs. |
InputParameterInvalid |
NumberOfCmdTablesRange |
34 |
Die Anzahl der Befehlstabellen ist außerhalb des gültigen Bereichs. |
InputParameterInvalid |
PointerCmdTableInvalid |
36 |
Der Zeiger auf CmdTable ist ungültig. |
InputParameterInvalid |
PointerListOfCmdTablesInvalid |
33 |
Der Zeiger auf ListOfCmdTables ist ungültig. |
Aufzählungsname: |
CmdRange |
Aufzählungswert: |
35 |
Beschreibung: |
Ein Befehl ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_diCmd wurde ein Wert <= 0 angelegt. |
Stellen Sie sicher, dass am Eingang i_diCmd ein positiver Wert entsprechend dem Befehl der zu aktualisierenden Tabelle übergeben wird. |
Aufzählungsname: |
NumberOfCmdTablesRange |
Aufzählungswert: |
34 |
Beschreibung: |
Die Anzahl der Befehlstabellen ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_udiNumberOfCmdTables wurde ein Wert <= 0 angelegt. |
Stellen Sie sicher, dass am Eingang i_udiNumberOfCmdTables ein positiver Wert entsprechend der Anzahl der Befehlstabellen in der Liste am Eingang i_pstListOfCmdTables übergeben wird. |
Aufzählungsname: |
Ok |
Aufzählungswert: |
0 |
Beschreibung: |
OK |
Der Zeiger wurde erfolgreich aktualisiert.
Aufzählungsname: |
PointerCmdTableInvalid |
Aufzählungswert: |
36 |
Beschreibung: |
Der Zeiger auf CmdTable ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_pstCmdTable wurde ein nicht initialisierter Zeiger (0) übergeben. |
Stellen Sie sicher, dass am Eingang i_pstCmdTable ein Wert größer 0 übergeben wird, der der Adresse der Liste von Befehlstabellen entspricht, die aktualisiert werden soll. |
Aufzählungsname: |
PointerListOfCmdTablesInvalid |
Aufzählungswert: |
33 |
Beschreibung: |
Der Zeiger auf ListOfCmdTables ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_pstListofCMDTables wurde ein nicht initialisierter Zeiger (0) übergeben. |
Stellen Sie sicher, dass am Eingang i_pstListofCMDTables ein Wert größer 0 übergeben wird, der der Adresse der Liste von Befehlstabellen entspricht, die aktualisiert werden soll. |