Jump to content
OMRON Forums

dzrong

Members
  • Posts

    187
  • Joined

  • Last visited

Posts posted by dzrong

  1. Is it possble to control “local” motors with ARM LS1021A CPU if the Acontis EtherCAT stack is used at the same time?

    If not ,what problems will happen? I had done some test, and it seemes that can work at an 1 kHz update rate.

  2. The feedrate during a move is specified with the F command. The FRAX command is used to specify *which* axes are to be used in the feedrate calculations.

     

    example:

     

    X10 Y20 Z30 F10 //move with a feedrate of 10

    X20 Y30 Z40 F20 //move with a feedrate of 20

     

    I want to control 3 axis X,Z and C move synchronously,is't possible to limit the velocity and acceleration of Axis C?

     

    For example:

    X10 Z20 C30

  3. Hello EveryOne,

     

    I want to control 3 axis X,Z and C move synchronously,and I want to use the frax(x,z,c) to set the feedrate, but PPMAC seems not allow to do this,so how to control the speed of the three axis after some position points had been given?

     

    Thanks

  4. Hello EveryOne,

     

    Why Synchronous M Variable not changed when program is running? The M1 always remain 0. Here is the program:

     

    N1G90M1==1

    N2G1M1==2

    N3F10M1==3

    N4ta100M1==4

    N5X30M1==5

    N6Z0M1==6

    N7F1M1==7

    N8ta1M1==8

    N9ts0M1==9

    N10frax(x,z)M1==10

    N11S1000M1==11

    N12M3M1==12

    N13X30Z0M1==13

    N14X29.999Z0M1==14

    N15X29.998Z0M1==15

    N16X29.997Z0M1==16

    N17X29.996Z0M1==17

    N18X29.995Z0M1==18

    N19X29.994Z0M1==19

    N20X29.993Z0M1==20

    N21X29.992Z0M1==21

    N22X29.991Z0M1==22

    N23X29.99Z0M1==23

    N24X29.989Z0M1==24

  5. Hello EveryOne,

     

    Why my C axis run so slow,only 20 block per second,

    The unit of C is degree.

    Coord[1].AltFeedRate=1000000

    Motor[3].MaxSpeed=1000

    Coord[1].PosRollover[2]=-360

     

     

    Here is the program:

     

    &1#1->1000000X-30000000

    &1#2->1000000Z-30000000

    &1#3->C

    //

     

    open prog 4

    // --------------------User Code Goes Here------------------------

    linear

    abs

    ta 1

    ts 0

    tm 1

     

    C 0.01

    C 0.02

    C 0.03

    C 0.04

    C 0.05

    C 0.06

    C 0.07

    C 0.08

    C 0.09

    C 0.1

    C 0.11

    C 0.12

    C 0.13

    C 0.14

    C 0.15

    C 0.16

    C 0.17

    C 0.18

    C 0.19

    C 0.2

    C 0.21

    C 0.22

    C 0.23

    C 0.24

    C 0.25

    C 0.26

    C 0.27

    C 0.28

    C 0.29

    C 0.3

    C 0.31

    C 0.32

    C 0.33

    C 0.34

    C 0.35

    C 0.36

    C 0.37

    C 0.38

    C 0.39

    C 0.4

    C 0.41

    C 0.42

    C 0.43

    C 0.44

    C 0.45

    C 0.46

    C 0.47

    C 0.48

    C 0.49

    C 0.5

    C 0.51

    C 0.52

    C 0.53

    C 0.54

    C 0.55

    C 0.56

    C 0.57

    C 0.58

    C 0.59

    C 0.6

    C 0.61

    C 0.62

    C 0.63

    C 0.64

    C 0.65

    C 0.66

    C 0.67

    C 0.68

    C 0.69

    C 0.7

    C 0.71

    C 0.72

    C 0.73

    C 0.74

    C 0.75

    C 0.76

    C 0.77

    C 0.78

    C 0.79

    C 0.8

    C 0.81

    C 0.82

    C 0.83

    C 0.84

    C 0.85

    C 0.86

    C 0.87

    C 0.88

    C 0.89

    C 0.9

    C 0.91

    C 0.92

    C 0.93

    C 0.94

    C 0.95

    C 0.96

    C 0.97

    C 0.98

    C 0.99

    C 1

     

    close

  6. Hello Everyone,

     

    I'm using ACC84E with PPmac,and want to get the abs position from an Endat2.2 with incremental encoder,The type of Linear grating is LIP211,0.03125nm per count(LSB).A 36($24)-bit encoder from HEIDENHAIN.

     

    Now the position can be read correctly throw Acc84E[1].Chan[0].SerialEncDataA and Acc84E[1].Chan[0].SerialEncDataB after some setting like:

    Acc84E[1].SerialEncCtrl=$002003;

    Acc84E[1].Chan[0].SerialEncCmd =$071424;

     

    But I can't get a valid data of the RM_bit ,it's always zero even I move the motor go throw the whole trip by hand. Of course proper command codes had been send before,like:

    Acc84E[1].Chan[0].SerialEncCmd = $381424

    Acc84E[1].Chan[0].SerialEncCmd = $421424

     

    Because RM_bit is one bit of Acc84E[1].Chan[0].SerialEncDataC.SerialEncDataC is always zero,so RM_bit should be zero.

     

    And the ACC84E very new,should be the latest firmware to support the function.

     

    Does Anyone had using the Encoder like me? Can you give some suggestion?

  7. This can be done although you need one of the more recent versions of the IDE which allows the password to be changed in the IDE from the factory default.

     

    Do you mean I can change password by typing the new password in the "Password" space,and Connect directly,and then the new password will be auto changed?

  8. Hello,

     

    I have a big program about 1000000 block in it,and I want to download it to the PPmac,

    but an error:out of memory happenned.If the program size very small,everything works well.

     

    My question is that,we know PPmac have very big memory about 1G,why 30M zise block cause a "Out of memory"?

     

    Thanks.

  9. Hello CharlesP,

     

    I want to get position information of Clipper though DPRAM.

    When enabled DPRAM foreground function,PMAC will auto copy the motor information to DPRAM,including position and so on.

    After that,I want to get the Position information though DPRAM by PC,in the PC side Visual Studdio C# was be used.

    So,after "using PCOMMSERVERLib" in the C#, Pmac.DPRGetLong(m_nDevice, 156, out i_x, out dpsucess) can get the DPRAM memory data,'156' is the host PC Address 0x009C which is the Motor net actual position of Memory Map.Of course the host PC Address 0x00A0 also include part information of Motor net actual position.

     

    After I get both 0x009C and 0x00A0 data,the Motor net actual position will be calculated,but how to calculate?

  10. How to get position using Turbo DPRAM?

     

    I want to get position through DPRAM by the momery 0x009C of the motor 1,

    DP:$060xxx-$060xxx+1 Motor net actual position (1/[ixx08*32] cts)

     

    In the C#:

    Pmac.DPRGetLong(m_nDevice, 156, out i_x, out dpsucess);

    Pmac.DPRGetLong(m_nDevice, 160, out i_x_h, out dpsucess);

    I get position data in i_x and i_x_h, but how to get position by the i_x_h and i_x?

     

    Thanks

  11. The 0x13/ 0x11 /0x0D is the apecial character of Linux,0x13 is Enter,0x11 is ^Q,ix13 ^s.

    So must disable the system function of this characters. This may be done though setting options.c_lflag. But I can get it out.

     

    If you can help me to try that,you can send that character using serial port,and recieve it itself(only connect the serail port send pin and recieve pin),if 0x13/ 0x11 /0x0D can be sent and recieve correctly,we win!

     

    I change a little code of the examle, so the serial port can send Hex,

    //static const char *SampleCommand = "ver\r";

    static const char SampleCommand[7] = {0X3C ,0X13 ,0X11 ,0X0D ,0X03 ,0X4B ,0X0D};

     

    char msg[EXAMPLE_CODE_RESPONSE_MAX];

    int ret;

     

    // Initialize the serial port.

    // "/dev/ttyUSB0" is where Power PMAC maps the USB-to-Serial device

    // The second number is the baud rate. Here are some example baud rates:

    // B9600: 9600 baud

    // B38400: 38400 baud (the default for talking to a Turbo PMAC)

    // B115200: 115200 baud (the default for talking to a host PC or to another Power PMAC)

     

    SerialPort = OpenSerialPort(Port,B9600); //rdz

    // Change your baud rate to what you need. To talk to Turbo PMAC, use 38400.

    // Note: If you want to use this to talk to Turbo PMAC, I1 should be set to 1 on the PMAC to disable CS handshaking

    // Otherwise, Turbo will wait until it gets the CS signal to send characters

     

    //Check return code to see if the port opened properly.

    if(SerialPort < 0)

    {

    Send(1, "Problem opening port!");

    return SerialPort;

    } else printf("Serial port opened properly.\n");

     

    //Write out the command to read display on meter...

    //ret = write(SerialPort, SampleCommand, strlen(SampleCommand));

    ret = write(SerialPort, SampleCommand, 7);

     

     

    thought P var,we can get the recieve value

    char buf;

    int i,ret;

     

    if(FileDescriptor < 1)

    printf("Trying to Read a serial port with invalid file descriptor.");

     

    i=0;

     

    double StartTime = GetTimeSec();

     

    while((GetTimeSec()-StartTime) < TimeoutSeconds)

    {

    ret = read(FileDescriptor, &buf, 1);

    pshm->P[1000+i]=buf;

     

    If p1001 can be 0x13, my problem is solved.

×
×
  • Create New...