AB Micro800 function block for Kollmorgen drive?

Schmackster

Member
Join Date
Sep 2017
Location
Sydney
Posts
8
Hi,

I am using an AB Micro820 with Connected Components Workbench (CCW) to control a Kollmorgen AKD servo drive but can't seem to find a standard function block like there is in RSLogix5000. Does anyone know if such a thing exists? Also some tips on communicating to it via Ethernet/IP would be appreciated as I can't find any information on it anywhere.

Thanks.
 
I have never seen a pre-built function for that drive, but there may very well be one.

However, if that drive can communicate with "Modbus Tcp" then you probably can achieve the same results.

I had to write a package that would talk to and control a Schneider ATV630 drive, and there was NO prebuilt function block. So I just had to write/read all of the different addresses that was needed.

Turned out to function very well.

I can help get you started if you need, just let me know, I will post some code with explanation.
 
When I asked the supplier about comms to the servo drive they sent me this link https://youtu.be/gZnJmG5R65I . The problem is that it relates to a CompactLogix PLX using RSLogix5000

I have pretty much come to the same conclusion that I will have to communicate using Modbus messaging. It is not a big problem as I only need to action 20 different motion commands which I can probably do with 20 separate Modbus messages.

That would be great if you could post up some sample code as I am struggling with it.
 
Be sure to read the manual on how to use MSG_MODBUS2, and don't forget that if you want to access a memory location (add 1 to the address) so if you was addressing 8502 you would actually look at 8503.

Just ask if you need help, I will do my best.

I have post example code and how the parameters should be setup for the different modules parameters

VFDSetup.jpg
 

Attachments

  • Controller.Micro820.Micro820.SchneiderVFD.pdf
    232 KB · Views: 23
Thanks for that, I will go over it now. Have got the comms sorted and now need to get the individual addressing which your examples will help with.

Thanks for the tip about adding 1 to the address, I didn't pick that one up.

One other question with regards to straight commands, i.e. reading/writing bits ON and OFF. I assume that is done using the same MSG instruction, correct? Any tips on how to do it?
 
If you'll notice in my coding I also use two other function blocks "Bit_Merge and Bit_Expand". The "Bit_Expand" function blocks will take the 16bit WORD that is read back from the address and extract the bit status of the WORD value, you will need to use 2 function blocks for each WORD if you need to evaluate all 16 bits. Both of these function blocks allow you to select Hi or Lo byte of the WORD.

If you need to write a certain bit of the WORD then you use "Bit_MERGE" to arrange the Hi or Lo bit value of the WORD and then you can write the NEW WORD value back to the drive's address (Remember add 1 to the address you want to write to.)

So in answer to your question you will always be reading or writing a WORD value, but you will have evaluated and adjusted the bits in the WORD to be as you want/need.

P.S. Since I don't have a clue on the structure of the addresses that this VFD uses, I could very well be incorrect.

The Schneider ATV630-900 drives us 16bit and 32bit address so that is why my code is made up the way it is.

If you know your drive will use 16bit or 32bit addressing then this coding should work for you also.

Good Luck, Please keep me posted on your outcome.
 
I thought that I would have to construct a word to send it to the drive and I figured that was why you had used the BIT_MERGE command. The drive manual does reference the Hi and Lo bits so just need to work out which ones I need.

The battle continues......
 
A bit of an update. It is all finished now and ended up working out quite well after the early dramas. The MSG_MODBUS2 and it's local addressing was the first part of the puzzle and the other was finding the correct Modbus addresses for the drive the second part. Once I had those pieces of information then I started getting some communication and traction.

The Micro820 that I was using didn't have the BIT_MERGE and BIT_EXPAND and one of the service techs that works here showed me how to use the AND_MASK instruction block to separate out the individual bit that I needed from a word.

Attached is a screen shot of the move command which comes from a counter. The drive had 19 different motion tasks and this told the drive which one to execute. The number had to be converted to a word and copied to the correct locall address (LA2). Once that command was sent then the program waited for the feedback (FB). Using the AND_MASK function the "Move Complete" bit and "Home Found" bits were extracted.

You will notice that this is a bare bones program with just enough to make it work. I entered all the local config directly into the variable table instead of creating another variable as it never changes.

Thanks very much for your help.

Capture.jpg
 

Similar Topics

My company built a small test machine using a Micro800 PLC and CCW software. We chose the Micro800 because the machine is very simple. We are...
Replies
2
Views
161
Hi, Is there a way to set the IP of a micro dynamically, based on a variable value.?
Replies
0
Views
167
Anyone use the newer 2080-L50E or L70E with 1734 Point IO yet? I have a customer asking for a setup and I have not found anyone that has done...
Replies
0
Views
386
Is there a way to download the program to a Rockwell Micro810 without using the Rockwell CCW application?
Replies
5
Views
735
Hi All, I am having trouble converting a real to string and keep it to 2 decimal places. I'm sure its a simple solution. Any help is appreciated
Replies
2
Views
295
Back
Top Bottom