Phil Izak

Logix5000 and Kinetix 6500 Motion

11 posts in this topic

Good Afternoon all. I am currently setting up a machine using a 1769-L33ERM Compactlogix controller and 5 Axis Kinetix 6500 Safe Torque Off Drives. I have a couple questions that I am hoping you may be able to help me figure out as I have been struggling to get the results I am looking for. I am using Logix5000 Version 20.01. The first question is probably pretty simple, but I haven't been able to find the answer and have searched through this forum, as well as, the AB Knowledgebase. I am used to using the JSR instruction in RSLogix500 so that I can break up my programming, and was hoping that I could use it similarly in RSLogix5000. Unfortunately, it works differently as it is looking for input and return parameters to go along with the instruction. Upon downloading the program to the controller, it shows that it is linking all of the routines, but when trying to execute an output from routines other than the MainRoutine, I get no response. The second question I have is a tad more complicated, at least for me, as this is the first time I've jumped into servo motion control. I have a Kinetix 6500 five axis system, controlled through ethernet/ip. I have no issues when testing and tuning each axis, which is probably the easiest part of the process. Upon initial trial of jogging my indexing motor, it immediately errored. I realized that I hadn't turned the servo drive on with the MSO instruction prior to attempting the move. Once I inserted the instruction with just MCR OK bit, to test it out, it started to self engage. It would engage, then go done, and withing 2 seconds engage itself again. I'm not sure where I'm going wrong and have not found an answer. I have looked at some sample code from the Knowledgebase, but it is all for earlier versions. I'm hoping I might be able to get a little insight into my problem from the experts in this forum. I have also attached a copy of my program for you to critique. Again, I am new to fairly new to RSLogix5000 so don't be too harsh. Thank you, Phil Heat_Former.ACD

Share this post


Link to post
Share on other sites
You need to use the JSR instruction to execute the other routines, just like in Logix 500. Leave the input and return parameters blank, they are optional. When I insert the JSR instruction, it doesn't usually display those fields anyway. Perhaps it's the way I enter it. As far as the servo control itself, I'm not sure I follow your description. Is the servo cycling between off and on (engage/disengage)? Or is it just the MSO command that is cycling? I've attached a routine that I built for manual servo control that includes and initialization sequence for reseting and turning the servo on, as well as jogging, etc. Try adapting that to your use to see if that helps. You can import it into your project as follows: 1. Extract the file, will have an L5X extension. 2. Right-click on the "MainProgram" folder and choose "Import Routine". 3. Find the L5X file and select it, then follow the prompts. You'll have to adapt some of the logic for your purposes, but I've used this on the L33ERM with Kinetix 6500, so it should get you started. You can also do testing without logic by using the Motion Direct Commands (right-click the axis to find the option). This lets you send motion commands directly to the axis without writing logic. This can be helpful for figuring out what commands to use, troubleshooting, etc. Stage1_Manual.zip

Share this post


Link to post
Share on other sites
Thanks for the reply Jross. I insert the JSR identical to how I do it in 500. I've tried leaving the input and return parameters blank, but when I go to verify the program, it gives me errors for leaving those parameters blank. The servo is following the logic in engaging and disengaging. As soon as I put the controller into remote run mode, this takes place. I'm not asking the drive to execute the move until I press the Jog button, but it is engaging and disengaging itself. I'm not getting any movement out of the servo, atleast not that I can see, but it is cycling. The drive shows cycles between running and stopped. Also, thank you for the sample logic, I will definitely take a look at it and learn from it. Phil

Share this post


Link to post
Share on other sites
If you leave the '?' in the Input and Return parameters then the compile will fail. Be sure to highlight any and all characters in the fields then backspace or delete. They should disappear upon hitting the enter key.

Share this post


Link to post
Share on other sites
You must be entering the JSR using either the tabs in the toolbar or right-clicking and choosing "Add Ladder Element". Both of those methods default to include an input and return parameter. However, those fields are optional. If you double click in the field and delete the question mark, then hit enter, the field will disappear. You'll have to do this several times to clear all the fields. I enter the JSR by double-clicking on the empty rung, typing "JSR" and hitting enter. This is just a short-cut that I use, but this way it defaults to not include the extra fields. I can't see in the program why the servo would be turning off and on. Try putting the PLC into Program mode and use a motion direct command to execute the MSO command. This will tell you whether the problem is with the program or with the servo.

Share this post


Link to post
Share on other sites
Thank you for the hints JRoss and IO Rack. I see how the JSR does insert itself differently depending on which method you use. Now to work on the motion. JRoss, I noticed that I didn't have the initial programming that was causing the flip-flopping that I was talking about in my initial post. I originally had the Motion Axus Move command being initiated by the jog push button. The Motion Servo On command was being initiated by the MCR pulling in. The Motion Servo ofF command being initiated with the MCR releasing. The Motion Axis Fault Reset was being initiated by the Drive Reset Push Button. Phil Edited by Phil Izak

Share this post


Link to post
Share on other sites
I'm not sure I follow what you're trying to say. Is the program file included in your first post what was on the PLC when the flip-flopping was happening?

Share this post


Link to post
Share on other sites
Ok, the initial program I attached was altered from when I was having the engaging/disengaging issue with the servo drive and MAM instruction. I have attached the program in it's current state with the logic for the Camco_Drive as it was when experiencing the issue. Another thing I have noticed, and I'm not sure if it's because I am using a Flex I/O Thermocouple module or not, but I have set it to give me the data in degrees Farenheit. It should be giving me room temperature, but it is reading 10 times what room temperature is. Again, used to 500, and I could have thought there were a couple more parameters you could configure. Is this just something I will need to divide by 10 in order to get actual temperature? Thanks again, Phil Heat_Former.ACD Edited by Phil Izak

Share this post


Link to post
Share on other sites
Is your MCR cycling for any reason? Have you tried putting the program in program mode and using motion direct commands? Also, try one-shotting the MSO and MSF commands.

Share this post


Link to post
Share on other sites
JRoss, I have found that adding the One Shots worked. It also showed me that I had another issue, as I was applying the servo motion on command before I had 3 phase power applied to the drives. I added a delay timer prior to issuing the one shot and everything worked out. I have one more question, I am using 4 MPAI linear actuators. It is showing that the position units of the motors maxes at 1000, and they have a 3 inch stroke. Would I need to scale the position units to my 3 inch stroke when figuring distance to travel for the actuator? I seem to be a little confused by the definitions of units that they use. In the Camco_Drive Axis Properties, they refer to position units, which I have come to the conclusion is revolutions of the motor. In RSLogix5000, they refer to speed units and position. Are these units the same as the position units in the axis properties or are they completely different. Thank you, Phil Edited by Phil Izak

Share this post


Link to post
Share on other sites
Glad to hear that you'd got things working. Most of the motion commands are edge-triggered, so it's good practice. I usually use a sequence, as in the routine I sent, and enable the command in one step, wait for it to begin processing, then move on to the next step. "Position Units" is user-definable in the Scaling view of the Axis Properties. In your case, I would change it to Inches or Millimeters (depending on your preference), then adjust the scaling as necessary. (i.e. 1 Inches per 25.4 Load Millimeters) All your position and speed command will be referenced to the position units you've defined. Yes, you should change the travel limit from 1000 to something appropriate to your application. If you change position units to Inches, and you've got a 3 inch stroke, then enter a 3 (or maybe a bit less? you'll have to test)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now