结果输出与通信
相机通过内置界面配置 IO 和工业通信,将检测结果输出给现场设备。先完成智能相机使用中的采集与流程设置,再按现场设备选择下方输出方式。
GPIO 自动输出
- 打开“设置 → IO 输出 → GPIO 自动输出”,按接线启用 GPIO1、GPIO2。
- 选择输出方式并配置参数:
| 输出方式 | 配置内容 | 输出行为 |
|---|---|---|
| 事件输出 | 选择 NG 时、OK 时或每次检测;设置持续时间、延迟(ms)及有效高/低电平 | 持续时间大于 0 时输出脉冲;为 0 时持续保持 |
| 结果电平 | 选择 OK 高/NG 低或相反;设置初始、停止电平 | OK/NG 结果改变输出,并保持到下一结果或停止;NONE 保持原电平 |
- 保存配置并启动,检查实际检测判定与输出动作。
Modbus 通信
打开“设置 → 通信配置 → Modbus 通信”,根据 PLC 的连接方式选择 Server 或 Client,保存配置并启动。
| 模式 | CamOS 界面配置 | 现场连接 |
|---|---|---|
| Server(默认) | 使用界面显示的相机本机 IP | PLC 主动连接相机实际 IP 的 TCP 502 端口,读写保持寄存器 |
| Client | 填写 PLC 服务器 IP、端口、从站 ID(默认 1)、轮询间隔(默认 1000 ms) | 相机主动连接 PLC 的 Modbus 服务 |
保持寄存器采用零基偏移,默认控制区从 0 开始、状态区从 1 开始、结果区从 2 开始、指令区从 500 开始;控制和状态各占 1 Word,结果与指令默认各占 100 Word。若 PLC 工具使用 40001 编号,以上位置分别对应 40001、40002、40003、40501。修改偏移时,两端使用相同设置并使四区范围分开。
使用 PLC 触发时,先在相机页选择“触发”模式,再将触发方式设为“通信配置”。控制和状态位、触发确认顺序以及结果字符格式见下方控制位与状态位及读取一次结果,其中 D0、D1、D2、D500 分别对应 Modbus 保持寄存器偏移 0、1、2、500。
PLC 使用功能码 0x03 读取保持寄存器,使用 0x06 写单个控制字,或使用 0x10(十进制 16)批量写入控制及指令数据。
结果区首字直接读取为 16 位有效 ASCII 字节数。Modbus 的“字节序使能”仅控制后续字符在每个数据字内的排列:关闭时低字节在前,开启时高字节在前。
下方数字量 IO 网关、FINS/TCP 使用通信信号触发相机时,同样先选择“触发”模式,并将触发方式设为“通信配置”。只输出当前流程结果时,按现场选择所需输出服务。
数字量 IO 网关
将相机与以太网 IO 模块接在同一路由器或交换机,或用一根网线直连,两台设备设为同网段的不同 IP。接线见接口与基础接线。
设置模块地址
使用配套的 W5500IP 配置工具,按模块标签中的初始 IP 和端口连接模块:
- 在 Windows“网络连接”中打开连接模块的网卡属性,进入“Internet 协议版本 4(TCP/IPv4)”,暂时将电脑设为模块当前网段的固定地址。
- 打开“中盛综合测试系统”,选择“通信参数 → 网口系列参数设置”,连接模块。
- 将工作模式设为
TCP/IP-Server,填写现场使用的模块 IP、网关和监听端口;配套模块使用端口8234。 - 点击“参数保存”,显示设置成功后点击“参数清空”,再点击“参数读取”,核查读回参数。
- 将模块断电重启,把电脑网卡恢复到现场网络配置,再用“数字量测试系统”连接模块的新地址,核查通信。

在 CamOS 启动通信
打开“设置 → 通信配置 → 数字量 IO 网关”,填写模块的“设备 IP”,将“设备端口”改为模块实际配置的端口:CamOS 该项默认 502,上述配套模块使用 8234。设置所需输入、输出通道,点击“保存配置”,再点击“启动”,查看运行状态与输入输出变化。
下图为启动后的配置页面,状态显示“运行中”,操作按钮变为“停止”。

欧姆龙 FINS/TCP
CamOS 作为 FINS/TCP 客户端主动连接欧姆龙 PLC,使用 DM 中的控制、状态、结果和指令四个区域。
配置并连接
- 在“设置 → 通信配置”中展开 FINS 配置,服务器 IP 填 PLC 地址,服务器端口填 PLC 的 FINS/TCP 端口,默认
9600。 - 按 PLC 数据读取方式设置“字节交换”。关闭时字符按每字高字节、低字节顺序存放;开启时交换每个数据字的两个字节。
- 设置连接超时和轮询间隔,默认分别为
5 s、1000 ms。 - 配置下表的区域起始偏移和 Word 数量。一个 Word 为 16 位,即 2 字节;四区范围应分开。
- 点击“保存配置”,然后点击“启动”。状态显示“运行中”后,确认没有“连接异常,重连中”提示;需要 PLC 触发时,再通过 Trigger Ready 核查触发准备状态。
| 区域 | 方向 | 默认 DM 起始地址 | 默认 Word 数量 | 用途 |
|---|---|---|---|---|
| 控制区 | PLC → 相机 | D0 | 1 | 触发使能、触发、结果确认、命令执行 |
| 状态区 | 相机 → PLC | D1 | 1 | 准备、采图、算法执行及结果状态 |
| 结果区 | 相机 → PLC | D2 | 100 | 首字为有效字节数,后续字存放结果字符 |
| 指令区 | PLC → 相机 | D500 | 100 | 首字为有效字节数,后续字存放命令字符 |
控制和状态区域各为 1 Word;结果区可配置 4~500 Word,指令区可配置 1~500 Word。发送命令时,指令区至少配置 2 Word:首字存长度,其余字最多容纳 2 × (Word 数量 - 1) 个 ASCII 字节。下表以默认地址为例,修改偏移后使用对应的新地址。
控制位与状态位
| 控制区位 | 名称 | PLC 操作 |
|---|---|---|
| D0.0 | Trigger Enable | 置 1 允许触发 |
| D0.1 | Trigger | 在相机准备好时产生上升沿,取图并运行一次流程 |
| D0.2 | Results Ack | 读取结果后产生上升沿,确认结果 |
| D0.8 | Execute Command | 产生上升沿执行指令区命令 |
| D0.15 | Clear Error | 产生上升沿清除错误状态 |
| 状态区位 | 名称 | 含义 |
|---|---|---|
| D1.0 | Trigger Ready | 已使能且准备接收下一次触发 |
| D1.1 | Trigger Ack | 已接收触发 |
| D1.2 | Acquiring | 正在获取图像 |
| D1.3 | Decoding | 正在执行算法 |
| D1.8 | Results Available | 新结果可读取,结果确认后清零 |
| D1.9 | Results Timeout | 本次取图或算法执行超时,结果确认后清零 |
| D1.10 | Command Success | 指令执行成功 |
| D1.11 | Command Failed | 指令执行失败 |
| D1.15 | General Fault | 设备错误,可通过 Clear Error 清除 |
其余位保留。本次取图或算法执行的超时默认 6 s,可在结果区配置中修改。
读取一次结果
- PLC 将 Trigger Enable 置 1,等待 Trigger Ready 置 1。
- PLC 将 Trigger 从 0 置 1,轮询接收后相机更新 Trigger Ack、Acquiring 和 Decoding。随后将 Trigger 恢复为 0,并保留到相机轮询读到该值,为下一次上升沿做好准备。
- Results Available 置 1 后,读取结果区:D2 为有效 ASCII 字节数,D3 起存放结果字符串。
- PLC 读取完成后将 Results Ack 从 0 置 1。相机清除 Results Available 和 Results Timeout 后,PLC 将 Results Ack 恢复为 0,并保留到相机轮询读到;下一次确认再产生新的上升沿。
结果字符串格式为 status_num;status_str;run_index;,例如 0;NG;7;:
| 字段 | 读取方式 |
|---|---|
status_num | OK 为 1,NG、NONE 等其他状态为 0 |
status_str | 文本判定,如 OK、NG、NONE |
run_index | 本次运行序号 |
结果区不足部分填 0,超出容量时截断并更新有效长度。按首字长度读取字符,再按分号解析各段。
发送指令
PLC 将 ASCII 命令的有效字节数写入 D500,命令字符写入 D501 起的数据字,再给 Execute Command 上升沿。收到执行状态后将 Execute Command 恢复为 0,并让相机轮询读到,供下一次命令重新产生上升沿。根据 Command Success 或 Command Failed 查看执行状态;具体命令使用设备当前支持的通信命令。