So we will need 7 PLCs. Now I have to figure how to get the encoder signal to 7 PLCs!
In the video, we generated the desired target position for each louver in the master PLC, and used PEERLINK to publish to to the slave controllers (about 10Hz rate). Each axis then used a simple loop equation to drive a velocity to the axis.
I watch your video. Can you post the programs?
The slave program was very simple.
We generate AxisX's error from PL[AxisXPosition]:S (target position) and $AxisX.CurrentPosition (the axis' current position)
We generate the axis' velocity from the equation Velocity = Sqrt(Error) * Gain
The key to making it work well is to set the axis accel/decel parameters as high as the stepper will allow, and then increasing the Gain term to the highest value before the axis starts ringing. View the target and axis current position in a trend view, and it becomes pretty obvious when the loop starts to get unstable.
This approach is a simple follower. There are other ways that could be used to tighten the control if this doesn't work well, but this is easy and a good starting point.