Corentin Posted April 16 Share Posted April 16 Hello everyone, I'm trying to synchronize my pumping system flow rate to my motion system commanded speed. I am using a CK3E 8 axis, and my motors are defined in Coord[1] which uses a kinematic routine and lookahead (LHDistance = 250, SegMoveTime = 20). Because my pumping system has a lot of inertia, I need to anticipate a change in XY velocity about 2 seconds before segment execution and change my pump speed command accordingly. How can I achieve this ? Best regards, Quote Link to comment Share on other sites More sharing options...
DaveBarnett Posted April 16 Share Posted April 16 Maybe create a second motion program which mirrors the first, but is started 2 seconds earlier. That program should stay in sync, and could use a phantom motor from which you could derive your pump speed command. Quote Link to comment Share on other sites More sharing options...
Corentin Posted April 16 Author Share Posted April 16 Thanks for the reply. I need the time delay to be a parameter that can be changed by the operator while the Motion Program is running so this solution won't do it unfortunately. But I will keep it in mind, it might be useful for some testing. I was thinking about reading the XYZ coordinates or Motor[x].DesPos from lookahead segments. I found Coord[x].LHData but it is undocumented and I could not find anything obvious. Maybe using the Coord[x].LHStart address + n * BlockSize and somehow read values from the memory directly ? I'm sure there is a better way to do this but I can't figure it out at the moment. Quote Link to comment Share on other sites More sharing options...
MoMo Posted April 26 Share Posted April 26 I think DaveBarnett's method is actually a good method. You can ensure precise synchronization of the two coordinate systems through TimeBase and achieve precise delay through PLC0. First set Coord[x].DesTimeBase=0 in the two coordinate systems, and then run the running program. At this time, the motor will remain stationary. Then first restore the Coord[x].DesTimeBase of the first coordinate system to Sys.ServoPeriod, and start the countdown, and then restore the Coord[x].DesTimeBase of the second coordinate system. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.