# Brother CNC

Brother CNC 插件用于通过 Brother NC 协议访问 Brother（兄弟）数控加工中心，采集机床的坐标、主轴、刀具、报警、计件、程序号、PLC 软元件以及刀具补偿等运行数据。插件支持通过串口（Serial）或以太网（Ethernet）两种物理链路与设备建立连接。

::: tip
Brother CNC 插件为只读插件，仅支持数据采集（读取），不支持反向控制（写入）。
:::

## 添加插件

在 **配置 -> 南向设备**，点击**添加设备**来创建设备节点，输入插件名称，插件类型选择 **Brother CNC** 启用插件。

## 设备配置

点击插件卡片或插件列，进入**设备配置**页。配置 Neuron 与设备建立连接所需的参数，下表为插件相关配置项。

| <div style="width:100pt">参数</div> | 说明 |
| ------------------ | ----------------------------------------------------------- |
| **物理链路** | 选择使用 Serial（串口）或者 Ethernet（以太网）通信介质，默认为 Ethernet。 |
| **连接超时时间 (ms)** | 等待设备返回指令响应的时间，取值范围 1000~30000，默认为 3000。 |
| **串口设备** | 串口模式下，串口设备的路径，如 Linux 系统中 /dev/ttyS0。 |
| **波特率** | 串口模式下的连接参数，可选 115200/57600/38400/19200/9600/4800，默认为 9600。 |
| **数据位** | 串口模式下的连接参数，可选 7/8，默认为 8。 |
| **停止位** | 串口模式下的连接参数，可选 1/2，默认为 1。 |
| **校验位** | 串口模式下的连接参数，可选 none/odd/even，默认为 none。 |
| **CNC IP 地址** | 以太网模式下，目标 CNC 设备的 IPv4 地址。 |
| **CNC 端口** | 以太网模式下，目标 CNC 设备的端口号，取值范围 1~65535，默认为 10000。 |

## 设置组和点位

完成插件的添加和配置后，要建立设备与 Neuron 之间的通信，首先为南向驱动程序添加组和点位。

完成设备配置后，在**南向设备**页，点击设备卡片/设备列进入**组列表**页。点击**创建**来创建组，设定组名称以及采集间隔。完成组的创建后，点击组名称进入**点位列表**页，添加需要采集的设备点位，包括点位地址，点位属性，数据类型等。

公共配置项部分可参考[连接南向设备](../south-devices.md)，本页将介绍支持的数据类型和地址格式部分。

::: tip
Brother CNC 插件仅支持点位属性为**只读**。采集时插件会按数据区域（PDSP、ALARM、PLCD 等）对同组点位进行批量请求，建议将同一区域的点位归入同一组以提升采集效率。
:::

### 数据类型

* INT16
* UINT16
* INT32
* UINT32
* INT64
* UINT64
* FLOAT
* DOUBLE
* BIT
* BOOL
* STRING

### 地址格式

Brother CNC 插件按数据区域（Area）组织点位地址，不同区域的地址格式与支持的数据类型有所不同。

#### PDSP（机床运行数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ----------------------- | --------------------------------------------------- | ---- | -------------- |
| PDSP.MACHINE_X | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 机床 X 轴坐标 |
| PDSP.MACHINE_Y | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 机床 Y 轴坐标 |
| PDSP.MACHINE_Z | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 机床 Z 轴坐标 |
| PDSP.FEED_SPEED | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 进给速度 |
| PDSP.SPINDLE_SPEED | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 主轴转速 |
| PDSP.TOOL_NO | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 当前刀具号 |
| PDSP.NEXT_TOOL_NO | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 下一刀具号 |
| PDSP.RAPID_OVERRIDE | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 快移倍率 |
| PDSP.FEED_OVERRIDE | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 进给倍率 |
| PDSP.SPINDLE_OVERRIDE | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 主轴倍率 |

#### ALARM（报警数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ----------- | -------------------------------- | ---- | ----------------------------------- |
| ALARM.\<N\> | INT32/UINT32/INT64/UINT64 | 只读 | 报警数据，N 为报警数据列索引（从 0 开始） |

#### WKCNTR（计件数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ------------ | -------------------------------------- | ---- | -------- |
| WKCNTR.COUNT | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 加工计件数 |

#### PRDC2（生产时间数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ----------------- | -------------------------------------- | ---- | -------- |
| PRDC2.CYCLE_TIME | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 循环时间 |
| PRDC2.CUTTING_TIME | INT16/UINT16/INT32/UINT32/INT64/UINT64 | 只读 | 切削时间 |

#### PRGN（程序号数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ------------ | ---------------------- | ---- | -------------- |
| PRGN.CURRENT | INT32/UINT16/STRING | 只读 | 当前程序号 |
| PRGN.MAIN | INT32/UINT16/STRING | 只读 | 主程序号 |
| PRGN.BLOCK | INT32/UINT16/STRING | 只读 | 当前程序段号 |

#### PLCD（PLC 软元件）

| 地址 | 数据类型 | 属性 | 说明 |
| ------------- | --------------------------------------------- | ---- | ------------------------------ |
| PLCD.D.\<N\> | INT16/UINT16/INT32/UINT32/FLOAT/DOUBLE | 只读 | D 数据寄存器，N 为寄存器地址 |
| PLCD.M.\<N\> | BIT/BOOL | 只读 | M 继电器，N 为寄存器地址 |

#### TOLSD（刀具补偿数据）

| 地址 | 数据类型 | 属性 | 说明 |
| ------------------------- | -------------------------------------------------------- | ---- | ------------------------------------------ |
| TOLSD.\<DB\>.\<ID\>.\<N\> | INT16/UINT16/INT32/UINT32/INT64/UINT64/FLOAT/DOUBLE | 只读 | 刀具补偿数据，DB 取值 1~10，ID 取值 1~99，N 为数据列索引 |

### 地址示例

| 地址 | 数据类型 | 说明 |
| ----------------- | -------- | ---------------------------------- |
| PDSP.MACHINE_X | FLOAT | 机床 X 轴坐标 |
| PDSP.SPINDLE_SPEED | INT32 | 主轴转速 |
| PDSP.TOOL_NO | INT16 | 当前刀具号 |
| PDSP.FEED_OVERRIDE | INT32 | 进给倍率 |
| ALARM.1 | INT32 | 报警数据第 1 列 |
| WKCNTR.COUNT | INT32 | 加工计件数 |
| PRDC2.CYCLE_TIME | INT32 | 循环时间 |
| PRGN.CURRENT | INT32 | 当前程序号 |
| PRGN.MAIN | STRING | 主程序号 |
| PLCD.D.100 | INT16 | D 寄存器，地址为 100 |
| PLCD.M.2048 | BIT | M 继电器，地址为 2048 |
| TOLSD.1.1.2 | FLOAT | DB 为 1，刀具 ID 为 1，数据列索引为 2 |

## 数据监控

完成点位的配置后，您可点击 **监控** -> **数据监控**查看设备信息，具体可参考[数据监控](../../../admin/monitoring.md)。
