Posts by elvicash

    Rambling question in reply while we are talking Kawasaki arrays. Lets say I am passing arguments into a sub routine program is it possible to pass an entire array into a subroutine or not. If it is possible how do you define the parameters to be an array and how do you use that argument in the subroutine.

    If I am passing postions or reals I have to force the type when I call the sub routine for a position variable (& or #) but not for the real type. Then when I use that positional argument in the sub-routine I only use the arguments name with . infront of it but do notuse the & or # but the & or # are required in the definition.


    I know I can pass a single element of an array but would like to pass an entire array. If it is possible to pass arrays I would expect the caller would have to also pass the max element num or only use predined sizes. The programmer can deal with that but is it possible to pass a reference to an entire arrray to a subroutine.


    In the snippet below I would like to pass the 6 element array of reals rthis_xyz[0-5] for now that array is global.



    Definition

    x.findxyzminmax(.&xcheckpos,.firstpos)


    Calling

    CALL x.findxyzminmax(&xMypos,TRUE)


    Using i.e. inside the routine

    .PROGRAM x.findxyzminmax(.&xcheckpos,.firstpos)

    ;I would like to use a passed in array right here to hold the 6 real values from the position returned by this DECOMPOSE......

    DECOMPOSE rthis_xyz[0] = .xcheckpos


    IF (.firstpos==TRUE) THEN

    ;Do FirstPos TRUE stuff here

    ELSE

    ;Do FirstPos FALSE stuff here

    .END

    I have a Kawasaki robot and am running the terminal. My issue is I am trying to remove multiple dimension arrays from my controller. I have had success removing the the single array using the DELETE/L MY_ARRAY[] syntax but this does not remove 2 and 3 dimensional arrays. There is no longer any AS code referring to these arrays.

    Trying to clean up our robot, your help is much appreciated

    Here is a list of the Facility Code numbers for Fanuc Errors.

    Fanuc Error Facility Codes

    Facility Name - Facility Code Number - Description

    SRIO 1 Serial driver

    FILE 2 File system

    PROG 3 Interpreter

    COND 4 Condition handler

    ELOG 5 Error logger

    MCTL 6 Motion control manager

    MEMO 7 Memory manager

    OPIF 8 Operator interface

    TPIF 9 Teach pendant user interface

    FLPY 10 Serial floppy disk system

    SRVO 11 FLTR&SERVO in motion sub-system

    INTP 12 Interpreter errors

    PRIO 13 Digital I/O subsystem

    TPAX 14 Aux task/subsystem

    MOTN 15 Motion subsystem

    VARS 16 Variable manager subsystem

    ROUT 17 Interpreter built-ins

    WNDW 18 Window I/O manager

    JOG 19 Manual jog task

    APPL 20 Application manager

    LANG 21 Language utility

    SPOT 23 Spot application

    SYST 24 Facility code of system

    SCIO 25 Syntax checking routine for teach pendant programs

    PALT 26 Pallet

    UAPL 27 UAMR

    VISN 32 Vision system

    DICT 33 Dictionary processor

    TRAN 35 Translator

    TKSP 36 Translator/KCL scanner/parser

    KT 37 KAREL tools

    APSH 38 Application shell

    CMND 42 Command processor

    RPSM 43 Root pass memorization

    LNTK 44 Line tracking

    WEAV 45 Weaving

    TCPP 46 TCP speed prediction

    TAST 47 Through-arc seam tracking

    MUPS 48 Multi-pass motion

    MIGE 49 MIG-Eye tracking

    LSW 50 Laser welding

    SEAL 51 Sealing

    PAIN 52 Paint application errors

    ARC 53 Arc welding

    TRAK 54 TRACK softpart

    CMCC 55 CMC softpart

    SP 56 Softparts utility loader

    MACR 57 MACRO option

    SENS 58 Sensor interface

    COMP 59 Computer interface

    THSR 60 Touch sensing

    DJOG 64 Detached jog

    OPTN 65 Option installation

    Used by the Forms Manager and there is a USER2 screen on both the TP and on the CRT. Look in the Karel manual, you will have to use the forms compressor and then use the constant files in your Karel program. Very powerful functionality if you need an interactive display.

    Hi PDL - If you plug a usb keyboard into the TP USB port you can use it for ASCII entry. To do so go into entry mode then go down to to options/keyboard at the bottom of entry modes. When in keyboard mode you type text like for a comment or a label. But that is not what I am talking about.


    I want to see all of the Fanuc screens on a terminal like a VT220 TELNET client serial or ethernet. This mode is the same sort of mode as when you had the full sized integrated monitor/keyboard on the controller cabinet these were available on the RH/RJ/RJ2/RJ3 controller , the user had a access to KCL and also to all the other screens including the CRT USER2 screen. I am making up a serial cable for the JD17 port and will try this over serial with P3: setup as a KCL/CRT. I expect this will work but was hoping to have an ethernet based terminal versus serial much easier for connectivity and distance.


    Currently I can do a KCL only over Ethernet the MENU key does not work in my VT220 emulator so I cannot access any other screen.


    Anyone who knows the CRT/Keyboard option J535 and has info that would be appreciated.

    Looking for info on using the CRT Keyboard over Ethernet. I have new R30 and would like to navigate the menus/windows via a terminal program versus using a browser. I have done this in the past on RJ3 controllers but have not been able to get to the menus to work in this new controller. I am using PowerTerm over TELNET. KCL comes up and is very fast, but I have not been able to remap the keys so the F10 brings up the MENU mini-window. If anyone is doing this over Ethernet I would be very interested in the setup. I think the browser CGTP option will soon be turned on (waiting on PAC codes) but I would rather use a terminal and operate via keystrokes versus having to use the mouse.


    Thanks in advance.

    Thanks for the reply Kwakaisaki I am very familiar with the AS TOOL and realize what it is and also I keep QTOOLS set to OFF. I did not realize I could enter a trans and teach a tool to it in the Auto Tool menu so I had set a tool to TOOL5 and then made a point on the terminal and set the same values to it but let those values int he TOOL5. I understand TOOL5 is used for block programming primarily. Appreciate you writing back



    I see you wrote something about signals specifically

    Dedicated signals can be adjusted via the terminal using: DEFSIG INPUT or DEFSIG OUTPUT


    what do you mean by that exactly any reply is much appreciated


    By the way my primary experience is Fanuc and I see you are working on those now I would be glad to offer you some input if you have a question PM me if you would like to talk.

    I needed a pointer tool to teach some trans positions for a function so I did that using TOOL5 and got my new routine to work no problem. I ran some parts and thought it was all good but after using this robot to do some limited production successfully the robot was rebooted and then it came up with a CUBIC-S mismatch due to TOOL5 not matching the factory NULL values. I could have setup CUBIC-S to match these TOOL5 values but there only needed temporarily so I wanted to just set them back to NULL.


    What I would like to know is how to change system variables and settings from a Terminal window like to change Auto Tool Coordinates - TOOL5 and edit it back to nill values from the terminal. I wound up making a quick AS file and loading that into the controller like the following.


    .AUXDATA

    TOOL5 0.000 0.000 0.000 0.000 0.000 0.000

    DFF5 20.000 0.000 0.000 0.000

    .END


    I would have rather typed it in from a temrinal window. If I do a point TOOL5 or a TYPE TOOL5 it is unknown but I would think there has to be a way to see and to edit this system setting from the terminal. On a base Kawasaki system I could make such an edit from the menus R-405 or Auto Tool Coordinatees tool 5 window they have components entry or teach method. I am on a system where you can only teach the tool so I could no edit it there. so that was out. Perhaps I want to assign TOOL5 to a TRANS var for now I have to copy it out and type it in to my TRANS.


    Another example is if I type DEFSIG I can see many system signal configuration settings but I cannot edit or change them from the terminal I have to use a menu and a screen to do such but think access to these from the terminal is probable possible. So in this case I can view them but not change them.


    Thanks for your help if you know how to access/edit these settings..... Looking to learn more on the Kawasaki

    I saw this a while ago and decided I wanted a scrolling display. Mine posts the new message string on the top line and pushes down so it scrolls down rather than scrolling up. You can post 1,2,3 or 4 lines at a time and also do a clear. If you wanted more than 4 lines you could have 2 screen displays. There is test routine and an interface panel. I pass in the strings assign them to global vars and manipulate them based on the called routine. This was done on an E controller.

    Thanks guys, I appreciate the input. I found I cam manipulate the Repeat_Once or Repeat_Cont from the drop down where the main override is set there is a step and repeat setting but this is only in effect or appears to be when the system is repeat mode on the controller key_switch and the pendant key_switch are set ready for auto mode then I get a box to the left of the override replacing the jog mode icon and in that box it shows the values of the repeat and step.


    If I am trying to do a complex function when I need line be line stepping I will use the STEP command from the terminal window.

    When I step through AS code on my lab robot in check once it seems to only step from move to move and flys right through any non motion code. I would like to know how to set this so it steps through each line of code whether it is motion or some other type of instruction like A = 1 Is this possible to step through each line of code.



    Similiar question when I prime the stack and run my program it seems i have it when the entire program is set to repeat automatrically and other times the entire program runs and it stops at the end of the final line. What controls looping the program automaticall and or stopping at the end after it has ran once.


    Thanks


    elvicash in Indy

    Eureka - I got this to work today I have been battling it for multiple weeks. Epson does not easily support positional robot math. To get this to work I had to do 3 translate rotate matrix equations and then calculate a new frame/local dynamically per pick and I also have copy the original taught taught position into a new position so it has the new local number. This was to do a Fixed Camera part pick - What I would call Vision with Frame Offset. In my method I calculate a new frame per pick and always go to the same position I went to when the part was initially part.


    My pick sequence looks like the following
    ------------------------------------------------------------------------------


    'Move clear of Camera
    Go P10_App_Pick

    If SnapCognex = True Then
    'We had a good snap and find
    Print "Cognex Success - Style ", iTempStyle


    Else
    Print "Cognex Failed - Cannot pick part"
    Exit Function
    EndIf

    'Calculate the runtime offset (2 matrix operations)
    ' Part Diff = RUN_LOC : (INV (GOLD_LOC))
    Call Calc_Runtime_Offset

    Create Local 6 = Local 5 : Part_Diff (1 matrix operation)
    Call Calc_Runtime_Local

    Tool 1

    'Copy P5 into P6 with Local 6 assigned
    P(6) = P(5) /6

    Go P6_Run_Pick +TLZ(-25)

    Move P6_Run_Pick

    Call Close_Grip

    Move P6_Run_Pick +Z(25)


    'Move clear of the camera
    Go P10_App_Pick



    -------------------------------------------------------------------------------


    If anyone out there has an easier way to do Epson guidance with a Cognex camera I would be interested in sharing information.


    If anyone is reading this I would suggest buying Epson Vision which has canned methods for guidance.

    I have had limited success with the code I posted that method will not work for high accuracy it does roughly track the part XY and some small rotation. I feel I have to return to finishing the Offset function I was initially trying to roll out. I need to calculate the difference between the original part location and the runtime part location and add that difference to the local. was trying to add the calculated difference to the taught part pos which did not work. What I am trying to accomplish is the following.


    Tool 1 Camera calibrated to Local 5 - snap / find store part location X,Y,U save that info teach pick position P(10) with local 5


    Build up local 6 by the following Loc 6 = Local 5 : (Vis_Run_Part_Loc : INV (Vis_Orig_Part_Loc ))


    P(11) = P(10) except its Local 6 relative all components XYZUVW match P10


    Move to P(11)

    Fabian do you teach a tool and move to the points retuirned by the vision system?


    How does that work if you want a custom pick location do you just move the point of interest in the vision system?



    ---------------------------------


    As to my system


    I attached a pointer to the robot taught a tool. Made that tool active. Placed a grid under the camera, calibrated the camera. Taught a frame /local to the grid. Robot is getting world x,y,r values back from the camera. So that is all working.


    I actually want to snap the camera before I pick it the first time and then jog the robot to where I want to pick that initial gold part. Teach the pick location. Then as I snap and find at run time I want to use the orig vision golden location and taught robot pick location to take the current run vision location and return/calculate a run robot pick location.


    I do not see any sort of positional offset function in the Epson environment from code I currently have this line
    Move P5_CurrStyle_Pick +X(dRuntime_Offset(LOC_X_VAL)) +Y(dRuntime_Offset(LOC_Y_VAL)) +U(dRuntime_Offset(LOC_U_VAL))


    which just adds to to those components of P5 that is not what I want.


    What I would like to achieve is a LINEAR OFFSET ROTATE Transform so I can manipulate X,Y,Z,U,V,W positions relative to each other.


    Such as P10 = P5 : P12


    Epson says they provide that sort of functionality internal to their system but it is not a part of the spel system. I have not seen an Epson vision manual so I do nto know what is actually available.


    If anyone has done anything more than adding or subtracting to a positions X,Y,U from a point I would appreciate your input.

    Looking for help with an Epson robot with Cognex vision. I have the system calibrated and communicating through a PLC. I am wondering if anyone has wrote an offset function and an inverse function. This posiition math functionality is probably available if the system has Epson vision but without it there does not seem to be anything in the system to do positional math. I am working on it currently using trig functions to do translate/rotate transforms.


    I am trying to achieve the following


    RunTimePickPos = (RunTimePartPos : INV(GoldPart)) : GoldPickPos


    This is what the basic math would be on a Fanuc Karel system. The : is a positional offset operator and the INV is function that inverts a position. If anyone has done a similiar system on an Epson and used a different approach I would appreciate hearing from you as well.
    Any thoughts/code would be much appreciated.


    Thanks Elvicash


    Dam......just beat me.


    Yes, I was going to suggest the ZENATELNET switch.
    I have experienced this many times with American spec controllers (never seen this on European Controllers).
    - Is yours American Spec by any chance then?



    Yes I have the American Spec and the controller was configured per a large automotive company order, we needed a robot quickly and they pulled this one for us off the stock on the floor. I think the standard Americna version does not require the ZENATELNET ON command.


    Also this has to be entered after any reboot, The change can be made permanent but it will require a Kawasaki tech to make that change.

Advertising from our partners