Calling UaSrv_FireEvent makes the PLC in service mode

Hi Everyone.

I am trying to execute the UaSrv_FireEvent Function Block but i am calling it within the other function block.

If i execute the UaSrv_FireEvent function block in a program, it works fine but goes to service mode (EXCEPTION Page Fault) when called from inside.

I have also added the AdvIecCheck library to back trace, but it leads me no where.

Any suggestions that can make this work?

Thanks

Hello,

Do you call the FUB properly until the Busy is reset to FALSE? Are entries in the Connectivity logger different if you call the FUB in a task or inside another FUB? Could you share implementation details?

Hi Pavel,

Here’s the code implementation inside the Function Block -

	4:	UaSrv_FireEvent_0(
			Execute := TRUE, 
			EventType := EventType, 
			EventFieldCount := EventFieldCount,                 
			EventFields := EventFieldsAdr);
		IF NOT (UaSrv_FireEvent_0.Busy) THEN
			UaSrv_FireEvent_0.Execute := FALSE;
			IF (UaSrv_FireEvent_0.Done) THEN
				UaSrv_FireEvent_0(
					Execute := FALSE,
					EventFields := EventFieldsAdr);
					EventFlag := FALSE;
			//	Step := 2;
			END_IF
	END_IF

I need to check the connectivity in the both the scenarios

Are you sure the state 4 is executed until the UaSrv_FireEvent_0 finishes its execution?

Yes, i have checked it. The function Block’s BUSY is active and DONE is False and it goes to service.

The attached image is just before it goes to service mode

Hello,

I’ve used the OPC UA Project from the Start Page and its SrvFireEvent task, which works as expected.

I’ve wrapped the task into a FUB and must confirm that the ArSim goes to the SERV mode as well.

Please contact the local B&R support.

Used versions:

Thank you for the replies and the efforts.

I will reach out to local B&R Office,.

But is there any workaround that you can suggest for generating the OPC UA events inside the function blocks?