Jerk parameter on acopos micro

Hello B&R team,

I am currently working on my motion test system using the same setup — the HMI, the ACOPOSmicro, but this time with a B&R servo motor, which I have been able to move successfully.

My question arises at the point where I try to add an Axis Feature in order to use jerk in my program. I am getting errors of the following type:

Error 2025-06-27 02:46:35,197000 -1067186166 B&R gAxis_1
Error during request of a broadcast data point within POWERLINK broadcast channel (McAcpBroadcast)
Motion EventId 100 2058 Online 29451 115964146443 Valid loggers@$motion@29450 Valid loggers@$motion@29451

I have made sure that the McProfGen runtime is enabled and that the cycle times of the main task match the POWERLINK cycle times on both the panel (PLC) and the ACOPOSmicro.

What would be the best way forward in order to use jerk in my program?

I am attaching screenshots showing how I currently have the project configured.

I would also like to emphasise that if I do not load the Axis Feature, I am able to move the axis without any issues using the program I developed .

Thank you very much for your valuable support, as always.:

unsigned long bur_heap_size = 0xFFFF;

// ← NUEVO: Variable para controlar la inicialización del perfil (SIN declarar aquí, se declara en la lista de variables)

void _INIT ProgramInit(void)
{
  // Set Axis Basic Parameters
  MpAxisBasic_0.Enable = 1;
  AxisParameters.Position = 0.0;
  AxisParameters.Velocity = 50.0;
  AxisParameters.Acceleration = 25.0;
  AxisParameters.Deceleration = 25.0;
  AxisParameters.Jerk = 500.0; // Jerk activado
  
  // Initialize sequence variables
  SequenceActive = 0;
  MoveTo38 = 1;
  MoveCommanded = 0;
  InPosition_Old = 0;
  
  // Initialize edge detection variables
  Sensor1_Old = 0;
  Sensor2_Old = 0;
  
  // Initialize profile flag
  InitProfileDone = 0;  // <-- AHORA USA LA VARIABLE DECLARADA EN LA LISTA
}

void _CYCLIC ProgramCyclic(void)
{
	// Set Up Variable Pointers
	MpAxisBasic_0.MpLink = &gAxis_1;
	MpAxisBasic_0.Parameters = &AxisParameters;
	
	```
	// Edge detection for momentary buttons
	Sensor1_Edge = Sensor1 && !Sensor1_Old;
	Sensor2_Edge = Sensor2 && !Sensor2_Old;
	Sensor1_Old = Sensor1;
	Sensor2_Old = Sensor2;
	
	// Edge detection for InPosition (rising edge)
	InPosition_Edge = MpAxisBasic_0.InPosition && !InPosition_Old;
	InPosition_Old = MpAxisBasic_0.InPosition;
	
	// Main Code
	switch (StateMotion) {
		case 0: // Power Axis On
			if (MpAxisBasic_0.Enable == 1 && MpAxisBasic_0.Error == 0 &&
			MpAxisBasic_0.CommandBusy == 0 && MpAxisBasic_0.Active == 1) {
				MpAxisBasic_0.Power = 1;
				StateMotion = 5;
			}
			break;
	        
		case 5: // Check For Power
			if (MpAxisBasic_0.PowerOn == 1) {
				StateMotion = 10;
			}
			break;
	        
		case 10: // Home Axis
			MpAxisBasic_0.Home = 1;
			StateMotion = 15;
			break;
	        
		case 15: // Check if Homed
			if (MpAxisBasic_0.IsHomed == 1) {
				StateMotion = 20;
				MpAxisBasic_0.Home = 0;
			}
			break;
	        
		case 20: // Initialize Jerk Profile (solo con Update)
			if (!InitProfileDone) {
				// Forzar la actualización de parámetros (suficiente para activar el ProfGen)
				MpAxisBasic_0.Update = 1;
				
				// Esperar a que la actualización se complete
				if (MpAxisBasic_0.UpdateDone) {
					MpAxisBasic_0.Update = 0;
					InitProfileDone = 1;
					StateMotion = 25; // Pasar al control de secuencia
				}
			} else {
				StateMotion = 25; // Si ya está inicializado, pasar directamente
			}
			break;
	        
		case 25: // Sequence Control
			// Sensor1: Start/Restart sequence
			if (Sensor1_Edge == 1) {
				SequenceActive = 1;
				MoveTo38 = 1;
				MoveCommanded = 0;
				MpAxisBasic_0.MoveAbsolute = 0;
			}
	        
			// Sensor2: Graceful stop
			if (Sensor2_Edge == 1) {
			SequenceActive = 0;
			}
	        
			// Launch new movement (only if sequence active)
			if (SequenceActive == 1) {
				if (MpAxisBasic_0.MoveActive == 0 &&
					MpAxisBasic_0.CommandBusy == 0 &&
				MoveCommanded == 0) {
	                
					if (MoveTo38 == 1) {
						AxisParameters.Position = 20.0;
					} else {
						AxisParameters.Position = 0.0;
					}
	                
					MpAxisBasic_0.MoveAbsolute = 1;
					MoveCommanded = 1;
				}
			}
	        
			// Movement completion
			if (InPosition_Edge == 1 && MoveCommanded == 1) {
				MpAxisBasic_0.MoveAbsolute = 0;
				MoveCommanded = 0;
	            
				if (SequenceActive == 1) {
					MoveTo38 = !MoveTo38;
				}
			}
			break;
	}
	
	// Call axis function block
	MpAxisBasic(&MpAxisBasic_0);
}

void _EXIT ProgramExit(void)
{
}

Hi @jesus_najera ,
this is typical error for example when you work on cnc prj and you do all your tests in simulation then you go to the customer, you transfer the prj
to the real machine and…POWERLINK broadcast channel issue…hehe
Broadcast transfer refers to cyclic communication from the PLC to stations in the POWERLINK network, when you are in simulation there is no powerlink communication
so you don’t need to configure that.
With real hw your case is reported below on red rectangle:

In the Help you find all information to create that at this link: Broadcast with POWERLINK

I would also like to emphasise that if I do not load the Axis Feature, I am able to move the axis without any issues using the program I developed .

This is because in that case you send a motion command (move absolute, move absolute, …) and few parameters (vel, acc,…) then the operating system installed inside
the ACOPOS will generate all setpoints (you don’t need cyclic communication for set positions).

>What would be the best way forward in order to use jerk in my program?

Well, actually is not too hard to find a value…if the value is too low your movement is super slow, so at the beginning disable the jerk and trace velocity, acc and jerk
so you have an idea which value you need (for the acceleration you have to create a new graph based on the formula dv/dt, same for Jerk da/dt)

===============================
Tuning note: "The Jerk limitation you set up in the hardware configuration is only used on the drive itself, but is not used when the cyclic position mode is used. "

Thanks so much for your new post!
Ciao
Valerio

Thanks Valerio, for your answer, I see that in the PLK port configuration of the screen, it has these Broadcast channel options, but I cannot modify them. Is this where I should make the changes? Thanks again…


yup light gray looks locked but as soon as you click on them you can enter your data.
Ciao
Valerio

Thank you very much for the solution, Valerio. The jerk works now. You’ve given me the solution. It was just a matter of configuring the PLK channel.

image
The first three move additive commands was done with jerk and the last three with no jerk.., life is more easy with your support, thnks again Valerio.