This step-by-step guide explains how to configure Ethernet settings, assign a static IP address, enable OPC UA, and save your settings on a Brother D Series CNC machine.
It includes important notes on formatting and screenshots to guide you through each step.
๐ Step 1: Access the Communication Menu
-
From the machineโs main screen, press the
DATABANK
soft key at the bottom. -
In the menu, select 7. Communication parameter to open network settings.
๐ Step 2: Configure IP Address and Network Access
Inside the Ethernet/FTP settings screen:
-
0202 - Use DHCP โ Set to
No
This enables manual input of a static IP address. -
0203 - IP address โ Enter your desired static IP.
๐ก Important Format Note:
-
The machine does not accept standard dot notation (e.g.,
172.22.3.34
) directly. -
Instead, enter the IP address as a 12-digit numeric string without dots.
-
Example:
172.22.3.34
โ Input as172022003034
-
-
0204 - Mask bit โ Typically set to
255.255.255.0
-
0004 - Display slave command alarm โ Set to
No
Prevents unnecessary command display alerts. -
0216 - Restrict Ethernet access โ Set to
No
Ensures full network accessibility.
๐ Step 3: Enable OPC UA and Configure Security
Navigate to the final Ethernet/FTP menu screen and set:
-
0235 - OPC UA server function โ
Valid
Enables OPC UA functionality. -
0236 - Security communication for client โ
2: Type2
Commonly used secure mode for client connections. -
0237 - OPC UA security communication (optional):
-
0: No
โ No username or password required -
1โ5
โ Enables varying levels of RSA/AES encryption with authentication
Choose based on your environmentโs security needs.
-
๐พ Step 4: Save and Finalize Settings
After configuring all required parameters:
-
Press
Save and end
at the bottom left. -
Use
Overwrite save
if prompted and you donโt want to exit yet.
โ ๏ธ If you do not save, all changes will be lost on shutdown or reboot.
โ Summary of Key Parameters
Parameter | Setting | Description |
---|---|---|
0004 |
No |
Disables slave alarm notifications |
0202 |
No |
Use static IP |
0203 |
172022003034 |
IP for 172.22.3.34 (numeric entry required) |
0204 |
255.255.255.0 |
Subnet mask |
0216 |
No |
Allow full Ethernet access |
0235 |
Valid |
Enable OPC UA server |
0236 |
2: Type2 |
Secure client connection |
0237 |
0โ5 |
Optional security (0 = no auth) |
ย
๐ก Step 5: Verify Ethernet & OPC UA Connectivity
To confirm your Ethernet settings and OPC UA communication are working:
-
Press the
MONITR
soft key at the bottom of the screen. -
Select 3. Communication monitor.
In the Communication Monitor:
-
Look under the Port column for activity such as
Ethernet (OPC UA)
. -
The Message column will show success indicators like:
-
Sending completed
-
Data sent
-
Output request received
-
This confirms OPC UA is transmitting data correctly.
For detailed IP and Ethernet status:
-
In the
MONITR
menu, select Ethernet information.
This screen displays:
-
IP Address
-
Subnet Mask
-
Gateway
-
MAC Address
-
DHCP status
ย
Sample OPC-UA Script - Download here
version: 2
type: opc-ua
read-mode: polling
tags:
MEM:
path: ns=3;s=NC/MemoryOperation/MEM
wkcntr:
path: ns=3;s=NC/ProductionMonitor/WKCNTR
pdsp_data:
path: ns=3;s=NC/System/PDSP
panel_data:
path: ns=3;s=Panel/Data/PANEL
alarm_data:
path: ns=3;s=NC/Alarm/ALARM
optional_stop_in:
path: ns=3;s=Panel/Keys/OP.STP
block_skip_in:
path: ns=3;s=Panel/Keys/B.SKIP
single_block_in:
path: ns=3;s=Panel/Keys/SINGL
dry_run_in:
path: ns=3;s=Panel/Keys/DRY
machine_lock_in:
path: ns=3;s=Panel/Keys/M.LCK
variables:
execution:
- source: MEM
- pattern-match:
pattern: /^(?:[^,]*,){3}\s*([^,]+)/
group: 1
- state:
- ACTIVE: this == 1
- READY: true
program-name:
- source: MEM
- pattern-match:
pattern: /^(?:[^,]*,){2}\s*'([^']+)'/
group: 1
part-counter:
- source: wkcntr
- pattern-match:
pattern: /^(?:[^,]*,){2}\s*([^,]+)/
group: 1
program:
- source: program-name
# D01 Door variables
outer_door:
- source: panel_data
- pattern-match:
pattern: /D01,([^,]+)/
group: 1
- state:
- CLOSED: this == "0"
- OPEN: this == "1"
inner_door:
- source: panel_data
- pattern-match:
pattern: /D01,[^,]+,([^,]+)/
group: 1
- state:
- CLOSED: this == "0"
- OPEN: this == "1"
side_door:
- source: panel_data
- pattern-match:
pattern: /D01,[^,]+,[^,]+,([^,\s]+)/
group: 1
- state:
- CLOSED: this == "0"
- OPEN: this == "1"
# K01 Variables
mode:
- source: panel_data
- pattern-match:
pattern: /K01,([^,]+)/
group: 1
- state:
- MANUAL: this == "0"
- MDI_OPERATION: this == "1"
- MEMORY_OPERATION: this == "2"
- PROGRAM_EDIT: this == "3"
- MDI_MANUAL: this == "4"
- OPERATING_EDIT: this == "5"
block_skip:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
opt_stop:
- source: optional_stop_in
- state:
- OFF: this == "0"
- ON: this == "1"
single_block:
- source: single_block_in
- state:
- OFF: this == "0"
- ON: this == "1"
dry_run:
- source: dry_run_in
- state:
- OFF: this == "0"
- ON: this == "1"
machine_lock:
- source: machine_lock_in
- state:
- OFF: this == "0"
- ON: this == "1"
coolant_pump:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
chip_shower:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
machine_light:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
pallet_select_key:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
table_light:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
door_unlock_1:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
door_unlock_2:
- source: panel_data
- pattern-match:
pattern: /K01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^\s]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
# S01 Variables
rapid_traverse_override:
- source: panel_data
- pattern-match:
pattern: /S01,([^,]+)/
group: 1
feedrate_override:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,([^,]+)/
group: 1
spindle_override:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,([^,]+)/
group: 1
emergency_stop:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- ON: this == "0"
- OFF: this == "1"
data_protection:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- ENABLED: this == "0"
- DISABLED: this == "1"
door_interlock_mode_right:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
door_interlock_mode_left:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
enable:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
master_on:
- source: panel_data
- pattern-match:
pattern: /S01,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,[^,]+,([^\s]+)/
group: 1
- state:
- OFF: this == "0"
- ON: this == "1"
feedrate:
- source: pdsp_data
- pattern-match:
pattern: /X01,([^,]+)/
group: 1
spindle_speed:
- source: pdsp_data
- pattern-match:
pattern: /X01,[^,]+,([^,]+)/
group: 1
inner_pallet:
- source: pdsp_data
- pattern-match:
pattern: /X01,[^,]+,[^,]+,([^,]+)/
group: 1
- state:
- NOT_INDEXED: this == "0"
- PALLET_1: this == "1"
- PALLET_2: this == "2"
spindle_tool_number:
- source: pdsp_data
- pattern-match:
pattern: /X01,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
next_tool_number:
- source: pdsp_data
- pattern-match:
pattern: /X01,[^,]+,[^,]+,[^,]+,[^,]+,([^,]+)/
group: 1
# Alarm Variables
alarm_number:
- source: alarm_data
- pattern-match:
pattern: /E01,([^,\s]+)/
group: 1
alarm_type:
- source: alarm_number
- pattern-match:
pattern: /^(\d{2})/
group: 1
- state:
- EX: this == "01"
- EC: this == "02"
- SV: this == "03"
- NC: this == "04"
- IO: this == "05"
- SP: this == "06"
- SM: this == "07"
- SL: this == "08"
- CM: this == "09"
- ES: this == "10"
- FC: this == "11"
- OM: this == "90"
- UNKNOWN: true
alarm_code:
- source: alarm_number
- pattern-match:
pattern: /^\d{2}(.+)/
group: 1
# Combine type and code for display
alarm_display:
- expression: concat(string(alarm_type), string(alarm_code))
has_alarm:
- source: alarm_number
- expression: this != "" and this != "0" and this != null
conditions:
system:
- code: emergency_stop
message: Emergency Stop Active
value:
FAULT: emergency_stop == "DISABLED"
- code: alarm
message: ${alarm_display}
value:
WARNING: has_alarm
data-items:
#- test
- execution
- program-name
- part-counter
# - feed-ovr
#- nc-mode
- program
# D01 Door items
- outer_door
- inner_door
- side_door
# K01 Items
- mode
- block_skip
- opt_stop
- single_block
- dry_run
- machine_lock
- coolant_pump
- chip_shower
- machine_light
- pallet_select_key
- table_light
- door_unlock_1
- door_unlock_2
# S01 Items
- rapid_traverse_override
- feedrate_override
- spindle_override
- emergency_stop
- data_protection
- door_interlock_mode_right
- door_interlock_mode_left
# X01 Items
- feedrate
- spindle_speed
- inner_pallet
- spindle_tool_number
- next_tool_number
Comments
0 comments
Article is closed for comments.