Hi. What controller do you use? It looks like a bug in robot firmware.
Anyway you can download JOB back from robot to USB and check that the original JOB and downloaded are the same.
Also you can try to upload JOBs by FTP
Hi. What controller do you use? It looks like a bug in robot firmware.
Anyway you can download JOB back from robot to USB and check that the original JOB and downloaded are the same.
Also you can try to upload JOBs by FTP
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:
/JOB
//NAME MY_JOB
//POS
///NPOS 7,0,7,0,0,0
///TOOL 20
///POSTYPE PULSE
///PULSE
C00000=-86269,13722,-44315,122000,76258,-48108
C00001=-83357,11587,-51577,120611,72095,-46775
C00002=-84602,14382,-49930,120461,73084,-46632
C00003=-84157,12836,-50613,120433,73299,-46966
C00004=-82719,9671,-50704,121181,71913,-48303
C00005=-81951,8424,-47597,121815,73368,-49688
C00006=-83951,8524,-47597,121815,73368,-49688
EC00000=287484,82138
EC00001=287484,82138
EC00002=287483,82137
EC00003=287483,87137
EC00004=287484,90159
EC00005=287484,106202
EC00006=287484,122245
//INST
///DATE 2022/11/17 17:09
///ATTR SC,RW
///GROUP1 RB1
///GROUP2 ST1
NOP
SMOVL C00000 V=50.0 PL=0 +MOVJ EC00000 VJ=100.00
SREFP 1 C00001 +REFP EC00001
SREFP 2 C00002 +REFP EC00002
ARCON
SWVON WEV#(1)
SMOVL C00003 V=3.8 +MOVJ EC00003 VJ=100.00
SMOVL C00004 V=3.8 +MOVJ EC00004 VJ=100.00
SMOVL C00005 V=3.8 +MOVJ EC00005 VJ=100.00
SWVOF
ARCOF
SMOVL C00006 V=50.0 PL=0 +MOVJ EC00006 VJ=100.00
END
Display More
Also you can use Motoplus (paid option) API: mpConvCartPosToAxes
Also check job syntax and line endings. It should be \r\n
Hello.
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!
.PROGRAM my_sub.pc (.$arg)
IF .arg == "123" THEN
; do smth
ELSE
; do smth
END
.END
.PROGRAM main.pc
TIMER(1) = 0
CALL ($ENCODE(123))
.call_time = TIMER(1)
PRINT "Call time =", .call_time
.END
Display More
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?
Hello.
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:
then I call it from two background programs:
.PROGRAM main.pc ()
WHILE TRUE DO
IF TASK (1002) <> 1 THEN
PCEXECUTE 2:program1.pc
END
IF TASK (1003) <> 1 THEN
PCEXECUTE 3:program2.pc
END
TWAIT 5.0
END
.END
Display More
each program1.pc and program2.pc calls LOG.pc in infinite loops:
.PROGRAM program1.pc ()
WHILE TRUE DO
CALL LOG.pc ("program1")
TWAIT 0.5
END
.END
.PROGRAM program2.pc ()
WHILE TRUE DO
CALL LOG.pc ("program2")
TWAIT 0.5
END
.END
Display More
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
Hello
Maybe somebody knows whats is the maximum file size of JBI file and maximum number of points for DX200 and YRC1000 controllers ?
Fixed after firmware update to 4.2
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
so, what about this hack: connect to CN105 to CPU board (10.0.0.2) and upload application via FTP ? Then reboot controller via Telnet
Hmm...I found in "YRC1000 OPTIONS INSTRUCTIONS User's Manual For New Language Environment MotoPlus":
QuoteDisplay More8.4 Online Download
A function which downloads the application from MotoPlusIDE to the robot
controller.
Loading the application is usually performed in the maintenance mode,
however, this function allows the application to load in the online mode.
Since this function omits the time and effort required for restarting the
maintenance mode, the operating time can be reduced when debugging
the application. A USB memory is required when using this function.
but it seems this is only for debugging and is not sitable for deploy
Hello
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...
Is there a document with description for all parameters DX200?
Maintance manual, CIO and others contains description for some parameters and description is not detailed
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
MP_USR_VAR_INFO date_var;
memset(&date_var, 0, sizeof(MP_USR_VAR_INFO));
date_var.var_type = MP_VAR_I;
// put day to the I001
date_var.var_no = 1;
date_var.val.i = *day;
mpPutUserVars(&date_var);
// put month to the I002
date_var.var_no = 2;
date_var.val.i = *month;
mpPutUserVars(&date_var);
// put year to the I003
date_var.var_no = 3;
date_var.val.i = *year;
mpPutUserVars(&date_var);
Display More
I made some requirements for motoplus application configuration file:
1. Remote editing (FTP for example)
2. Prohibit or complicate the accidental deletion of this configuration file
3. Useful file format with comments/understandable variable names. I think json is ideal
I found one solution: create a JOB that will write variables, like this:
and then from motoplus app read this variables
thanks, it works now!