Jump to content
OMRON Forums

hibitor

Members
  • Posts

    22
  • Joined

  • Last visited

Posts posted by hibitor

  1. Does clipper card support interrupt functions? this question confused me for some time. I seek answers from product materials, want to make it clear about interrupt function.

    information come from said 'Interrupts are provided for all Windows 95/98 and NT OS'. seems that all PMAC support this function? but in 'Using the PMAC2 to interrupt the host computer',it tells PC version of the PMAC2 have a built-in programmable interrupt controller that can be used to let PMAC2 interrupt the host computer over the PC bus (I'm not very clear about meaning of PC version), and Turbo PMAC Clipper hardware reference manual doesn't talk about this topic. So I have no idea about it up to now.

  2. I had same problem,PLC0 stop running itself.Maybe 2~3 times one year.

     

    I've deployed hundreds of Turbo PMAC2 (all varieties) systems, running a PLC0 and/or PLCC0: i5=3 and have never encountered this issue.

     

     

    If not a code problem, possible H/W issue? Have you checked your CPU load while your system is running all axes and PLC0 activated?

     

    Chris

     

    Maybe it's difficulty to check the load while the system is running when this problem occurs. after all, just three times in one entire year.

    what I feel strange is :Why are the same programs run time and time again over the days, but just several times, this problem comes out?

  3. I had same problem,PLC0 stop running itself.Maybe 2~3 times one year.

     

    I've deployed hundreds of Turbo PMAC2 (all varieties) systems, running a PLC0 and/or PLCC0: i5=3 and have never encountered this issue.

     

     

    If not a code problem, possible H/W issue? Have you checked your CPU load while your system is running all axes and PLC0 activated?

     

    Chris

     

    Maybe it's difficulty to check the load while the system is running when this problem occurs. after all, just three times in one entire year.

    what I feel strange is :Why are the same programs run time and time again over the days, but just several times, this problem comes out?

  4. If this is the complete PLC0 code then I see nothing that would cause this issue.

     

    What is the purpose of the:

    /////////////////////////////////////////

    IF(M10=0)

    ENDIF

     

    Yes, it is entire code.

    Er.,the "IF(M10=0) ENDIF" is just reserved for future use, no sense at here.

    Or I should change another piece of Clipper card for a test, is it meaningful?

  5. How do you determine the PLC 0 is disabled?

     

    A "DISABLE PLC 0" or "PAUSE PLC 0" command, setting I5=0 or 2 or PMAC recieving a CONTROL-D character will stop the execution of a PLC 0. Check to see if any of these are occuring.

     

    Do other PLCs continue to run?

     

    Can you post the PLC code?

     

    Yes, this is part of a big windows software, when the PLC0 program was disabled, the software doesn't work properly, So I can see it when it occurs, then I use the 'PeWin32' to watch the state of the PLC. the state of the PLC0 is not running. But the PLC1 and PLC31's (the all others PLC's) running are ok.

    I checked the points, 'Disable' and 'PAUSE' are not used, I5=3, Controll and 'D' is not triggered at all.

    the PLC0 code is :

    /////////////////////////////////////////

    IF(M10=0)

    ENDIF

     

    IF(M12=0AND P8001=1 AND M3=0)

    P8006=72

    M3=1

    M6=1

    ENDIF

     

    IF(P8005=1ANDP8002=1ANDM10=0)

    P8002=0

    P8008=1

    P8003=65087

    M4003=M4003&P8003

    ENDIF

    ////////////////////////////////////////////

    so, what else other reasons can cause the error?

  6. Yes, I wrote a PLC0 program. make it monitor the digital inputs. But when running a long time, it was aways disabled automatically withour any foreboding. It occurs about one time a day(8 hours) on average. the whole PLC0 program is just less then 12 lines. So, anyone can give me some ideas?
  7. thank you for replies all the same, but I'm afraid that my meaning don't be clearly understood. Isx87,Isx88,Isx89 is default value, they have been overridden by TA,TS,and F in the program. So I don't worry about them too much. maybe I should describe my question like this, If there are very small length program blocks in the blended move. the length is too short that it just take very small time to over. for example, the very small time is 0.001ms exaggeratedly. Any way can prevent the speed from slowing down when over this program blocks?
  8. hi, do you encounter this problem? a very small programmed block in a movement sequence. when the movement run into this block, the speed slow down at once. sure, this caused by the minimum block time, i.e. TA. but the TA's minimum value is 0.5ms, I compute the value this small programmed block needed to keep the speed is smaller than 0.5 ms very much. how could I deal with the situation? could you give me some tips? thanks.
  9. Hi,misters.Today,I made a test of speed, In a multi-segments movement, there are a lot of short length segment. at the moment, the sx13=10 and Isx20=0, I found that the velocity is much slower then I preset. I don't change the velocity and acceleration among the segments. but the velocity is vary over the different segments in the path. I think maybe the acceleration time(TA) does it. But the F is unaltered, the velocity changes from high to low! how could I avoid this? just use different TA at the boundry of each segments? does it work? or some other more gracefully ideas can solve it?
  10. As I understand your process, you execute a RAPID move to the XY position and C-angle orientation for your starting point and tangent angle on the path. For this move, the C-angle is directly programmed, and not calculated as an arctangent.

     

    Then, with the kinematics algorithms for calculating the C-angle to be tangent to the path enabled, you start a motion program to command the XY path. The first thing that happens is that the forward kinematic algorithm is executed to calculate the starting axis positions (X, Y, and C) from the motor positions. Then, as it calculates the first programmed move, it computes the axis positions for the first segment (Isx13 time) for this move, and passes these axis positions to the inverse kinematic algorithm.

     

    It is quite common early in the development of a project for the user's forward and inverse kinematic algorithms not to be perfect inverses of each other everywhere in the workspace. If they do not match each other exactly, there will be a sudden jump at the beginning of the first move. The kinematics for tangent control of a rotary axis are especially tricky to start right, because the inverse kinematics derive three motor positions from two axis positions, which cannot be a directly invertible calculation.

     

    Our modulo operation on the PMAC has been stable for over 20 years now, without any record of complaint for accuracy, especially not one big enough to cause a noticeable jump. I would be much more concerned as to whether to the commanded end angle of the RAPID move really matches the starting tangent angle of the first path move in all cases. If it does not, you will get the jump.

     

    Yes,Curt.that's the process I did, I always feared that using the RAPID under the Axis definiation first and then change it into the control of kinematics is not a legal usage before. now by your patient reply, I'm not afraid it any more.

    I agree with you definiatly, tangent control of a rotary axis are tricky. After several days study, refer to a lot of materials such as URM and SRM etc,which relate to kinematics I can find.unfortunatly, I still don't think that I really understand it completely.I have made a lot of tests on the machine. because the movement will stop at once when the jump occured,I get the chance to check the value of the variable used in the kinematics at that time. mainly I check the variable "Mxx61","Pxx",and "Q3"(for Axis C), after the RAPID movement, I can see the data in the RAPID command, so I think I can get the angle in RAPID X(data1),Y(data2),C(data3). because I test a simple case that straight line vertically movement, the angle is 90 degree cearly same with data I found in RAPID command. As you said,this data is computed by myself through the host program. but the third motor positions at start point from two axis positions is derived from the inverse kinematics and calculated internally, so I can just look it indirectly by query the value in variable,for example Q3, and it is 90 degree too in this cases(vertical line move from bottom to top). so I have no idea about it. maybe I misunderstand some point in kinematics.could you give some tips. please permit me to append the code snippet to help explain the case.

    // first download the RAPID mode movement code

    A

    CLOSE

    UNDEFINE ALL

    &1

    #1->200.0X

    #2->200.000000Y

    #3->50.000000C

    I5150=0

    ...

    OPEN PROG 102 CLEAR

    ...

    ABS

    ABS LINEAR X430.000000 Y2399.000000 F2000.000000

    ...

     

    // second download the movement controled by kinematics

    A

    CLOSE

    UNDEFINE ALL

    &1

    #1->I

    #2->I

    #3->I

    ...

    I5113=10

    I5150=1

    OPEN PROG 102 CLEAR

    NORMAL K-1

    TA666

    TS166

    ABS LINEAR X430.000000 Y2399.000000 F2000.000000

    ...

     

     

    // forward kinematic

    &1 OPEN FORWARD

    CLEAR

    ...

    Q3=P3/Q49

    Q7=P1/Q47

    Q8=P2/Q48

    Q43=Q7

    Q44=Q8

    Q45=Q3

    Q50=Q45%(-180)

    ...

    CLOSE

     

    // inverse kinematic

    &1

    #1->I

    #2->I

    #3->I

    Q51=0.01

    &1 OPEN INVERSE

    CLEAR

    Q0=Q7-Q43

    Q41=Q8-Q44

    IF(ABS(Q0)>Q51 OR ABS(Q41)>Q51)

    Q52=ATAN2(Q41)

    ENDIF

    Q53=(Q52-Q50)%(-180)

    Q3=Q52+Q53/2

    Q3=Q52

    Q42=(Q3-Q45)%(-180)

    Q3=Q45+Q42

    P1=Q7*Q47

    P2=Q8*Q48

    P3=Q3*Q49

    Q43=Q7

    Q44=Q8

    Q45=Q3

    CLOSE

  11. The P and Q variables in PMAC are 48 bit floating-point values with a 36-bit mantissa and 12-bit exponent. The motor target position (and other position) registers are 48-bit fixed-point values, and with typical scale factors, have about 36 bits of whole-count resolution and 12 bits of fractional resolution.

     

    The 36-bit mantissa in the P and Q variables can represent count values up to 64 trillion with no loss of whole-count resolution. Very few kinematic applications have position values that get anywhere near this size. (Typically, the only types of motors that may get to this type of range are spindles or webs that run continuously, and they usually are not involved in kinematic calculations.)

     

    The conversion between the floating-point Pn motor position value you work with in your kinematics routine and the fixed-point motor target position register is done automatically by PMAC. Other than using the best possible math in your kinematics routines, there is nothing special to be done for optimal numeric resolution. Any errors from the finite resolution of these variables will be trivial (and very far below other sources of error in your application) in virtually all applications.

     

    Thanks for your kindly response,curtwilson. in face,I come across this problem just when I use the Kinematic program to control the third axis Tangent relative to the path described by two other axis.

    first I move the three axis to the specified position under the RAPID mode described by axis definition. this time, the rotary axis is toward the direction of the comming movement. then I download another program control by kinematic program that keep the third axis tangent to others into PMAC. but when execute it, there is a jump occur on the rotary motor at once sometimes(and it doesn't occur every time). I have checked the data in Mxx61,Pxx,and Qxx in the forward kinematics, it same(but a very little tolerance for example,0.000007) with the value I give it when I did in the RAPID mode movement in advance.

    So I think that maybe the tolerance in the modulo operation cause the big jump on rotary motor. If not.Is there any other factor can cause this problem? Thank you for taking the time to answer my questions.

  12. hi, there is a Gordian knot here for me. Is there a good idea to perfectly avoid the wrong effect caused by the round data when transfering the data among the 'target position register' and 'P1...P32' and 'Q1...Q9' when I develop kinematics program? thanks
  13. thanks for your answers, Sina and Gregs, a related question about this for Sina. By the foluma,I take the INT(X-(INT(X/Y)Y)) to calculate the "-11%-4" and "-3%-2.5" like this:

    because -2.5<0,-4<0, so choose foluma "INT(X-(INT(X/Y)*Y))"

    -3%-2.5

    INT(-3-(INT(-3/-2.5)*-2.5))

    INT(-3/-2.5)=INT(1.2)=?;// 1 or 2, if gets 2

    INT(-3-(2*-2.5))=2;

     

    -11/-4

    INT(-11-(INT(-11/-4)*-4))

    INT(-11/-4)=INT(2.75)=?;//2 or 3, if gets 3

    INT(-11-(3*-4))=1,not -3,

     

    if want the result to be -3,

    INT(2.75) must be 2, but if it is 2, the INT(1.2) may be 1, then,

    -3%-2.5 will gets -0.5,not 2. Is it a contradiction, or some mistakes I did?

  14. hi, can any friend can tell me how to understand the Modulo(%) operation in the turbo pmac. I try my best to grasp it by SRM and URM. but I'm failed. I don't know how does the "11%-4" gets 3, while "-11%-4" gets -3, and "3%-2.5" gets -2,while "-3%-2.5" gets 2. how does it come out? Thanks.
  15. hi,buddy.

    Now I need make use of the 'Download()' method in visual C++. The information I have got from the manual(PcommServer.doc) just as below:

    dwDevice Device number.

    filePath Path of file to download.

    bMacro Flag to parse for macros.

    bMap Flag to create a map file created from macros.

    bLog Flag to create a log file. This is the same messages as sent to the “msgp” procedure.

    bDnld Flag indicating to send final parsed file to the PMAC.

    pbSuccess Pointer to successful start of download thread

    I'm not sure I'm going to use the parameter of 'bMacro','bMap','bLog',and 'bDnld'. what values could be assigned to them?

  16. hi, a question about the words: ”phase task” and “phase-interrupt task”,”servo task” and “servo-interrupt task”, I’m confused by these notion name, I can perceive that they are not the same thing from the context of the URM, but I’m not not sure about that. Does any friend can help me to separate it. thanks
  17. hello, please to see the Condition first:

     

    HOST: Windows XP

    PMAC: Clipper Turbo PMAC2

    Programming Language: Visual C++ 6.0

    MODE: Ethernet Communication

     

    well, the condition I listed above is what I'm working with. Now I know, I can do the communication between the host and PMAC by calling GetResponseEx(). But I want to know deoes any other methods provided for this aim? such as 'Interrupt' or some like 'send' to let PMAC to notice host something occurs when it wants? thanks.

  18. Yes,after 2 years,I still have the same question with you. the SDK document in the installation,named "PcommServer document" is just inforamtion about part of the library functions! I think the document is most important component of the entire product.especially be in software product.
×
×
  • Create New...