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.
(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_download4 callings.
And the error status for some cnc_download4
callings just before the finish of downloading is returned by
cnc_dwnend4 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_download4 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_dwnend4 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.
Custom macro
Work zero offset
For HSSB connection,
CNC parameter
This function is related to the following CNC parameter.
See the manual of CNC parameter for details.
3201#2,#5,#6
3202#0,#4
3204#3,#4
3210,3211
8900#0
CNC mode
This function can be used in any CNC mode.
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.
<PROG123> ;
M3 S1200 ;
G0 Z0 ;
G0 X0 Y0 ;
G1 F500 X120. Y-30. ;
M30 ;
#include "fwlib32.h"
short example( void )
{
char* prg =
"\n"
"<PROG123>\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_dwnstart4( h, 0, "//CNC_MEM/USER/PATH1" ) ;
if ( ret ) return ( ret ) ;
len = strlen( prg ) ;
while ( len > 0 ) {
n = len ;
ret = cnc_download4( h, &n, prg ) ;
if ( ret == EW_BUFFER ) {
continue ;
}
if ( ret == EW_OK ) {
prg += n ;
len -= n ;
}
if ( ret != EW_OK ) {
break ;
}
}
ret = cnc_dwnend4( h ) ;
return ( ret ) ;
}
Example(C#)
The following program registers the following NC program to CNC.
<PROG123> ;
M3 S1200 ;
G0 Z0 ;
G0 X0 Y0 ;
G1 F500 X120. Y-30. ;
M30 ;
class example
{
public short sample()
{
string strPrg =
"\n" +
"<PROG123>\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_dwnstart4(h, 0, "//CNC_MEM/USER/PATH1");
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_download4(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_dwnend4(h);
return (ret);
}
}