Skip to main content
Version: 2.6

FANUC Best Practices

Changing Existing Access Data Info

Changing an existing access data info in the device information json might result in data base and persistence errors.

  • Best practice is to generate a new UUID for this data node. This will create a new data base entry. Disadvantage is that the history is not accessible anymore. To access the previously historized data a manual merging is necessary.

Following data is critical and require the action described above:

  • Changing the data type (like from System.Int32 to System.Int32[])

If you still want to change a data type, you must clean the node and history repository (either manually, or using the command line argument):

> HumanOS.Server.ConsoleHost.exe -cleanRepository=all

Adding multiple FANUC Machines to one SmartGateway

Plugin Configuration

When adding FANUC complex machines (multi-channel or different data acquisition requirements), then it is recommended to create a separate device configuration (FANUC Device Configuration).

In a homogeneous machine line (regarding FANUC machines) use the default FanucControlDriver configuration.

DeviceInfo

Changing Existing Access Data Info

Changing an existing access data info in the device information json might result in data base and persistence errors.

  • Good practice is to generate a new UUID for this data node. This will create a new data base entry. Disadvantage is that the history is not accessible anymore. To access the previously historized data a manual merging is necessary.

Following data is critical and require the action described above:

  • Changing the data type (like from System.Int32 to System.Int32[])

If you still want to change a data type, you must clean the node and history repository (either manually, or using the command line argument):

> HumanOS.Server.ConsoleHost.exe -cleanRepository=all

Adding multiple FANUC Machines to one SmartGateway

Plugin Configuration

When adding FANUC complex machines (multi-channel or different data acquisition requirements), then it is recommended to create a separate device configuration (section FANUC Device Configuration).

In a homogeneous machine line (regarding FANUC machines) use the default FanucControlDriver configuration.

DeviceInfo

Each FANUC machine is configured in a separate device info json. The json files are typically located in

$AppSettingsDir$\Config\Devices

Example:

FANUC Machine A: MachineA.json

FANUC Machine B: MachineB.json

etc.

Make sure that each file contains:

  • Unique device ID
  • Driver ID is set to {B3CCD1A7-A49B-46FC-B983-5284992F6444}
  • The connection address to the machine
  • Unique AccessDeviceInfo and Command IDs (among all machines. Best is to generate new IDs each time you configure a machine)
  • It is also recommended to use different IDs for AlarmEventSourceInfo (technically a shared alarm event pool can be used)
info

NOTE: ID of CapabilityInfo refers to the capability itself. Machines with same capabilities use the same IDs (as they share the capabilities).

Create Device Hardware Hierarchy

Use the possibility to create groups within the device information file. Groups help you to logically organize your data access points, commands etc. Especially for large device information files, things become much more readable and understandable.

For FANUC controls a logical hierarchy could be:

  • Root: CNC System Information
  • Group: Nc1 (path 1)
    • Group: Program Management
    • Group: Axes
  • Group: Nc2 (path 2)
    • Group: Program Management
    • Group: Axes
  • Group: Pmc
    • Group: Profibus
    • Group: Safety

Note: The hierarchy will be mapped to OPC-UA folder and MTConnect Component structures.

Uneven Signal Recording

Uneven or stagnant signal recording could have many reasons. Often its cause is related with another signal recording. This section gives outlines the most common causes and how to solve it.

Example of interruptions in a continuous signal:

In this case, the cause was a second signal (ToolLifeManagement), which took very long to read from the Fanuc control (about 100ms).

The solution was to create a task processor handling this signal separately, that is in a separate thread context.

{
"Disabled": false,
"Devices": [
{
"MainTaskProcessor": {
"Name": "Main TaskProcessor",
"ProcessingPriority": "Highest"
},
"SubTaskProcessors": [
{
"Name": "ToolLifeProcessor",
"ProcessingPriority": "BelowNormal",
"MemoryMappings": [
{
"MemoryBase": "Nc1",
"MemoryType": "ToolLife"
}
]
},
{
"Name": "AlarmEventProcessor",
"ProcessingPriority": "BelowNormal",
"MemoryMappings": [
{
"MemoryBase": "Nc1",
"MemoryType": "Alarming"
}
]
}
]
}
]
}

This solution can also be used to prefer certain memory reading jobs. For instance, the Nc1.Dynamic memory can be read with higher priority compared to the other memory types.

Setting up FANUC Embedded Port

Follow the instruction from FANUC

For 30i/31i/32i: http://www.cnc1.com/files/PDF/Fanuc_30i_Ethernet_Settings.pdf

For 0i: http://www.cnc.uk.com/wp-content/uploads/2015/05/Fanuc_0iD_Ethernet_Settings.pdf

To disable the DHCP on FANUC Embedded Port, the parameter 14880 Bit6 must be set to 0 (zero)!!!

FANUC in Subnets

If the FANUC controls and HumanOS® Runtime are in a different subnets, the standard gateway must be specified on the FANUC side (System).