Description
Output NC data to be registered (downloading).
This function outputs the characters of NC program as long as it is specified by '*length'.
However, if there is no room to store the specified number of character, this function stores
the characters as many as possible to fill the buffer and then sets '*length' with the
real number of characters which are stored in the buffer.
Data is transferred using 256 bytes buffer. To improve translation speed, the value of the '*length' should be a multiple of 256.
(In case of Ethernet connection, the size of 1460 bytes(maximun value) can be transmitted at a time. So, specify the size in 1024-1400 bytes for a value of *length. If the buffer size is a little size, transmission efficiency become to worsen, and the communication error might occur.)
In case that this function cannot output 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, EW_OVRFLOW, etc.) may be delayed. Namely, an error status
may refrect the result caused by the previously executed
cnc_download callings.
And the error status for some cnc_download
callings just before the finish of downloading is returned by
cnc_dwnend3 function.
NC data format
NC data to be registered to CNC is a string composed of ASCII characters as the following format.
LF Block1 LF Block2 LF ... LF %
where LF = 0x0A ('\n')
'LF' must be placed at the top of the whole program, and '%' at the end.
Data before the first 'LF'are ignored.
In case of NC program, address 'O' and program number must be placed in the program to be registered.
For example, to register a program such as
O1234 ;
G1 F0.3 W10. ;
M30 ;
%
send a following string using cnc_download3 function.
"\nO1234\nG1F0.3W10.\nM30\n%"
Universal Fanuc Driver
Fanuc Focas Library CD
Declaration
Arguments
Specify the library handle. See "Library handle" for details.
Specify the ponter of the variable to the character length of NC data.
When this function returns, the actual number of characters that are output
to CNC will be set.
This function returns EW_LENGTH if '*length' has the value of zero or negative.
Specify the ponter of the variable to NC data.
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) |
CNC required to stop downloading. Call the cnc_dwnend3 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 write-protected by the CNC parameter setting(O8000-/O9000- protection, encoding). See Description about the timing of error. |
|||||||||||||||
(8) |
CNC tape memory shorts for the registration. Make enough free area in CNC memory. See Description about the timing of error. |
|||||||||||||||
(10) |
Retry because the buffer is full. See Description about the timing of error. |
|||||||||||||||
(13) |
Downloading is disable in the current CNC status. (Machining, resetting, mode changing) See Description about the timing of error. |
|||||||||||||||
(15) |
Alarm has occurred while downloading. 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.
0022=16(HSSB), 7(Ethernet) (*) (must be set)
0000#0
2200#1,#3,#4
0011#0,2201#0
2210,2211,2212,2213
8000#0
3201#2,#5,#6
3202#0,#4
3204#3,#4
3210,3211
8900#0
3201#2,#5,#6
3202#0,#4
3204#3,#4
8900#0
* In case of NC program EDIT mode : 0020 is used Not EDIT mode : 0022 is used * In case of except NC program Not background editing : 0020 is used Background editing : Cannot be 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 registers the following NC program to CNC.
O1234 ;
M3 S1200 ;
G0 Z0 ;
G0 X0 Y0 ;
G1 F500 X120. Y-30. ;
M30 ;
#include "fwlib32.h"
short example( void )
{
char* prg =
"\n"
"O1234\n"
"M3 S1200\n"
"G0 Z0\n"
"G0 X0 Y0\n"
"G1 F500 X120. Y-30.\n"
"M30\n"
"%";
long len, n;
short ret;
ret = cnc_dwnstart3( h, 0 ) ;
if ( ret ) return ( ret ) ;
len = strlen( prg ) ;
while ( len > 0 ) {
n = len ;
ret = cnc_download3( h, &n, prg ) ;
if ( ret == EW_BUFFER ) {
continue ;
}
if ( ret == EW_OK ) {
prg += n ;
len -= n ;
}
if ( ret != EW_OK ) {
break ;
}
}
ret = cnc_dwnend3( h ) ;
return ( ret ) ;
}
Example(C#)
The following program registers the following NC program to CNC.
O1234 ;
M3 S1200 ;
G0 Z0 ;
G0 X0 Y0 ;
G1 F500 X120. Y-30. ;
M30 ;
class example
{
public short sample()
{
string strPrg =
"\n" +
"O1234\n" +
"M3 S1200\n" +
"G0 Z0\n" +
"G0 X0 Y0\n" +
"G1 F500 X120. Y-30.\n" +
"M30\n" +
"%";
int len, n;
short ret;
ret = Focas1.cnc_dwnstart3(h, 0);
if (ret != Focas1.EW_OK) return (ret);
int startPos = 0;
len = strPrg.Length;
while (len > 0)
{
char[] prg = new char[1280];
strPrg.CopyTo(startPos, prg, 0, len);
n = len;
ret = Focas1.cnc_download3(h, ref n, prg);
if (ret == (short)Focas1.focas_ret.EW_BUFFER)
{
continue;
}
if (ret == Focas1.EW_OK)
{
startPos += n;
len -= n;
}
if (ret != Focas1.EW_OK)
{
break;
}
}
ret = Focas1.cnc_dwnend3(h);
return (ret);
}
}