Posts by quarz

    Hi to all.

    Need to detect short pulse, for example 4 ms. With KAREL i have such ways:

    * repeat...until

    * wait

    * global condition

    I suppose that repeat-until is the slowest method. In Global condition i can set $SCAN_TIME=1 to check my di every millisecond. In Wait instruction there is no arg which set how often condition is checked. So, which is faaster - Global condition with scan_time=1 ot WAIT instruction ?

    Hi all.

    I use coordinated motion R1+S1 for welding with weaving on positioner. I always use Reference points and set them according with documentation (REFP1 on the wall, REFP2 along the direction of travel). But sometimes have a problem with weaving angle. For one seam it is OK, for another seam - wrong (rotated 90 deg). Looks like it depends on positioner orientation.

    I didn't find any documentation for Reference points for weaving with coordinated motion.

    My typical Job:


    I wrote a program which communicate with host computer via TCP/IP, receive commands and execute them. I noticed that AS execution is too slow. String operation (encode, val) are also too slow. Calling a subroutine with some args takes more than 10 milliseconds.

    For example, code listed below prints 0.26. Whole 260 milliseconds, Karl, to convert int to string and call a subroutine!

    I found a solution to speed up a bit: TRACE OFF. I have tracing enabled for all programs!

    Is there other methods to accelerate AS execution ???

    Yes, I found it in AS manual.

    It's a pity that it is impossible to move common parts of code to subroutines and call them independently

    For the same reason I cannot call example subroutine TcpOpenSrv.pc from two background tasks simultaneously.

    Is this really a limitation of AS system or am I wrong?


    I have just started programming on AS.

    For example I want to create wrapper subroutines for PRINT instruction to add some additional info to log output:

    .PROGRAM LOG.pc (.$msg)
        PRINT $TIME + ": " + .$msg

    then I call it from two background programs:

    each program1.pc and program2.pc calls LOG.pc in infinite loops:

    When I start main.pc I got an error: (P1014) Cannot execute because program already in use. No = 1002.

    But why? LOG.pc does not use any global variables


    Maybe somebody knows whats is the maximum file size of JBI file and maximum number of points for DX200 and YRC1000 controllers ?

    I have a motoplus app which works correctly on DX200.

    Now I need to run it on YRC1000. I made some fixes (axes directions, checked mpGetRtc() usage) and expected that it to work the same.

    But I have a problem with "freezes". Sometimes the robot does not take targets from buffer and when the buffer is full, mpMotTargetSend returns code -16 (timeout).

    I called mpMotStart() with return code 0 before mpTargetSend, so I don't understand why interpolator does not work.

    Usually freezes appear after changing the type of movement from linear to joint and vice versa

    Hmm...I found in "YRC1000 OPTIONS INSTRUCTIONS User's Manual For New Language Environment MotoPlus":

    but it seems this is only for debugging and is not sitable for deploy


    Who knows is it possible to upload motoplus application (.out) to YRC1000 remotely using ethernet/ftp or something like this ?

    A standart way is to upload application with USB/SD card, but it is too slow. Additionally you must boot in Maintance mode...

    So, how is this written in Inform Language in any Yaskawa controller.

    This code is written in MotoPlus application ofcourse. If you want to get date from the JOB, put the date to variable :smiling_face:

Advertising from our partners