Description
Read NC data registered on the memory in CNC.
This function reads the characters of NC data as long as it is specified by '*length'.
However, if the number of characters to read is less than the specified number by delaying CNC data process,
this function reads the characters as many as possible and then sets length' with the real number of
characters which are read in the buffer.
In case that this function cannot read at least one character, it returns EW_BUFFER, so again call this function with the same arguments.
Because importance is attached to the speed of data transfer to the CNC, in general, return of errors(EW_DATA, etc.) may be delayed. Namely, an error status may refrect the result caused by the previously executed cnc_upload3 callings. And the error status for some cnc_upload3 callings just before the finish of uploading is returned by cnc_upend3 function.
Format of input data
NC data which is read from CNC is the string composed of ASCII characters as following format.
% LF Block1 LF Block2 LF ... LF %
where LF = 0x0A ('\n')
or
% LF CR CR Block1 LF CR CR Block2 LF CR CR ... LF CR CR %
where CR = 0x0D ('\r') , LF = 0x0A ('\n')
The parameter (Series 15i:0000#3, Series 16i/18i/21i/0i/Power Mate i:0100#3)
determines which is used. And space code (' ') may be inserted before LF for TV check.
See the CNC operaation manual for details.
A null character('\x00') is not added at the end of each string stored in the buffer.
The last character of read NC data is '%'. If the application keeps reading by using this function
after reading the last '%', cnc_upload3 returns EW_RESET.
In case of 30i/31i/32i, 0i-D/F and PMi-A, when the CNC parameter No.6019#0 is '1', the number of the macro variable and the variable data are output as a comment continuously after '%' of the end of data.
The last character of comment data is also '%'. If the application keeps reading by using this function after reading the last '%', cnc_upload3 returns EW_RESET.In case of 30i/31i/32i, 0i-D/F and PMi-A, the protected NC program(O8000-/O9000- protection, encoding) is acquired as "% LF % LF", and EW_PROT error will return by cnc_upend3.
Universal Fanuc Driver
Fanuc Focas Library CD
Declaration
Arguments
Specify the library handle. See "Library handle" for details.
Specify the pointer of the variable to the character length of NC data.
Set read number of characters by one time to it and it must be a multiple of 256. (except 30i/31i/32i, 0i-D/F, PMi-A)
After reading, the number of characters actually read is set in this variable again.
This function returns EW_LENGTH if '*length' is less than 256.
Specify the pointer to the buffer to be read.
Return
EW_OK is returned on successful completion, otherwise any value except EW_OK is returned.
The major error codes are as follows.
Return code | Meaning/Error handling | ||||||
---|---|---|---|---|---|---|---|
(-2) |
The data to read is nothing. Call the cnc_upend3 function. |
||||||
(1) |
|||||||
(2) |
|||||||
(5) |
In order to get more information for this err_no return value, execute cnc_getdtailerr function. The following detail status will be set onto the member, err_no of ODBERR structure.
|
||||||
(7) |
Tape memory is read-protected by the CNC parameter setting(O8000-/O9000- protection, encoding). See Description about the timing of error. |
||||||
(10) |
Retry because the buffer is empty. See Description about the timing of error. |
||||||
(13) |
Uploading is disable in the current CNC status. (Machining, resetting, mode changing) See Description about the timing of error. |
||||||
(15) |
Alarm has occurred while uploading. See Description about the timing of error. |
As for the other return codes or the details, see "Return status of Data window function"
CNC option
And this function is related to the following CNC option.
- Series 15i Pitch error compensation
- Series 16i/18i/21i, 0i, 30i, PMi-A Pitch error compensation
Custom macro
Custom macro
Work zero offset
For HSSB connection,
For Ethernet connection,
The Ethernet function and the extended driver/library function are necessary. However, in case of Series 16i/18i/21i-B, 0i-B/C/D/F, Series 30i and PMi-A, the required CNC option is as follows. When Embedded Ethernet is used,above two optional functions are not required.
When Ethernet board is used,
- only Ethernet function is required.
CNC parameter
This function is related to the following CNC parameter.
See the manual of CNC parameter for details.
0023=16(HSSB), 7(Ethernet) (*) (must be set)
0000#3
0011#0,#1,2201#0,#1
2210,2211,2212,2213
3202#0,#4,#6
3204#3,#4
3210,3211
3202#0,#4,#6
3204#3,#4
* In case of NC program EDIT mode : 0021 is used Not EDIT mode : 0023 is used * In case of except NC program Not background editing : 0021 is used Background editing : 0023 is used
CNC mode
(It is necessary to set mode according to the target data.)
Available CNC
0i-A | 0i-B/C(Note) | 0i-D | 0i-F | 15 | 15i | 16 | 18 | 21 | 16i-A | 18i-A | 21i-A | 16i-B | 18i-B | 21i-B | 30i-A | 30i-B | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
M (Machining) | |||||||||||||||||
T (Turning) | - | ||||||||||||||||
LC (Loader) | - | - | - | - | - | - | - | - |
0i-D | 0i-F | 16i | 18i | 30i-A | 30i-B | |
---|---|---|---|---|---|---|
P (Punch press) | - | |||||
L (Laser) | - | - | - | - | ||
W (Wire) | - | - |
Power Mate i-D | |
Power Mate i-H | |
Power Motion i-A | O |
"O" | : | Both Ethernet and HSSB | |
"E" | : | Ethernet | |
"H" | : | HSSB | |
"X" | : | Cannot be used | |
"-" | : | None |
Note) 0i-C does not support the HSSB function.
See Also
Example(C Language)
The following program reads the specified NC program registered in CNC,
and displays its contents on the screen.
#include "fwlib32.h"
#define BUFSIZE 1280
/* prgnum is NC program number to read. */
short example( long prgnum )
{
char buf[BUFSIZE+1] ;
short ret ;
long len ;
ret = cnc_upstart3( h, 0, prgnum, prgnum ) ;
if ( ret ) return ( ret ) ;
do {
len = BUFSIZE ;
ret = cnc_upload3( h, &len, buf ) ;
if ( ret == EW_BUFFER ) {
continue ;
}
if ( ret == EW_OK ) {
buf[len] = '\0' ;
printf( "%s", buf ) ;
}
if ( buf[len-1] == '%' ) {
break ;
}
} while (( ret == EW_OK ) || ( ret == EW_BUFFER ));
ret = cnc_upend3( h ) ;
return ( ret ) ;
}
Example(C#)
The following program reads the specified NC program registered in CNC,
and displays its contents on the screen.
class example
{
public const short BUFSIZE = 1280;
/* prgnum is NC program number to read. */
public short sample(int prgnum)
{
char[] buf = new char[BUFSIZE + 1];
short ret;
int len;
ret = Focas1.cnc_upstart3(h, 0, prgnum, prgnum);
if (ret != Focas1.EW_OK) return (ret);
do
{
len = BUFSIZE;
ret = Focas1.cnc_upload3(h, ref len, buf);
if (ret == (short)Focas1.focas_ret.EW_BUFFER)
{
continue;
}
if (ret == Focas1.EW_OK)
{
buf[len] = '\0';
Console.Write(buf, 0, len);
}
if (buf[len - 1] == '%')
{
break;
}
} while ((ret == Focas1.EW_OK) || (ret == (short)Focas1.focas_ret.EW_BUFFER));
ret = Focas1.cnc_upend3(h);
return (ret);
}
}