Text in Visu dynamisch mit Variablenverweis zur Textliste darstellen

bbm1995

Level-2
Beiträge
48
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

Ich nutze folgenden Code innerhalb der Visualisierung in der Eigenschaft "Textvariablen" -> "Textvariable" und "Tooltipvariable" in e!COCKPIT.
Damit übergebe ich in der Steuerung eine andere Textliste und ID als Variable an einen Frame, da die Eigenschaft "Dynamische Texte" keine Variablen annimmt.
Code:
// Visu Schnittstelleneditor:
VAR_INPUT
    sPanelTextList: STRING;
    sPanelTextID: STRING;
END_VAR

// Implementation in der Visu Eigenschaft "Textvariable" und "Tooltipvariable":
VisuElems.cmpDynamictext.DynamicTextGetText(ADR(sPanelTextList), ADR(sPanelTextID))^
1679904082530.png

Framekonfiguration:
1679904597146.png
Leider funktioniert das nicht mehr mit CODESYS 3.5.19.0 (alles auf neueste Version gesetzt), ich erhalte folgende Fehlermeldung bei der Codeerzeugung:
Code:
...
                 Code erzeugen...
[FATALER FEHLER] Internal error in _IStatement (maybe try to simplify expressions): __PROPERTYINFO(VisuElems.CmpDynamicText.DynamicTextGetText(pstTextList := ADR(sPanelTextList), pstTextIndex := ADR(sPanelTextID))^, instvar_2); : System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.    bei ..(_IOperatorExpression )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_IOperatorExpression )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_IExpressionStatement )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )
[FEHLER]         frmMaster: Internal error in _IStatement (maybe try to simplify expressions): {attribute 'message_guid' := 'f8a62334-0fb8-4c02-97b6-8c847d3ba0ac'} __INSTANCEPOINTER^._xUpdateCalled := TRUE; __INSTANCEPOINTER^._visufbelempolygon[0].m_pStaticTextProperties := ADR(GEN_MU_Instance); __INSTANCEPOINTER^.instvar_0 := CONCAT(STR1 := '          ', STR2 := VisuElems.CmpDynamicText.DynamicTextGetText(pstTextList := ADR(__INSTANCEPOINTER^.sPanelTextList), pstTextIndex := ADR(__INSTANCEPOINTER^.sPanelTextID))^); __INSTANCEPOINTER^.instvar_1.pVarAdr := ADR(__INSTANCEPOINTER^.instvar_0); __INSTANCEPOINTER^._visufbelempolygon[0].m_pTextChanges^.pVarText := ADR(__INSTANCEPOINTER^.instvar_1); _visu_temporary_booldummy_0 := FALSE; {nobp_flag}_visu_temporary_pointeroffset_0 := INT#0; {nobp_flag}__INSTANCEPOINTER^._visufbelempolygon[0].m_pTextChanges^.diBitOffsetText := DINT#-1; __INSTANCEPOINTER^.instvar_1.pVarAdr := (__INSTANCEPOINTER^.instvar_1.pVarAdr + UINT_TO_DWORD(INT_TO_UINT(_visu_temporary_pointeroffset_0))); {} __PROPERTYINFO(VisuElems.CmpDynamicText.DynamicTextGetText(pstTextList := ADR(sPanelTextList), pstTextIndex := ADR(sPanelTextID))^, instvar_2); _visufbelempolygon[0].m_pTextChanges^.pVarTooltip := ADR(instvar_2); {warning enable C0355} _visu_temporary_booldummy_0 := __BITOFFSET(VisuElems.CmpDynamicText.DynamicTextGetText(pstTextList := ADR(sPanelTextList), pstTextIndex := ADR(sPanelTextID))^, _visu_temporary_pointeroffset_0, _visufbelempolygon[0].m_pTextChanges^.diBitOffsetTooltip); instvar_2.pVarAdr := (instvar_2.pVarAdr + UINT_TO_DWORD(INT_TO_UINT(_visu_temporary_pointeroffset_0))); _visufbelempolygon[0].m_pTextChanges^.dwVarTextType := INT_TO_DWORD(VisuElems.Visu_FctGetVisuType(lmType := USINT_TO_DWORD(USINT#16))); _visufbelempolygon[0].m_pTextChanges^.dwVarTooltipType := INT_TO_DWORD(VisuElems.Visu_FctGetVisuType(lmType := USINT_TO_DWORD(USINT#16))); _visufbelempolygon[0].m_pTextChanges^.wTextVarValid := WORD#3; {nobp_flag}; _visufbelempolygon[0].m_pDynamicText^.stTextList := 'txtGenFormat'; _visufbelempolygon[0].m_pDynamicText^.stTextIndex := 'str'; _visufbelempolygon[0].m_pDynamicText^.stTooltipIndex := 'str'; _visufbelempolygon[0].m_pDynamicText^.wValidDynamicText := WORD#7; {nobp_flag}; {nobp_flag}; _visufbelemsimple[0].m_pStaticTextProperties := ADR(GEN_MU_Instance_2); _visufbelemsimple[0].m_pColorVariables^.ColorVars.NormalColors.dwFrameColor := colSkyguide.darkblue; _visufbelemsimple[0].m_pColorVariables^.ColorVars.NormalColors.dwFillColor := colSkyguide.darkblue; _visufbelemsimple[0].m_pColorVariables^.wValidColors := WORD#3; {nobp_flag}; _visufbframe[0].m_pStaticTextProperties := ADR(GEN_MU_Instance_4); _visufbframe[0].GetVisuStartEndIndex(pClientData := _pCurrentClientData, iStartIndex => _iFrameVisuStartIndex, iEndIndex => _iFrameVisuEndIndex); FOR _iFrameVisuIndex := _iFrameVisuStartIndex TO _iFrameVisuEndIndex BY INT#1 DO     CASE _iFrameVisuIndex OF         INT#0: ;     END_CASE  END_FOR; {nobp_flag}; _visufbframe[1].m_pStaticTextProperties := ADR(GEN_MU_Instance_4); _visufbframe[1].GetVisuStartEndIndex(pClientData := _pCurrentClientData, iStartIndex => _iFrameVisuStartIndex, iEndIndex => _iFrameVisuEndIndex); FOR _iFrameVisuIndex := _iFrameVisuStartIndex TO _iFrameVisuEndIndex BY INT#1 DO     CASE _iFrameVisuIndex OF         INT#0: ;     END_CASE  END_FOR; {nobp_flag}; _visufbframe[2].m_pStaticTextProperties := ADR(GEN_MU_Instance_4); _visufbframe[2].GetVisuStartEndIndex(pClientData := _pCurrentClientData, iStartIndex => _iFrameVisuStartIndex, iEndIndex => _iFrameVisuEndIndex); FOR _iFrameVisuIndex := _iFrameVisuStartIndex TO _iFrameVisuEndIndex BY INT#1 DO     CASE _iFrameVisuIndex OF         INT#0: ;     END_CASE  END_FOR; {nobp_flag}; _visufbframe[3].m_pStaticTextProperties := ADR(GEN_MU_Instance_4); _visufbframe[3].GetVisuStartEndIndex(pClientData := _pCurrentClientData, iStartIndex => _iFrameVisuStartIndex, iEndIndex => _iFrameVisuEndIndex); FOR _iFrameVisuIndex := _iFrameVisuStartIndex TO _iFrameVisuEndIndex BY INT#1 DO     CASE _iFrameVisuIndex OF         INT#0: ;     END_CASE  END_FOR; GenInp.sPanelTextList REF= sPanelTextList; GenInp.sPanelTextID REF= sPanelTextID; _visuClientObjectMgr.Update(); : System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )
[FEHLER]         frmMaster(Element ID 35): Internal error in _IStatement (maybe try to simplify expressions): __PROPERTYINFO(VisuElems.CmpDynamicText.DynamicTextGetText(pstTextList := ADR(sPanelTextList), pstTextIndex := ADR(sPanelTextID))^, instvar_2); : System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.    bei ..(_IOperatorExpression )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_IOperatorExpression )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_IExpressionStatement )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )
[FEHLER]         Internal error:System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.Exception: Internal error in POU: UPDATE ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ICompiledPOU )    bei ..(_ICompiledPOU )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU )    bei ..()    --- Ende der internen Ausnahmestapelüberwachung ---    --- Ende der internen Ausnahmestapelüberwachung ---    bei _3S.CoDeSys.Compiler35190.CompilerPhases.CompilerPhase5_Codegenerator.(IList`1 )    bei _3S.CoDeSys.Compiler35190.CompilerPhases.CompilerPhase5_Codegenerator.(IScope5 , IList`1 )    bei _3S.CoDeSys.Compiler35190.CompilerPhases.CompilerPhase5_Codegenerator.(ICodegenerator )    bei ..()    bei ..() ---> (Interne Ausnahme #0) System.Exception: Internal error in POU: UPDATE ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ISequenceStatement )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.CodeOptimizer_pass1.(_ICompiledPOU )    bei ..(_ICompiledPOU )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU , _ISignature )    bei _3S.CoDeSys.Compiler35190.Phase5_Codegeneration.Codegeneration.(_ICompiledPOU )    bei ..()    --- Ende der internen Ausnahmestapelüberwachung ---<---
                 Übersetzung abgeschlossen -- 1 Fehler, 0 Warnungen : Kein Download möglich

Kennt jemand eine alternative Möglichkeit, die Textliste und ID (oder den Inhalt) als Variable zu übergeben, ohne dafür extra eine POU zu erstellen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider erhalte ich den selben Fehler bei der Codeübersetzung.
Ich habe mich auch mit der neuen "Frame-Konfiguration" befasst (ist nicht so gut dokumentiert) und verschiedene Möglichkeiten ausprobiert ohne Erfolg:
1680001128585.png
1680000761197.png
- Variablen direkt eingetragen in die Eigenschaft "Dynamische Texte"
- Editortyp von "Text ID" geändert zwischen "Variable" und "Text"
1680001011669.png
- VisuElems. ... .DynamicTextGet(Default)Text verwendet mit und ohne ADR()
 
Zurück
Oben