I have a function block that implements the IAlarmNotifier interface, I have it doing most of what I want, but I cannot get the alarm message. The key part of the execute method is below. Any ideas why GetMessage always returns a null string. I am successfully getting the name of the AlarmGroup and the AlarmClass it is just this interface function that is tripping me up.
{attribute '''DOCU__COMMENT' := ' Executes the action.'}
( Executes the action.)
METHOD Execute
VAR_INPUT
( The currently processed alarm state transition. This will be
evaluated in order to determine, whether the action has to be
executed or not)
eCurrTransition : AlarmStateTransition;
( The alarm, for which the action has to be performed)
itfAlarm : IAlarm;
( An optional pointer to a structure variable containing
additional parameter)
pbyAdditionalData : POINTER TO BYTE;
END_VAR
VAR
cbpMessage: AlarmManager.CharBufferPtr; ( for holding the AlarmMessage )
END_VAR
Hi David,
The message text is empty because no visualization occurs in the project.
background:
Without visualization, the text lists are not transferred to the control, and therefore the text can not be determined.
This is as designed, to fix that you Need to add a visu to your project.
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have a function block that implements the IAlarmNotifier interface, I have it doing most of what I want, but I cannot get the alarm message. The key part of the execute method is below. Any ideas why GetMessage always returns a null string. I am successfully getting the name of the AlarmGroup and the AlarmClass it is just this interface function that is tripping me up.
{attribute '''DOCU__COMMENT' := ' Executes the action.'}
( Executes the action.)
METHOD Execute
VAR_INPUT
( The currently processed alarm state transition. This will be
evaluated in order to determine, whether the action has to be
executed or not)
eCurrTransition : AlarmStateTransition;
( The alarm, for which the action has to be performed)
itfAlarm : IAlarm;
( An optional pointer to a structure variable containing
additional parameter)
pbyAdditionalData : POINTER TO BYTE;
END_VAR
VAR
cbpMessage: AlarmManager.CharBufferPtr; ( for holding the AlarmMessage )
END_VAR
cbpMessage := itfAlarm.GetMessage(__SYSTEM.TYPE_CLASS.TYPE_STRING);
StrConcatA(cbpMessage,ADR(sLastAlarm[0]),USINT_TO_INT(SIZEOF(sLastAlarm)));
Hi David,
The message text is empty because no visualization occurs in the project.
background:
Without visualization, the text lists are not transferred to the control, and therefore the text can not be determined.
This is as designed, to fix that you Need to add a visu to your project.
Edwin
Thanks Edwin - that worked a treat. I would never have guessed that