Fanuc CNC Ethernet (Gen1)
Review the following information for setting up and configuring the Fanuc CNC Ethernet (Gen1) driver.
Manufacturing Connect Edge Compatible Series
Compatibility parameter | Compatible items |
|---|---|
Driver type | Ethernet |
Validated devices/series | Any PLC model that supports FANUC FOCAS |
To set up and configure this device in Manufacturing Connect Edge, you will need to do the following:
- Step 1: Set up and Configure the PLC Device
- Step 2: Set up the PLC Device in Manufacturing Connect Edge DeviceHub
- Step 3: Configure the List of Registers
Step 1: Set up and Configure the PLC Device
If the device is configured for Ethernet access, find its network parameters. Otherwise, follow the steps below.
Review the following parameters for the PLC Configuration.
Supported Data Types
Refer to the following supported data types by Fanuc and Manufacturing Connect Edge. Below is for the Fanuc PMC (Programmable Machine Control).
Fanuc Macro variables support the FLOAT data type.
Table 1
Data Type | Size |
|---|---|
BYTE | 1 byte |
WORD | 2 bytes |
Table 2
Signed Value | Data Type | Size |
|---|---|---|
INT8 | SINT | 1 byte |
INT16 | INT | 2 bytes |
INT32 | DINT | 4 bytes |
Table 3
Unsigned Value | Data Type | Size |
|---|---|---|
UINT8 | USINT | 1 byte |
UINT16 | UINT | 2 bytes |
UINT32 | UDINT | 4 bytes |
The Fanuc PMC System is the interface between the Fanuc CNC and the machine tool. For information on the PMC system, visit the Fanuc Corporation website.
RDPMC Tags
RDPMC tags provide all information about the Address Type, the Address Number to read data from, and Size within the tag itself.

Example of an RDPMC Tag
Tag | Address Type | Address Number | Size |
|---|---|---|---|
Rdpmc [9_746_2] | D | 746 | 4 bytes |
In the previous example, 9 refers to an address type listed in the image, 746 is the address number to read data from, and 2 means that the data is four bytes long.
Configure Device
Refer to the following configurations if the device doesn't connect right away.
To configure the device:
- Note down the following information and refer to it when needed.
- Device: Fanuc 0i-F
- Communication I/F: Ethernet. Refer to the following figure.

- Press Soft key five times to set up the IP Address.

- Press the Soft key Embed Port to set up the network parameters, and then press the Soft key OPRT.

- Press the Soft key Restart to activate the settings.
![Activate settings screen [1] Activate settings screen [1]](https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/TBGmJBCz6DUz3H9rvKBj2_04fanuc-cnc-ethernet-settings.png?format=webp)
- Press the Soft key Execute to activate the settings.
![Activate settings screen [2] Activate settings screen [2]](https://images.archbee.com/SSUUxKZUk9bFTEPNn_6Zo/OdVxfjpyDOFcc9_GS-9-R_05fanuc-cnc-ethernet-activate.png?format=webp)
- Press the Soft key two times to reach this page, and then press the Soft key FOCAS2.

- Set up the port number, and then press the Soft key OPRT.

Step 2: Set up the PLC Device in Manufacturing Connect Edge DeviceHub
Configure the following parameters when you Connect a Device with this driver. Update default values to the specific set up of your device.
Parameter | Value |
|---|---|
Type | Fanuc Corporation |
Driver | Fanuc CNC Ethernet (Gen1) |
Network Address | The device address you defined in Step 1 |
Port | 8191 |
Step 3: Configure the List of Registers
When you Add Tags to the connected device, refer to the following register table and tag parameters.
Refer to the following additional resources:
Register Table
Name | Value Types | Address Format | Min Address | Max Address | Description |
|---|---|---|---|---|---|
G_Bit | bit | DDDDo | 0 | 999977 |
|
F_Bit | bit | DDDDo | 0 | 99997 |
|
Y_Bit | bit | DDDDo | 0 | 99997 |
|
X_Bit | bit | DDDDo | 0 | 99997 |
|
A_Bit | bit | DDDDo | 0 | 99997 |
|
R_Bit | bit | DDDDDo | 0 | 599997 |
|
T_Bit | bit | DDDDo | 0 | 99997 |
|
K_Bit | bit | DDDDo | 0 | 99997 |
|
C_Bit | bit | DDDDo | 0 | 99997 |
|
D_Bit | bit | DDDDo | 0 | 99997 |
|
E_Bit | bit | DDDDo | 0 | 99997 |
|
G | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
F | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
Y | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
X | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
A | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
R | usint,sint,int,uint,dint,udint | DDDD | 0 | 59999 |
|
T | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
K | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
C | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
D | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
E | usint,sint,int,uint,dint,udint | DDDD | 0 | 9999 |
|
cnc_absolute | dint | D | 1 | 8 |
|
cnc_absolute2 | dint | D | 1 | 8 |
|
cnc_machine | dint | D | 1 | 8 |
|
cnc_relative | dint | D | 1 | 8 |
|
cnc_distance | dint | D | 1 | 8 |
|
cnc_acts | dint | D | 0 | 0 |
|
cnc_acts2 | dint | D | 1 | 8 |
|
cnc_actf | dint | DDDD | 0 | 0 |
|
cnc_rdmacror | float | DDDD | 1 | 9999 |
|
cnc_rdtoolrng_number | dint | DDDD | 0 | 9999 |
|
cnc_rdtoolrng_life | dint | DDDD | 0 | 9999 |
|
cnc_rdtoolrng_count | dint | DDDD | 0 | 9999 |
|
cnc_rdparam | sint,int,float | DDDDDDD | 0 | 9999947 | Address consist of 2 parts. last 2 numbers are axis. |
cnc_rdparam3 | sint,int,float | TDDDDDDD | 0 | 19999947 | Address consists of 3 parts; last 2 number are axis, T:0 Relative axis, 1 Absolute axis. |
cnc_rdalmmsg | custom | D | 0 | 0 |
|
cnc_rdalmmsg2 | alarm | D | 0 | 0 |
|
cnc_rdalminfo | alarmInfo | D | 0 | 19 |
|
cnc_statinfo | statinfo | D | 0 | 0 |
|
cnc_statinfo2 | statinfo | D | 0 | 0 |
|
cnc_gettimer_date | date | D | 0 | 0 |
|
cnc_gettimer-time | time | D | 0 | 0 |
|
cnc_rdtpfsr | dint | TDDDD | 0 | 19999 | T 0: Machining Mode, 1: Lathe mode |
cnc_rdsvmeter | custom | D | 0 | 0 |
|
cnc_rdspmeter_meter | custom | D | 0 | 0 |
|
cnc_rdspmeter_speed | custom | D | 0 | 0 |
|
cnc_exeprgname | custom | D | 0 | 0 |
|
cnc_rdseqnum | custom | D | 0 | 0 |
|
cnc_rdblkcount | custom | D | 0 | 0 |
|
cnc_rdopnlsgnl | custom | D | 0 | 0 |
|
cnc_sysinfo | custom | D | 0 | 0 |
|
cnc_sysinfo_ex | custom | D | 0 | 0 |
|
cnc_alarm | custom | D | 0 | 0 |
|
cnc_alarm2 | custom | D | 0 | 0 |
|
cnc_rdposition | custom | D | 0 | 0 |
|
cnc_rdtofsinfo | custom | D | 0 | 0 |
|
cnc_rdtofsinfo2 | custom | D | 0 | 0 |
|
cnc_tofs_mge | custom | TTTDDDD | 0 | 1029999 |
|
cnc_rdparainfo | custom | DDDD | 0 | 9999 |
|
cnc_rdparainfo3 | custom | DDDD | 0 | 9999 |
|
cnc_rdactfixofs | custom | DD | 1 | 48 |
|
pmc_rdpmcinfo | custom | DD | 0 | 99 |
|
pmc_getdtailerr | custom | D | 0 | 0 |
|
pmc-rdalmmsg | custom | DD | 1 | 99 |
|
cnc_diagnoss | sint,int,float | DDDDDDD | 0 | 9999947 |
|
cnc_diagnosr | sint,int,float | DDDDDDD | 0 | 9999947 | Address consist of 2 parts. last 2 numbers are axus, |
cnc_rddiaginfo | custom | DDDDD | 0 | 99999 |
|
cnc_rdopmsg | custom | D | 0 | 9 |
|
cnc_rdopmsg2 | custom | D | 0 | 9 |
|
cnc_rdopmsg3 | custom | D | -1 | 9 |
|
cnc_rdspcss | custom | D | 0 | 0 |
|
cnc_rdspeed | custom | D | 0 | 0 |
|
cnc_rdspload | custom | DD | 0 | 99 |
|
cnc_rdspmaxrpm | custom | DD | 0 | 99 |
|
cnc_rdspgear | custom | DD | 0 | 999 |
|
cnc_rdgrpid2 | custom | DDDDD | 0 | 99999 | |
cnc_rdngrp | custom | D | 0 | 0 |
|
cnc_rdntool | custom | DDDDD | 0 | 99999 |
|
cnc_rdlife | custom | DDDDD | 0 | 99999 |
|
cnc_rdcount | custom | DDDDD | 0 | 99999 |
|
cnc_rd1length | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rd2length | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rd1radius | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rd2radius | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_t1info | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_t2info | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_toolnum | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rdtoolgrp | custom | DDDDD | 0 | 99999 |
|
cnc_rdtoolgrp | custom | D | 0 | 0 |
|
cnc_rdusegrpid | custom | D | 0 | 0 |
|
cnc_rdmaxgrp | custom | D | 0 | 0 |
|
cnc_rdmaxtool | custom | D | 0 | 0 |
|
cnc_rdusetlno | custom | DDDDD | 0 | 99999 |
|
cnc_rd1tlifedata | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rd1tlifedat2 | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rd2tlifedata | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rdgrpinfo | custom | DDDDD | 0 | 99999 |
|
cnc_rdgrpinfo2 | custom | DDDDD | 0 | 99999 |
|
cnc_rdgrpinfo3 | custom | DDDDD | 0 | 99999 |
|
cnc_rdgrpinfo4 | custom | DDDDD | 0 | 99999 |
|
cnc_rdtinfo | custom | D | 0 | 0 |
|
cnc_rdtlusegrp | custom | D | 0 | 0 |
|
cnc_rdtlgrp | custom | DDDDD | 0 | 99999 |
|
cnc_rdtltool | custom | TTTTTDDDDD | 0 | 9999999999 | Address consist of 2 parts. first 5 numbers are group number. |
cnc_rdexchgtgrp | custom | DDDDD | 0 | 99999 |
|
cnc_rdtlgeomsize_ext | custom | DDDDDD | 0 | 199999 | Address consist of 2 parts. first 1 numbers are coordinate. |
cnc_rdzofs
| dint | DDDdd | 0 | 99948 | Address consist of 2 parts. first 3 numbers are offset number, second 2 numbers are axis. |
cnc_rdzofsinfo
| dint | D | 0 | 0 | |
cnc_rdfixofs
| dint | Ddd | 101 | 848 | Address consist of 2 parts. first 1 numbers are c fixture offset number. |
cnc_rdintchk | dint | DDDDd | 0 | 99997 | Address consist of 2 parts. first 4 numbers are check data number, second 1 number is type of coordinate. |
cnc_rdwkcdshft | dint | DD | 1 | 48 | |
cnc_rdwkcdsfms | dint | DD | 1 | 48 | |
cnc_wksft_rnge | custom | DD | 1 | 48 | |
cnc_dtsvcnclupdn | custom | D | 0 | 0 | |
cnc_dtsvgetdncpg | custom | D | 0 | 0 | |
cnc_rddncfname | custom | D | 0 | 0 | |
cnc_rddsdncfile | custom | D | 0 | 1 | 0: DATA SERVER, 1: DATA SERVER Host |
cnc_dsftpstat | custom | D | 0 | 0 | |
cnc_dsftpcancel | custom | D | 0 | 0 | |
cnc_rdloopgain | custom | D | 0 | 0 | |
cnc_rdcurrent | custom | D | 0 | 0 | |
cnc_rdsrvspeed | custom | D | 0 | 0 | |
cnc_rdnspdl | dint | D | 0 | 0 | |
cnc_rdopmode | custom | D | 0 | 0 | |
cnc_rdposerrs | custom | D | 0 | 0 | |
cnc_loadtorq | short | Ddd | 0 | 147 | D 1: Spindle motor, 0: Servo motor, dd: Axis |
cnc_rddiag_ext | custom | DDDD | 0 | 9999 | DDDD: Specify the pointer to the array of the diagnosis data numbers. |
cnc_getpath | dint | D | 0 | 0 | |
cnc_sysconfig | custom | D | 0 | 0 | Reads the CNC system configuration information. |
cnc_rdmenuswitch | dint | D | 0 | 0 | |
cnc_rdradofs | custom | D | 0 | 0 | |
cnc_rdlenofs | custom | D | 0 | 0 | |
cnc_rdfixcycle | customcustom | D | 0 | 0 | |
cnc_rdcdrotate | custom | D | 0 | 0 | |
cnc_rd3dcdcnv | custom | D | 0 | 0 | |
cnc_rdmirimage | custom | D | 0 | 0 | |
cnc_rdscaling | custom | D | 0 | 0 | |
cnc_rd3dtofs | custom | D | 0 | 0 | |
cnc_rdposofs | custom | D | 0 | 0 | |
cnc_rdaxisdata | custom | Dd | 10 | 59 | D: class of data, d: type |
cnc_skip | custom | DD | 1 | 48 | DD: axis |
cnc_srvdelay | custom | DD | 1 | 48 | DD: axis |
cnc_accdecdly | custom | DD | 1 | 48 | DD: axis |
cnc_rdmovrlap | custom | DD | 1 | 48 | DD: axis |
cnc_canmovrlap | custom | DD | 1 | 48 | DD: axis |
cnc_rdhndintrpt | custom | D | 0 | 1 | 0: input unit, 1: output unit |
cnc_rd3dtooltip | custom | D | 0 | 0 | |
cnc_rd3dpulse | custom | D | 0 | 0 | |
cnc_rd3dmovrlap | custom | D | 0 | 0 | |
cnc_rd3dofschg | dint | D | 0 | 0 | |
cnc_rdunsolicprm | custom | D | 0 | 0 | |
cnc_rdunsolicprm2 | custom | D | 0 | 0 | |
cnc_rdunsolicmsg | custom | D | 0 | 0 | |
cnc_rdunsolicmsg2 | custom | D | 0 | 0 | |
cnc_modal | custom | DDDD | 0 | 3033 | Address consist of 2 parts. First 3 numbers are the type. |
cnc_rdgcode | custom | DDDD | 0 | 1032 | Address consist of 2 parts. First 3 numbers are the group of G code. |
cnc_rdcommand | custom | DD | 10 | 32 | Address consist of 2 parts. First number is type. 1: Read all modal data except G code at a time, 2: Read all commanded data at a time, 3: Read all commanded data concerning axis at a time. Second Number is block. |
cnc_rdmacro | float | DDDD | 0 | 9999 | custom macro variable number |
cnc_rdmacror2 | float | DDDD | 0 | 9999 | custom macro variable number |
cnc_wrmacro | float | DDDD | 0 | 9999 | custom macro variable number |
cnc_wrmacror | float | DDDD | 0 | 9999 | custom macro variable number |
cnc_wrmacror2 | float | DDDD | 0 | 9999 | custom macro variable number |
pmc_wrcntldata | custom | DDDD | 0 | 9999 | group number |
pmc_wrcntlgrp | uint | D | 0 | 0 | group number |
pmc_wrkpm | custom | DDDDD | 0 | 65535 | start address |
pmc_wrkpm2 | custom | DDDDD | 0 | 65535 | start address |
pmc_wrmsg | custom | 0 | 0 | 0 | start address |
pmc_wrpmcparam | custom | 0 | 0 | 0 | start address |
Tag Parameters
- Name: Select a register name from the drop-down list. The available options depend on the names in the register table.
- Value Type: Select a data type from the drop-down list. The available options depend on the register name selected.
- Polling Interval: Enter a value in seconds. This determines how often the tag should poll the register for data.
- Tag Name: Enter a name for the tag.
- Description (Optional): Enter a description for the tag.
- Address: Enter a tag address. The value must in the decimal format, within the allowed min/max range. Omit the leading zeros. The device might use the decimal (D), hexadecimal (H), or octal (O) address format. See the Register Table at the bottom of the dialog box. For Bit tags, append the bit address without the bit separator. The lowercase letters in the address format indicate how many digits you should enter in the Bit address.
- Path No: Enter the path number.
- If you are using 2-path control with independent macros on each path, then entering 1 or 2 should be the correct configuration.
- If you are using custom macro common variables (the macros used are the same for each path), then this value should be irrelevant and the default value of 1 can be used.
- Count: Enter the number of register values to read. A count higher than 1 will generate an array of values from the address value configured and respective subsequent address values.
- Tag Formula: Enter a formula for the tag to process the generated data. Two variables are permitted: value (current tag value) and timestamp (current tag UNIX time in milliseconds). The following math functions are available:
- sin
- cos
- sqrt
- tan
- power: power(x) performs the operation 10^x.
- log: log(x) is the natural logarithm (the logarithm is in base e).
- exp: exp(x) performs the operation e^x.
- Only Publish on Change of Value: Select the checkbox to only publish NATS messages when the value parameter changes to a new value. Change of Value only applies to boolean, numeric (such as int or float), and simple string data types. It does not apply to complex types, such as JSON or array. Poll-once topics will not be affected by Change of Value settings. These topics will still only see a single message.
- Meta Data: Metadata summarizes basic information about data. This feature allows you to define key-value pair data for the device output payload later on. Metadata can then be used to find, use, and reuse particular instances of data.
Note: If you use special characters in meta data key names, the special characters are replaced with underscore characters in the payload. This can cause two key names to be combined into one. For example, configuring the key names a**b and a&&b will cause only one key name to be created (a__b).