11/12/2011 4:43 PM | |
Posts: 5225 Rating: (1192) |
Hi all, It is a nagging question I am yet to resolve, maybe some help please? See also this LINK which inspired me to put his to paper. The PLC generates a pulse train (PTO) that is used as a speed setpoint (ramp up, constant, ramp down). The PLC receives a pulse from an encoder that measure the actual position of the moving object. The motion generating device gives it speed as an analog (0..10V) signal. The accuracy of the system to follow the speed setpoint (PTO signal) can't be assured. The accurate following of the speed is not at issue. The system should reach an internal setpoint for position - again the accuracy does not need to be 100%. Examples of such systems include.. 1. Stepper motor that gives slip at ramp up. 2. Cylinder positioning to open/close valves. 3. AC motor driven by an inverter (VSD). 4. DC motor driven by a (old generation) DC drive. 5. Upgrade of control on old generation motion control. In the above cases the open loop control is just not good enough. "Put a servo in there" is not the answer I'm looking for. Any suggestions on the control strategy? Greetings. -- William B. |
11/17/2011 8:17 AM | |
Posts: 5225 Rating: (1192) |
Thank you Marko Bursic and simone.m for your interest and taking part in this discusion. There is a group that developed coding for Siemens using the S7-200 that does positioning control for 3-phase AC motor and variable speed drive. You can download the locked code blocks from the web or buy a system as a kit from Siemens. It would have been great to have had such control for the S7-1200. Personally I would utilise digital control all the way; not an analog output for speed control as the S7-200 code does. But then again the number output of the block could be an input to the pulse block. The control concept goes much deeper as stepper motors. With the right programming you can control anything which accept a pulse for speed control and where you can measure its position. In most cases micrometer precision is not required. There are cases now that I move my PLC code to the position controller to try and avoid having a position controller and PLC. It would be nice if the reverse could happen; moving the position control back into the PLC. It would better the servicability of the system. Now you know the motivation. Any theories on how to put positioning into the hands of the S7-1200? Greetings, -- William |
11/17/2011 1:04 PM | |
Posts: 5225 Rating: (1192) |
Marko Bursic, Thank you for your response. There are things I like and things I do not like -- using relative motion is inspired but can give problems. I am going to chew on what you have written and respond in more detail on a later post. General notes now.
There is a critical point I did not consider too much -- stalling of a stepper motor. But then this is true even for AC motors if the (start-up) torque needed overwhelms the torque given. If it is at start-up, in most cases one can overcome the problem by (a) stop (b) increase the ramping time (c) restart. Stalling while running constant speed is more difficult to get rid of. I think however we should assume that the motor is driven correctly and does not stall - as to simplify the model as to add the exceptions later.
The AC drive I use can take in a frequency pulse or analog signal for the speed command. But maybe the best general solution would be to have a number output (example 0..10,000). To take this number and convert it to pulses or analog output is not too difficult. The solution is then general and mathematical.
The idea I toyed with was taking over the task of the deceleration too. This needs the MC_Velocity block to work. But I need more info on how the MC_Velocity works inside as to predict if my idea will succeed or not.. it's got to do with the transfer from one motion to another
Agreed that PLC code will be difficult to make discussion with. Pseudo high-level language will do just fine. I'll comment on your code piece later on with some of my thoughts. ..unless someone else feels like participating (which you are welcome to). Greetings. |
Last edited by: William B. at: 11/17/2011 1:08 PM |
|
11/17/2011 6:37 PM | |
Posts: 5225 Rating: (1192) |
Hi, Please find attached a piece of untested code that aims at controlling the speed of a device as to ensure the movement reaches a set position. The block requires the knowledge: - target position - target speed - actual (measured) speed - actual (measured) position - predicted ramp down time for a set speed At each scan the block determines at which position will it come to a halt if it stops at that moment. It is assumed that the deceleration rate is constant. If the predicted stop position is far away, the system aim to run at the target (normal) speed. If the predicted stop is futher than the target position, the system aims to run at ZERO speed. While decelerating, the system still checks if it will make the target position. No action is taken if the new predicted stop position overshoots the target position. If however the stop will be short, the system reads the current speed and tries to maintain a constant speed. This action causes a step action -- which may or may not cause problems. The deceleration continues normally when target and prediction is again on track. This control is yet untested. I foresee issues for making a smooth transition from one speed to another when trying to adapt the ramp down to. an adaptable ramping function would be great to use here. I have doubts if MC_Velocity block will be able to handle small changes in speed commands or changing from one target speed to the next within a small time. This code is possible to use for either analog output or pulse output. It should also be possible to run this code from a timed interrupt. I do not have the means to test the design. If I have a fully thought out theory and viable solution I might be able to get a sponser to test it. So theory first. I thank you for any comments, additions and ideas you have to give. Greetings. - William AttachmentB11_MotorSpeed.pdf (693 Downloads) |
This contribution was helpful to1 thankful Users |
11/19/2011 8:36 PM | |
Joined: 9/8/2009 Last visit: 7/17/2023 Posts: 1410 Rating: (152) |
Here is a code for trajectory planner from linuxcnc, license is GPL Version 2, so I think it can be used for redistribution: http://git.linuxcnc.org/gitweb?p=emc2.git;a=blob;f=src/emc/motion/simple_tp.c;h=fd6a791c8da7e65258f607491731769f0f9ed8a5;hb=refs/heads/master http://wiki.linuxcnc.org/emcinfo.pl?Simple_Tp_Notes |
11/20/2011 4:50 PM | |
Posts: 5225 Rating: (1192) |
Marko, That is inspired thought! It did not occur to me to use EMC2 as reference. Well done! I'm sure the EMC2 followers would love to hear about a PLC using some of EMC2 principles. But hey!.. I thought you were against my idea of doing velocity control. I must say I prefer the method you refer to above my half baked idea.
The 2nd link does not read so easy. I have looked at MATH EXPLAINED LINK instead. Working through this was worth the while. It gives a good understanding on how the deceleration works. The 1st link I gave the once-over but can be very helpful indeed. SCL might be more convenient but I do not foresee problems doing this in LAD. What makes me excited is making this concept work on a S7-200 PLC. There is a bit more to work with controlling the PTO.
I am loosing you here. The control output of the traject-code is velocity -- not position. It is not clear this can be the setpoint. I will agree if the HSC gives speed or if you use an analog feedback for speed. The the process error will be speed and PID output will be speed.
Yes agreed. <<As alternate method>> I have had a thought yesterday after rereading a post on using a PID to generate a PWM signal. There is nothing that says we can not use the PID_PWM output of the PID to give a speed reference to a pulse driven device. The question that comes to mind is.. what is the maximum pulse per second rate we can expect from the PWM? |
11/20/2011 4:58 PM | |
Posts: 5225 Rating: (1192) |
As a side note.. I rather like the description given for a PID at this LINK. Within is pseudo code for designing a PID controller. A lean PI controller can be designed from this if required. What I like is that there is a bit more control over the outcome when using this algorithm. |
Follow us on