lamboom

NJ Streaming position data to LinMot

15 posts in this topic

 

Now that the NJ is doing a great job streaming position data to a G5 Servo motor, Thanks to Tyler Corbett, Innoaloe, Michael Walsh, Crossbow, Berti & many others .. :-)

  (Blue trace)

          58b9a5020275d_RampTime_003.thumb.jpg.513

The next trick is to get the NJ to run the LinMot Ethernet/IP Drive on the NJ's E/IP port.     The NJ is already doing other things with the LinMot on that port... so it might be possible.

How hard could it be..     just....    :-)

 

In order to talk to the LinMot, you have to use Command Modes, and parameters like:

                                58b9a9fc7a3bd_LinMotCommand.jpg.efee20c1

Kinda easy to call for a typical position move.  

But, How about the Streaming position move... Here's what LinMot offers for options in that area:

          58b9aaaa47f0d_LinMotStreamingCommandMode

 

And here are the available definitions of those options:

                     58b9b0eb0b801_LinMotStreaming1.jpg.0906c

...

                     58b9b116329c5_LinMotStreaming2.thumb.jpg

...

                     58b9b1522cd67_LinMotStreaming3.jpg.86fdd

                   

There might be enough info here to make an educated guess.. ‘cept I’m not well educated… sigh!  (What’s NC Functionality, or Time Stamp or Configured Period Time?)

..methinks there are some limitations on the cycle period time .. could be as slow as 10ms .. but, that’s OK for making waves.

And that's about it..

Any Nj experts out there understand the above options .. enough to make a recommendation ?

Thanks much... Regards, Michael Lambert

PS:   Below, recently discovered,  is from a single page (84/106) in the LinMot Motion Control SW manual (2014)  ( BTW:  NC is "Numerical Control" .. do you know what that means?)

 

 "P(V)-Stream
For masters with NC (Numerical Control) capabilities, the software supports cyclic streaming modes of the position and velocity, or position only.  The streaming has to be strictly cyclic in the period range 2ms to 5ms. This feature is supported with all fieldbus variants like Profibus DP, CAN Open1, POWERLINK, EtherCAT, (No mention of Ethernet/IP .... sniff!)

Different modes are supported:
In the first mode (Motion command: 030xh) the master only streams the position.
   
In the second mode (Motion command: 031xh) the master streams position and velocity, whenever possible use the PV-streaming mode, because the acceleration derivation is less sensitive to bus jitters than in the position only streaming mode.

The third mode (Motion command: 032xh) is like the first mode, but for the derivation of the velocity and the acceleration a configured period time (UPID 14E6h) is taken, instead of the slave receive time stamp.  This minimizes the bad influence of the transmission jitter.

The position setpoint generation in these modes is delayed 1.5 times the streaming cycle time, e.g. with 2ms streaming period time the delay is 3ms.

In the P- streaming mode, it is possible that, depending on the cycle time, a quiet noisy motion is generated, this because of the twice derivation of the position signal to generate the acceleration value. In this case, it is recommended to set the position controller value “FF Acceleration” (UPID 0x13A0 and 0x13B4) to zero.

 

LinMot seems to recommend that the PV is the best mode for this use (4.3.39) ... :

                               58be21c020821_Paulslinmotcommands_0042.j

Possible Sysmac ST component: MailScreenSnapz008.jpg.94f74abce18b8a228

the trick is to send the above every 2ms over Ethernet/IP

 

soooooo ..Does the NJ have "Numerical Control"   ?

Can this be done with Ethernet/IP using the NJ  ?   ...or would it be easier using just P-streaming mode .. "position only"

I'm motivated to try with the E/IP ... because I only have an E/IP LinMot drive at the moment (can't afford the EtherCAT drive at $1200 yet)

Streaming requires at least two command events, (example: 2 ms apart) in order for the LinMot to establish the "period", or "Time Stamp".  The position will be sent to the motor 1.5 periods later from Time 0, or at 3ms .. LinMot will expect another position at 4ms, and will send the 2nd position to the drive at 5ms from Time 0. ... etc.     That's the theory.

 

 

 

 

 

 

 

 

 

 

 

 

 

Edited by lamboom

Share this post


Link to post
Share on other sites

One of the possible ways it might be done came from outside the Forum.   It is suggested that CIP Communications via Sysmac might provide a solution.

                  58bb19fa7e942_AdobeReaderScreenSnapz006.

Intended by Omron to provide communication between Controllers using the E/IP port, Variables (position data for a LinMot drive) could be opened, written, sent..etc. via this method.

There is some indication that the "receiver" need not be a controller.   Pages 2-1013 to 2-1068  of the 1800 page NJ Instructions Manual W502-E1-18 has a lot to say about CIP communication.

Unfortunately, It's not real clear to me how to use this for LinMot E/IP streaming.  I wonder if this is the "Numerical Control",  mentioned by LinMot?

Edited by lamboom

Share this post


Link to post
Share on other sites

Hello Michael,

appreciate your messages, but in the mean time I will keep this in the forum, should any other may encounter this. I still got many things to close before this month ends, cannot really keep up with the forum.

I never had any experience with LinMot Drives, but I do know how Ethernet/IP works, so just some inputs to you :

  1. You mentioned that when you pressed Read Command on LinMot software, the Command Header changes to 256 (or 100 hex). I might be wrong, but I believe instead of using Read Command, you should use the Send Command. A little look on LinMot Talk manual mentioned that you should check on the Enable Manual Override checkbox before you can Send any command to the drive. I dunno if you had done that or not, but I think that should be the one. You can test whether the command header works or not on that software before moving to NJ. If by all means that doesn't work, then NJ won't either.
  2. Numerical Control basically stands for processors that can create motion path by mathematics equation. Think of a X-Y table with two Servomotor driving linear actuator for example, and you want to move diagonally. We only need to put the target X,Y coordinate, and the processor will automatically calculate required position and velocity for both servo. Now, Omron NJ does have this capability with it's EtherCAT and Pulse Output control due to the fast communication speed, but what I know, Ethernet/IP by it's nature cannot achieve this.
  3. Regardless of that, you should first try to send PV Stream command from step 1 mentioned above. If it able to do so, then the Ethernet/IP interface should be able to keep up with it. Later on in order to make sure position data updated every 2 ms, you should just use a Timer in NJ to update the P and V value
  4. A quick look on LinMot Ethernet/IP manual here http://www.linmot.com/fileadmin/user_upload/Downloads/software-firmware/servo-drives/linmot-talk-6/Usermanual_Ethernet_IP_SG5_e_recent.pdf from page 27, it shows the memory mapping between LinMot and Master unit (in this case NJ). Since you had LinMot EIP drive, I'm assuming you had been able to set Ethernet/IP up, so mapping those to NJ would just be a bubble over waves. Then you can test whether the PV Stream command works or not.

Hope things moving smoothly

Share this post


Link to post
Share on other sites

Inno --always nice to hear from you ... I appreciate you are very busy... there isn't any rush on this.. it's more about the journey than the destination.   commenting on your reply's:

1) you are correct... I should have pressed Send Command... But it was greyed out.  eventually solved that problem with trial an' error ...and .. yup..I did check Enable Manual Override too.

The good news is.. a fault was created in the drive when I hit Send Command ... I  mentioned earlier(edit): Streaming requires at least two command events, (example: 2 ms apart) in order for the LinMot to establish the "period", or "Time Stamp".  The position will be sent to the motor 1.5 periods later from Time 0, or at 3ms .. LinMot will expect another position at 4ms, and will send the 2nd position to the drive at 5ms from Time 0. The last command would be "Stop Streaming"      It doesn't look like there is any way to simulate this streaming series from that TALK 6 Manual window.. which generally only deals with calling for a single position, at a single velocity, or acc... or a curve from a curve library.. etc.    Makes one wonder why it's even there?

2)  Ethernet/IP may indeed, not be able to do this.  methinks too many other data packets are flying all over the network, presumably modifying the "Time Stamp"

3)  I'm not having any problem sending commands to the LinMot using other command modes, like VAI Go To Position (you can see that in the little video of my test rig)   While I can get the "expected" Fault using TALK 6 and the Manual command mode window for PV streaming, by sending  a single command.. and no other, thus overloading the buffer,  I do not get a LinMot Fault when operating the NJ's program with this ST:

58c0801c36f6f_Possiblelinmot.jpg.6f5615a

even tho, I do see the calculated data online:

58c0a22311ae3_cycletime_003.jpg.a863d852

Just nothing happens...not even a LinMot Fault   ..   you would think I would get that when the streaming fails ...   soooo something else is not right.  :-) 

I might be goofing something up.. like "Count Nibbles"  ... whatever that is... sigh.   Time to go back to the LinMot manuals...

4) Because there was great success in sending simple command mode settings to the drive,  (I had access to a program that did that using an NJ)   I assumed I could write something that would send "timed" commands, via Ethernet/IP ... and... that may still be possible... except, the LinMot claims the drive must receive "precisely" timed periods of commands...  and that... may not be possible, because of the nature of Ethernet/IP?

 

 

Edited by lamboom

Share this post


Link to post
Share on other sites

Speaking of the Nature of Ethernet/IP ... which tends to fail at this method of data streaming with LinMot.  I asked LinMot support if has it ever been done by Rockwell (Allen Bradley)   .. The answer was: "PVA streaming has been done with the Rockwell PLC, but the Ethernet IP bus needs to be updated at regular intervals (the requested packet interval between the PLC and the drive), and the task/ladder that has the streaming command is also examined at those regular intervals."

That sounds like a timed messaging system .. similar to Omron's CIP messaging (above)?   Does the NJ have a '"Scan Timer" .. should I be using a TON to regulate commands to the LinMot drive at precise intervals? 

Even then .. would Ethernet/IP get the message to the LinMot in a precise time sequence.... ?

Anyone know how Rockwell does it?

Edited by lamboom

Share this post


Link to post
Share on other sites

 Latest News:  LinMot support just sent a preliminary walk-through file on E/IP streaming to LinMot E/IP drive using a Rockwell CPU:

Microsoft Word - Rockwell_PVA Streaming_Walkthrough_Pictures.docx.pdf

Here it is in .docx:

Rockwell_PVA Streaming_Walkthrough_Pictures.docx

Now to find someone that knows Rockwell and Omron NJ... :-)

Edited by lamboom

Share this post


Link to post
Share on other sites
On 3/7/2017 at 7:58 AM, innoaloe said:

Hello Michael,
Since you had LinMot EIP drive, I'm assuming you had been able to set Ethernet/IP up, so mapping those to NJ would just be a bubble over waves. Then you can test whether the PV Stream command works or not.

 

Yes, Inno ... Communication with the LinMot is working well with simple tag commands for position "go to" commands, Jog, Home etc.. all had to be satisfied via Sysmac and Network Configurator  ("NC" is the most difficult and frustrating program I have ever encountered, by the way :-)   I have not been able to send the "first" streaming command to the drive, as shown in the ST above in reply #3 .. which is quite disappointing .. I should be able to start the stream .. then see it fail  ... with a Fault. on the drive... as it does when streaming is simulated using LinMot's TALK 6 software.  In fact, it is impossible to simulate streaming from that software; but, as I said above, it is possible to START the stream, using the Command Header 784  ... A test position stream can be ramped from zero, and take a while to get somewhere.. so, there is no problem with too large a position increment .. which would cause following errors.    The Error that pops up in the "simulated" stream using software.. is buffer overflow because there is only one point sent at the start.. and no 2nd point can be sent.

Edited by lamboom

Share this post


Link to post
Share on other sites

I'm going to try an' write a simple test streaming program where the position data describes a simple straight line, where every 4ms a new position point is sent which is only incremented , evenly, by a very small change.   According to LinMot the command must arrive at the same increment of time.     What if a position is calculated during the first CPU cycle, but isn't sent until the start of the second CPU cycle?  .... and so on ...    Is that even possible?    if so, at least the periods of the sent data would be identical... and, at 4ms.  within the range for LinMot streaming.

Edited by lamboom

Share this post


Link to post
Share on other sites

Update   .. the LAST WORD on this question will be delivered in about a week for those that can't wait .. Methinks the answer is NO... the NJ cannot stream position data to the LinMot Ethernet/IP drive over it's E/IP port... there,   said it .. the E/IP port is  not for motion control ... DUH!    unless ya want to do something real simple.. like pick an place...

Share this post


Link to post
Share on other sites

Hi Michael,

in all honesty I don't know whether it can work or not, since I had no previous application using LinMot, but seeing your Rockwell example, they are using Virtual Servo and Virtual Encoder axis as the streamed data.

Now, as you already know before, the cycle-time of NJ can be set to a fixed 2 ms, and from my previous example, I am using the said Virtual Servo. Virtual Encoder also applicable in NJ.

So my guess is that we're making these two Virtual Axes to represent the command position (Virtual Servo) and actual position (Virtual Encoder) of LinMot. These values later on sent to the related EIP tag.

Share this post


Link to post
Share on other sites

Hello Inno - Glad you had the time to comment.   That's great  that you figured out Rockwell was using virtual servo and virtual encoder to stream to LinMot.. I couldn't have done that.

Even setting up something similar in NJ, there's still the issue of sending packets at precise intervals over E/IP with NJ...    

I reached out to Omron support a while back, and an Omron engineer living in Canada contacted me, Tyler Corbett.  He too is interested in solving this question, and will be talking with a friend of his about Rockwell's technique for doing this streaming communication with LinMot over E/IP, later this week.  We are using email, however if anything useful is discovered, I'll post it to the Forum.     So far. there doesn't seem to be any interest in connecting LinMot to Omron .... yet.      Perhaps machine builders out there don't appreciate the awesomeness of LinMot .. works under water, only one moving part (the slider rod), almost never wears out (billions of cycles) incredibly powerful (force up to 275 Kg) and super fast or slow ... and, very accurate.

This post has had 173 views to date.. and you are the only one to comment on it .. thanks so much... :-)

 

Edited by lamboom

Share this post


Link to post
Share on other sites

Inno...   I didn't notice that you used "Virtual Servo" for the axis type in your example program.  When I added the equipment (R88D drive and G5 motor) I changed the axis type to "Servo".

And that's the way it is today .. which is working fine for the present configuration: Random Sea to the G5 motor.      Are you suggesting, I go back to Virtual Servo .. remove the G5 drive and motor from the equipment..  and have only the LinMot E/IP drive in the System. ?

I'll study Motion Control manual (W507-E1-14) a little harder, and see how one would use these Virtual Axis types in a program.....

Edited by lamboom

Share this post


Link to post
Share on other sites

Meanwhile: Tyler Corbett (an Omron Support Specialist)  commented:

"If you link a EIP tag to a task in the NJ than we may be able to refresh every 5ms(fixed interval). A task in the NJ always executes at a fixed period and if it executes the task by the end of the period then you get a watchdog error. You would either have to off load code or extend the period.

**The biggest issue looks like, would be the AB is using a custom function block to talk to the LinMot drive which has access to all of the parameters and actually can control/command the drive. We either need the Omron to LinMot custom block (if there is one) or find out the low level code inside that function block and how it works to create code to emulate what it is doing. It is sort of like Omron has this set up called eplc which makes a Ethernet IP connection from a NJ to an adept robot and to program the robot there are function blocks. Inside the function block is internal code that links the variables we make to the robot. We don't see behind the scenes of how it actually links to the adept robot via the normal function blocks.

Also, If you lock a tag to a task then it may also be bogged down by system services (explained in page 56-64 of the tasks programming PDF attached) which are other pieces of data that get sent via EIP."

It may be possible that the Tsunagi Lab, in Japan might help with a solution.  Tyler says they are a group in US and Japan, that tests third party connections with other vendors.

I'll post any progress... to be continued. 

 

 

Share this post


Link to post
Share on other sites
On 3/20/2017 at 11:02 PM, lamboom said:

Inno...   I didn't notice that you used "Virtual Servo" for the axis type in your example program.  When I added the equipment (R88D drive and G5 motor) I changed the axis type to "Servo".

And that's the way it is today .. which is working fine for the present configuration: Random Sea to the G5 motor.      Are you suggesting, I go back to Virtual Servo .. remove the G5 drive and motor from the equipment..  and have only the LinMot E/IP drive in the System. ?

I'll study Motion Control manual (W507-E1-14) a little harder, and see how one would use these Virtual Axis types in a program.....

Hi Michael. Exactly so... The idea is to pass the Virtual Axis actual position and velocity value to LinMot Ethernet/IP Tag. So numerical control is still achieved through the Virtual Axis.

Will it work? I dunno :D. But you get the idea. You can pass the values of VirtualAxis.Act.Pos and VirtualAxis.Act.Vel to LinMot respective EIP tag for position and velocity, while the VirtualAxis itself is still controlled by MC_MoveSyncAbsolute.

 

18 hours ago, lamboom said:

It may be possible that the Tsunagi Lab, in Japan might help with a solution.  Tyler says they are a group in US and Japan, that tests third party connections with other vendors

 

Indeed we in Omron had this function. Tsunagi means communication in Japanese. And eventhough we don't have the official "Lab" in Indonesia, actually we're conducting the same thing day by day :D. The only difference is that in official Tsunagi Lab, they had this planning and budgeting through an entire year to test targeted 3rd party vendors connectivity. They might support non-targeted devices test also, but I don't know how's the process on requesting whatsoever.


In our local office basically we will test based on request. No yearly planning whatsoever.

 

On 3/19/2017 at 11:28 PM, lamboom said:

This post has had 173 views to date.. and you are the only one to comment on it .. thanks so much... :-)

 

I've been into various forums, and if talking about technologies, computer and electronics forums are the best in terms of a real communication.

Automation forums are meh... but been working in this field, I can understand the reason why people are not that interested in uncommon application. Computers and Electronics mostly will relate to your hobby to which uncommon topics will generate interest for others to try doing the same. Automation? It's more about your job or revenue you can get. I rarely find fellow Automation person who like it for a hobby, aside some College Lecturers who also run an automation service. Uncommon topics just doesn't sell that well, and putting too much thought on something that generates nothing might seen as useless effort :D.

I don't mean any bad to other forum users. Many are being very helpful. It's just that maybe in the first place you asked in the wrong place. I guess consider to ask the vendor local rep 1st, since they will have responsibility to give an answer, and if they don't you have the power to file a complaint :D

Share this post


Link to post
Share on other sites

Wow! .. where to start.  You are a wealth of info.  

I tried to fill out a "form" from the Tsunagi Lab.  It was an Excel document that my MAC had a hard time with. (it does have Microsoft Office)      TsunagiProblem_CheckList_07172015.xlsx

TsunagiRequestSheet_FY16.xlsx

After thinking a bit about this, I may be asking too much by requesting help on this subject.   The obvious solution is to use the EtherCAT LinMot drive, Not the Ethernet/IP Drive.   I think going to Omron with such a request for solution to a very uncommon problem, is not justified.    In fact, LinMot was not happy that I was trying to do this; although, their tech support did try to help me (this thread contains some helpful references from them)

At this point.. like you said:

4 hours ago, innoaloe said:

 Computers and Electronics mostly will relate to your hobby to which uncommon topics will generate interest for others to try doing the same. Automation? It's more about your job or revenue you can get. I rarely find fellow Automation person who like it for a hobby, aside some College Lecturers who also run an automation service. Uncommon topics just doesn't sell that well, and putting too much thought on something that generates nothing might seen as useless effort :D.

Yet... you, Tyler and a few on this forum seem to be an exception.   Sometimes, just the fact that it's different.... is an interest in itself.  It also helps if the solution doesn't take hours of research.. :-)      

I've been reading up on what I can find in Omron's literature.  Also the "theories" that have come in from you, Tyler and Michael W.   All, have given me the inspiration to "explore" the possibilities.   I should design a simple Sysmac project, using only the NJ101-1000, the HMI and the LinMot E/IP drive .. nothing else.   In fact... I might remove the HMI,  and use E/IP I/O's if that would mean less clutter to the E/IP network.

Use simulated streaming position data.. just the same small position incremented each cycle .. so the linear motor just moves out at a constant velocity, no velocity or acceleration (Position only) using virtual servo, ... cyclic tasks, that send the incremented position as a tag to the LinMot drive.

I would appreciate suggestions on how to structure that program (Not the program itself.. :-)  

I can see that much of the "structure" is in Inno's first reply above.  Might need some clues on the Task programming... but, I have some good references from Tyler .. enough to go for it.

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