Jump to content
OMRON Forums

wbzhong

Members
  • Posts

    21
  • Joined

  • Last visited

Posts posted by wbzhong

  1. On 11/20/2023 at 6:25 PM, Alex Anikstein said:

    To add on a tiny bit--

     

    While it is allowed, it is generally considered bad practice to have short words like that (reset, status, etc.) as #defines or variable names.

    Any string which is either a command or part of a command (for instance, a variable named "AbsPos" would be considered part of Motor[x].AbsPosSf) should be avoided.

    A better option would be to name your parameter "ResetVar" if it is a variable or "_reset" if it is not.

    This way it is similar, but unique.

    Thanks for the comments. It turned out that I named a PLC "reset", and this PLC was assigned an ID of 3 by the IDE.

  2. On 11/15/2023 at 2:24 PM, leandro.martins said:

    It might be related with the issue described in:
     


    My suggestion would be: try to query  Sys.RtIntErrorCtr to check its value, then set it to 0, and check it again.
    If possible repeat the same steps without using the IDE (ssh'ing the controller, and opening a gpascii connection)


    If the error is not recurrent, then it is possible to include in the PLC that runs after a power-on/reset, setting it to 0.

    Thanks for the reply. We set Sys.RtIntErrorCtr to 0, and then reboot the system, the error can be cleared. I am not sure if this is due to the EtherCAT clock configurations.

  3. The CK3M reports the Sys.RtIntErrorCtr error on startup. This error cannot be cleared with $$$***.

    The software manual doesn't discuss the possible cause for this error.

    Please advice on how to clear it, and what are the possible reasons?

    Thanks!

     

    image.png.64a5311ab014675d4b8834a78aa74be0.png

  4. We have used two encoders for a single axis (a higer res. encoder for positioning mode, low res. for velocity mode). There two encoders are connected to two channels of ACC24E3. We used a PLC to switch the motor feedback.

    Renishaw has high-precision rotary encoder that uses two reader head but outputs one compensated signal.

    You will need to configure multiple Enocder Conversion Tables to process these feedback. The Motor[x].EncType does not control any function itself. You can manually set the affected parameters in PLC.

  5. Hi Raghav, the encoder feedback should be ok since you have tested the output for the whole range (when motor is not on?)

    The amplifier/motor noise is highly suspectable, it may interference with the feedback. Chekc the wiring and make sure the feedback/motor cables are properly earthed, and they are separacted in the track.

  6. Hi, you can upload the NC file to the PMAC with a FTP client (e.g. FileZilla). The destination folder should be in /var/ftp/usrflash/.

    Then, issue the following command to ininitialize the sub prog:

    // No space between -i and /var
    gpascii -i/var/ftp/usrflash/Temp/mysubprog.nc

     

    And don't forget to enclose the subprog code in the following structure:

    open subprog xxx
    <subprog code>
    return
    close

     

  7. Hi, I am using the rotary buffer to run a large program file. I found the rotary buffer does not support while loop when initializing the buffer.

    For example, run the scripts in the terminal:

    &1 open prog 0
    P0=0
    while(P0<10){
    P0+=1
    }
    close

    PMAC reports "error #31: missing }: while(P0<10){"

    However, the fixed buffer is fine.

  8. When user specifies a non-existent G/M-codes, i.e. the jump label is not defined in the G/M subprogram, PMAC will execute the command from the top of G/M subprogram.

    I can catch the error at the top, but how can I know which code does the user specified, i.e. the jump label?

  9. Thanks Steve. Initially, we would like to use S code to change the spindle command speed to any value, such as S5000. But it turns out that S code works like G/M code, the code value range is limited rather than an arbitrary value. We will find another way to implement this function.
  10. The S code subprog is called when 0 <= code value <= 1000. Otherwise it only sets Ldata.D[53], but the subprog is not called. Is it a feature or bug?

     

    Firmware: 2.4.0.180

    Coord[1].Sprog = 1004

    Subprog implementation:

    open subprog 1004

    P0 = Ldata.D[53]

    return

    close

     

    In the buffered program, commands S-1 or S1001 only updates the Coord[x].Ldata.D[53] value, but P0 is left unchanged. Commands S0 to S1000 work correctly.

  11. Hi, I have computed all the servo reference positions offline. I would like to set them as the reference position for each servo update. Can anyone help me with the following questions:

     

    1. There are hundreds of thousands of offline generated positions. How can I store it in the PMAC? and How does the servo routine access these data?

     

    2. Is this possible to call the already tunned standard servo algorithm to generate the servo output, but use the offline position as the DesPos input?

     

    Many thanks,

    Wenbin

     

    The picture illustration of my question is attached. Many thanks.

    612731866_Annotation2019-05-31074910.jpg.df7593b74e55a54b9a2bf22fa01c9a30.jpg

  12. Hi, I have computed all the servo reference positions offline. I would like to set them as the reference position for each servo update. Can anyone help me with the following questions:

     

    1. There are hundreds of thousands of offline generated positions. How can I store it in the PMAC? and How does the servo routine access these data?

     

    2. Is this possible to call the already tunned standard servo algorithm to generate the servo output, but use the offline position as the DesPos input?

     

    Many thanks,

    Wenbin

×
×
  • Create New...