I am using LabVIEW to communicate with a position controller, Maxon EPOS2, connected through USB. I am using a method of position control called interpolated postion method where I must input to the controller:
1) Position of point
2) Velocity of point
3) Time before next point
The limitations of my problem are that the controller only takes one point of one cluster of data points at a time (one point each of position, velocity, and time step). The other limitation is that the buffer of the controller can only hold 64 of these clusters at a time.
I am trying to use as small as time step as possible for my application, but I am running into an issue where I cannot input data quickly enough into the controller before it runs out of points to use. For example, if I input in 50 points each with a timestep of 1 msec, then the controller needs more data within 50 msec.
I have been benchmarking how quickly my VI can inputs points with my attached VI. It is basically the same process of my actual VI except I made it do only 64 points.
My approach is:
1) Initialize arrays of data and convert them to correct data types
2) Initialize 64 points into buffer
Processes included in my actual VI:
3) Start the motor controller
4) Enter a while loop
4a) Check if motion is still going
4b) Check if there are 32 points of space available in controller buffer
4c) If space is available, run a for loop to add 32 points from arrays of step 1
What are some things I could look into to increase the max data insertion speed of my VI?
Thank you for the thorough information. How fast are you currently able to run the loop to send the clusters to the controller and how fast do you desire to send the clusters? Additionally, would you be able to post your actual VI or a screenshot of your block diagram? Thank you!