lamboom

MrPLC Member
  • Content count

    185
  • Joined

  • Last visited

Posts posted by lamboom


  1. I see there are some nice math instructions in the NJ's menu.    I can't use a MC_MoveAbsolute.  It must be a Cosine position curve running from zero to a positive max end position.

    I imagine I can use an offset to start the curve at zero, as the COS instructions produce a wave from -1 to +1 and back again.   The trick is to start the curve at -1 and end it at +1 ...

    If you know an easy way to do that, please share.. :-)    Regards, Michael

     

    PS:   This may seem silly .. but, after finding it so easy programming a Delta Motion RMC75E motion controller to due exactly what I'm asking above... I am surprised as to the degree of difficulty dealing with Sysmac & the NJ ...  The level of complication is excessive, if one tries to go beyond the available Function Blocks, Functions and packaged math expressions.    Sure it's easy to do a trapezoidal move from one position to another.  But, I want a cosine curve (or, if you like, a sine curve) .. they are somewhat the same ... but not exactly the same .. and they are certainly not a trapezoidal move component.       I know The NJ can do sine waves ... Check this out:

    https://www.youtube.com/embed/gGzp7HURBJE?rel=0&controls=0&showinfo=0

    Perhaps, this video will help illustrate the problem.  Regrettably, it may require some innovative programming on a complex level ... such work is often done for the programmer by other manufactures of Motion Control modules...  it is certainly beyond my experience, and ability. 

    Any suggestions, short of actually writing the program, would be a big help in my learning curve... Thanks much.


  2. HI

    I have 4 small ladder programs ... In 4 different .smc2 files.  Each program uses similar FB' & ST's and FUN's .    I would like to combine all four, each with their own page on the NA HMI.  My attempts haven't been working well .. The HMI is doing everything I wanted.. no problems there.    But, even tho I use different variables in the 4 programs, there are "warning's" that I'm using identical instances .. which is true .. :-)  .. and, programs don't run ..  'tho, they each run quite well, when there is only one of them.   The problem is, I haven't been able to figure out how to isolate, and prevent conflicts between the four programs.  They all control one linear motor, and have it do different things. There never is more than one of the four running at any time

    I know I can create (list in the multiview explorer) many programs (ladder & ST); also, each can have many sections.   

    Please suggest the best way to manage four programs, within a single file.. in general.       I've done a lot of reading of the NJ manuals, and can't take the Omron programming class; however, have learned a lot on YouTube .. and on this Forum, ... so I'm not totally dim.

    If you think it would take too much time to answer this question, please point me to a good reference ... I'm familiar with W502-E1-18 NJ Reference, W508-E1-14 MC Reference, W501-E1-16 NJ Software, W507-E1-14 Motion Control ... so if you are going to suggest using those.. please suggest the page number.. :-)    

    Thanks much, Regards, Michael

    PS:    It's like having (4) MC_SyncMoveAbsolute fb's in the same ladder prog (not on the same rung)  they all control the same axis, but only one at a time....   OR, perhaps there's only one MC_SyncMoveAbsolute .. and it gets different position information, from 4 different sources ... one at a time? 

    ..................................................... 

    RESOLVED: It was the last point I thought of above... that approach kinda worked .. an' for now "kinda" is good enough.


  3. Hmmmm.... Well... actually I did .. hasn't got back to me yet ... He's far, far away...  Thanks for the info... i searched, but didn't see any info on the latest versions .. guess I coulda activated the "Auto updater" ... what could possibly go wrong... :-)

    Thanks again....


  4. More Update.. I'm not using the drive in it's streaming configuration mode, but only as a slave in a basic Motion Control Mode.  The MC_SyncMoveAbsolute fb does successfully provide streaming position data to the drive:

                           59245c08ed134_plot1ms.jpg.f7afaf490e92e4

    more later...........

     


  5. Now, I'm thinking the ramp (Offset) ought to be in the ST curve program.. Do away with the MC_Move Absolute & just make it part of the curve equation (hate it when "just" gets used in a sentence)

    It seemed easier to use one of the MC fb's ..   Fine, I'll "Just" write an Offset routine into the curve equation.

    Unless you know of a better way :-)

    ........Perhaps: MC_SyncOffsetPosition fb ?


  6. I'm trying to ramp up from zero to enable a NJ calculated random curve to never produce a negative position point:

                      Offset_move_to_Curve_start_without_a__Cl                                 

    Calling the move "Offset", and using a MC_MoveAbsolute fb, the idea is to trigger the curve generating ST to start when the move reached 50mm.  (Wanted the variable "Ready" to go TRUE at the end of the ramp to 50mm)  .. Then, MC_SyncMoveAbsolute fb would continue from there, sending streaming position data to the LinMot Linear motor.

    As seen above.

    But, there's a problem.  Initially, I used the MCMoveAbsolute.Done to start the ST curve move sequence, which also ramps amplitude from zero, over a period of 3 seconds:

    Offset + [(a number that goes from 0 to 1.0 in 3 seconds) * (the mathematically generated position curve)]   The result is a "clunk" at the transition of the end of the ramp and the start of the curve.

    Not sure when "Done" happens... started to think perhaps it's when the fb is finished making the command to move, and not when the move has actually finished.

    So I tried an IF_THAN:  

                     5924537297419_Ladderworkingclunk_004.jpg

    That was kinda silly, because the ramp final position never reached 50mm ... "Ready" never set to TRUE ...  close, but no cigar.

    So the next step was use a Round instruction that actually monitors the position of the slider: and a EQ instruction that compares the two, and issues a "Ready" command to start curve the curve program:

                     59245026cad57_Ladderworkingclunk_006.jpg

    This produced the Minor Fault:  Axis 0x543B0000 Motion Control Instruction Re-Exicution Disabled

    Now I'm thinking this can't work because "Ready" will only be TRUE when the the curve hits 50mm (which is quite often, after it starts running ... 50mm being the new zero)

    However, It did start the curve sequence.. but nothing moved because of the fault...

    Soooo.. The question is: How can I do a smooth transition from the end of an Offset move to the start of the curve? 

    Or.. better still...How is an "Offset" normally done to any curve generating routine?

    Thanks much, Regards, Michael

    PS:   Here's a look at what's happening when I tried using State Tracker... and something to compare actual position at the end of the Offset move, and the start of the random sea curve:

    https://www.youtube.com/embed/BdpvC1yyKxU?rel=0&controls=0&showinfo=0

      

      59274b30c2a96_Ladderworkingclunk_009.jpg

    RSStart is the variable that powers the Random Sea ST program, and the SyncMoveAbsolute fb that drives the motor.  Cycle time is 1ms. 

    Probably would be quieter if I could 500us .. but the NJ is only a 101-1000

               592754f86b082_Ladderworkingclunk_014.thu

       59274b8513916_Ladderworkingclunk_011.jpg

    FYI... Delta Motion's RMC75E Motion Controller can make the Random Sea using LinMot's B1100-VF drive .. as quiet as a mouse.  But then, I think that controller has a cycle time of 1us!  

    Wondering if there's a problem with Direction or BufferMode:

       592751bb6770c_Ladderworkingclunk_013.jpg

    _emc_Direction#_mcNoDirection or _eMC_Buffer_Mode#_mcAborting ???? 

    Thanks for any ideas on the "Clunk" ... I may have to live with the "singing" ... sniff!  .... or use a Delta Motion Motion Controller ..

     

     

     


  7. Even more UPDATE..    I've managed to acquire a LinMot DS XC drive (CoE402)

    Incredible as it might seem, the Omron NJ can create an infinitely long "Random Sea" position curve using the Drive as a slave:

                            59239a6cca6a9_plot1ms.jpg.fa1c07c769f037

    I am not configuring the drive for Streaming Mode .. It is configured "Motion Command Interface" as a typical slave .. like the Omron G5 Servo motor.

    However I'm having a small problem when that offset ramp reaches 50mm, and the curve starts at 50 and slowly builds to full height..  there is a "jump" at that point..which will become a thread soon, if I can't fix it... :-)

     


  8. UPDATE...The LinMot drive C1250-DS-XC is working well connected to the NJ's EtherCAT port..  Basic power-on, homing and move operations are working using the Sysmac FB's.

    The big test is Position data Streaming ... with the MC_SyncMoveAbsolute FB ... Working on it ... :-)


  9. WOOT! .....    I tried it (unchecked Do not transfer the EtherNet/IP connection settings ) .. and it worked!   then came back to the forum to tell you... and you had already replied ...

    That's a great suggestion.. "Transfer FROM Controller"  Will do that in the future... Life has meaning again.

    Now off to try Streaming... which will use your brilliant sine wave summing Structured text program with MC_SyncMoveAbsolute  FB

    To be continued ...


  10. Hi ... Thanks again .. I did look there.  Nothing left.  and the "Transfer to Controller" button is greyed out... not available.

    Is it possible that when I synchronized this new project ... the new (empty: tag sets: 0/32 & Tags 0/256) didn't sync because the little check box window:  

    Do not transfer the EtherNet/IP connection settings ….  My transfer had that box “checked"   .. which would suggest the old settings, from the previous program might still be in there?

    5917261fe7718_ToolTagconfig.jpg.205dcb2c59172624c9189_ToolTagconfig_002.jpg.0d31


  11. I just loaded a demo program from LinMot for E/CAT control of one of their drives.   It's quite simple,  it shows various ways of power on, homing, and a move for their linear motor.  it included 3 ladder programs, and 2 structured text programs as examples.   I selected one ladder, and deleted the other 4 (there would have been serious errors and warnings if the full example program had been installed)

    Here it is:    http://download.linmot.com/plc_lib/preliminary/Omron/LinMot_Demo4SysmacNJ_prjDS402.smc2

    I installed this program into the NJ, and discovered only the following internal & external variables:

    Internal_Variables_1.jpg.6de328718e7a497

    Internal_Variables_2.jpg.a1f0d4e04578b6b

     

    External_Variables_01.jpg.2718d0871c2878

    As you can see at the top (internals) the main command variables (cmdPowerDS, cmdDriveHomeDS & cmdMoveDS) initiate the critical first important functions...yet they are not Global Variables, and no reference was made to managing them via digital I/O's or HMI    It's one of those "examples" where if you don't understand it, you should be doing something else with your life.. :-)

    There is an instruction of sorts provided by LinMot:

    0185-1120-E_0V6_AN_PLC_Commissioning_CoE-DS402.pdf

    All of this is provided for a "Big Picture" of what's going on...   previously there was a project with this NJ where I attempted to stream position data via the E/IP port to a LinMot E/IP drive (there are posts about it on this forum) .. that attempt, in spite of helpful suggestions from Forum members, ... failed.  (Members were correct in their skepticism that it wouldn't work)

    After synchronizing and installing this new project, in which the drive is connected to the E/CAT port, and the HMI and a E/IP switch is connected to the E/IP port.. synchronization is achieved using E/IP with a hub... and works fine... sorta of.

    There is a Net error ..blinking red LED on the E/IP port, and a minor fault red blinking on the NJ statue LED's:

     minor fault, reported as:  Ethernet/IP - CIP  event code 0x34270000

    "Tag name resolution error"

    this a mystery  .. there are no tags in this program (tho there were some in the previous program which used the E/IP network to manage a LinMot drive (unsuccessfully for streaming .. but worked well for everything else desired... power on, home, moves, jog .. etc)

    3 causes were listed:

    (1)The size of the network variable is different from the tag settings.

    (2) The I/O direction set for a tag data link and the I/O direction of the controller variable do not mach

    (3) There are no network variables for the controller tag settings.

    Does something need to be reset to factory specs that I don't know about?

    Is this a problem caused by the previous program?

    By the way .. I can manually force those three internal variables true by going on line .. the linear motor powers up, homes and moves in a cyclic sine wave 50mm ..  So, I made the 3 variables "Global" , and verified they were in the CPU's variable list, and added some buttons to the HMI Page .. an' the buttons had no effect ... so far, the HMI cannot control this example program ..

    is that because of the Tag resolution error?

     


  12. I would like to verify that connectivity will not be an issue with a non-Omron EtherCAT drive ... especially in the area of streaming position data.   Does anyone here know how to do that?

    Specifically .. the compatibility between Omron's NJ101-1000, ver. 1.0,  and the LinMot, EtherCAT CoE402 drive: C1250-DS-XC      A lot of people think it will work, or "should work" ... :-)

    But the failure of the NJ to stream position data via E/IP to a LinMot Ethernet/IP drive designed to receive streaming over E/IP (Rockwell' Allen Bradley PLC can do it)  ... has caused some concern .... I would like to be sure that these devices are compatible.    Thanks much....


  13. Hi  MotionControl.CAT ... Thanks much for your info..  I have quite a love for LinMot drives, and when I discovered the NJ, I just had to find out if they would work well together.

    It looks like the E/IP port is useful for simple tag based applications using the LinMot linear motor.  The only reason I wanted to use the E/IP port for streaming position data... is because it was there, and I had an E/IP drive. (which is designed for streaming via E/IP) 

    You aren't the first to try and pound some sense into my desire to answer that initial NJ/LinMot/EIP streaming question.  But, In my defense, Rockwell (Allen Bradley) has managed to do it using some clever Function Block and the drive's EDS file.. (it's beyond my limited ability to grasp .. sadly, I'm quite green when it comes to this technology)

    I am aware of Tsunagi Labs .. and, it was suggested that I apply for an opinion from them.   However, I felt this E/IP thing didn't merit that level of attention by Omron.  I will continue to investigate the NJ's EtherCAT compatibility with the LinMot "DS402" drive  (C1250-DS-XC ..their model no.)     My use requirements are very reasonable, and not demanding in accuracy ... I'm just trying to make waves in a demonstration tank for science and educational purposes.  However, the waves are mathematically designed to model the real ocean.

    Your  input is much appreciated.


  14. 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.


  15. 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. 

     

     


  16. 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.....


  17. 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... :-)

     


  18. 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...


  19. Hi... It's beginning to look like the the answer to the question "Can the NJ stream position data to a E/IP LinMot Drive" .. is NO    The NJ, using Ethernet/IP, can not produce Tag based data in constant cycles (which LinMot requires for streaming)  ...  CIP messaging doesn't look possible either.   However, over EtherCAT, the cyclic position data is constant, at 1ms, 2,ms or 4ms (with my NJ101-1000)  all within the range for LinMot streaming ... so they say... :-)

    So now, I'm looking at using the EtherCAT port and the LinMot Drive C1250-DS .. an EtherCAT drive.. LinMot claims the drive will act as an Axis slave, just like Omron's G5 series motors. Which really work well when streamed with position data...

    Has anyone ever used a EtherCAT LinMot drive with the NJ successfully?     Thanks much, Regards, Michael


  20. 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.