传感器经串口 IO 控制器触发拍照¶
适用范围:科星 CX-51xxS 系列串口 IO 控制器(2~8 路,RS485,Modbus RTU)+ NPN 三线制传感器 + labeldetect 软件(现场在用的各版本均适用)。 整理日期:2026-09-11
目标:产品经过传感器时,控制器把信号变成 Modbus 寄存器的值,labeldetect 轮询到该值后立即拍照检测。全程不需要 PLC,不需要改软件。
1. 需要准备的东西¶
| 物料 | 说明 |
|---|---|
| 串口 IO 控制器 | 科星 CX-5104S-485 / CX-5108S 等,必须带"开关量输入"(DI)端子 |
| NPN 三线制传感器 | 光电或接近开关均可。三根线:棕=电源正、蓝=电源负、黑=信号 |
| RS485 转换端子 | 转RS232,通过串口线连接电脑 |
| 直流电源 | 12V 或 24V,控制器壳上标注 7~36V 都能用 |
| 厂家调试软件 | "串口继电器调试软件 V1.1.0",只用来验证接线,生产时不运行 |
2. 接线¶
2.1 传感器接控制器¶
控制器下排"开关量输入"端子从左到右是:VCC、GND、COM+、IN1、IN2、IN3、IN4、COM-。
| 传感器线 | 接控制器端子 |
|---|---|
| 棕(电源正) | COM+ |
| 黑(信号) | IN1 |
| 蓝(电源负) | COM- |
说明:
- 这是厂家官方的 NPN 接法,传感器由控制器供电,不用另接电源。
- 线色以传感器自带说明书为准。三线制传感器的行业惯例是棕正、蓝负、黑信号,下图里的颜色只是示意,不要照图上的颜色接。
- 如果你的控制器型号端子上没有 COM+ / COM-,只有 VCC / GND / IN,那就棕接 VCC、蓝接 GND、黑接 IN1。
- 多个传感器时,第二个接 IN2,第三个接 IN3,以此类推。

(原图见 科星开关量接线图)
2.2 控制器供电¶
VCC 接电源正,GND 接电源负。上电后 POWER 灯常亮。
2.3 控制器接电脑¶
232 转 485 的 1 接控制器 485 端子的 A(或 A+),2 接 B(或 B-)。接反不会烧,但通不了,读不到就先对调 A、B 试一次。
插上电脑后,打开"设备管理器 → 端口(COM 和 LPT)",记下这根线的 COM 口号,例如 COM5。如果分不清就多尝试一下确认是 COM 几。
3. 用厂家软件验证接线(必做,约 5 分钟)¶
- 打开"串口继电器调试软件 V1.1.0",串口选刚才记下的 COM 口,波特率选 9600,点"打开串口"。
- 软件会自动读出设备地址,出厂是 1。读不出来,先检查 A、B 有没有接反。
- 切到"开关量状态读取(03 功能码)"页,点"读取开关量状态"。此时 DI1 应显示灰色"无信号"。
- 用手挡住传感器(或把工件放到传感器前),再点一次"读取开关量状态",DI1 应变成黄色"有信号"。变了说明传感器和控制器都通了。
- 看软件左下角的"接收数据"一行,记下第一路返回的寄存器值。正常是 0001。这个数后面填软件要用。
- 到"基础联动+主动上传"页确认"开关量主动上传"没有开启(出厂是被动)。开了会往串口乱发数据,干扰软件轮询。
- 验证完关闭厂家软件。串口只能被一个程序占用,厂家软件不关,labeldetect 打不开串口。
4. labeldetect 软件设置¶
4.1 通讯设备(运行端 → 菜单"设备设置")¶
| 项 | 填写 |
|---|---|
| device type | MODBUSRTU |
| 端口 | 第 2.3 步记下的 COM 口,例如 COM5 |
| 波特率 | 9600 |
| 数据位 | 8 |
| 校验 | N |
| 停止位 | 1 |
| 超时 | 1.0 |
点确定关闭对话框后,软件会立刻按新参数打开串口,不用重启。如果此时弹出"打开串口失败"的提示,先确认厂家调试软件已经关闭、COM 口号没填错。
4.2 相机触发模式¶
在相机设置里把触发模式设为软触发。
4.3 在运行顺序里插入"通讯触发"(调试端 → "编辑运行顺序")¶
- 打开"编辑运行顺序"窗口,在指令表任意一行点右键,选"插入通讯触发",表里会多出一行 (trigger#1)。
- 选中 (trigger#1) 这一行,右侧参数按下表填写:
| 项 | 填写 | 说明 |
|---|---|---|
| 从站ID | 1 | 控制器地址,第 3 步第 2 点读到的那个数 |
| 寄存器类型 | READ_HOLDING_REGISTERS | 下拉第 3 项。不要选其它三项 |
| 地址 | 12288 | 对应控制器第 1 路开关量(厂家文档里的 0x3000)。IN2 填 12289,IN3 填 12290,以此类推 |
| 触发条件值 | 1 | 第 3 步第 5 点记下的返回值,通常是 1 |
| 读取间隔 | 0.05 | 单位秒。默认 0.2 太慢,容易漏掉短信号 |
| 触发延时 | 0 | 单位秒。传感器到相机之间有距离、需要等工件到位再拍时,这里加延时 |
注意:
- 寄存器类型只能选 READ_HOLDING_REGISTERS。READ_DISCRETE_INPUTS 在部分版本里不可用,选了会一直等不到触发。
- 地址填 12288,不要填 0,也不要按 PLC 组态手册"加 1"。
-
有几台相机要用同一个传感器触发,只插一个 (trigger#1) 即可,后面的相机会一起拍。
-
把 (trigger#1) 用鼠标拖到拍照那一行的前面。顺序是:先等触发,再拍照,再检测,再输出。
- 在拍照那一行点右键,选"设为主动触发"。这样信号一到相机立刻曝光,时序最准。
- 点"保存"。
5. 试运行验证¶
- 点运行。运行日志应出现"等待通讯触发(trigger#1)",软件停在这里等信号。
- 用手挡一下传感器。日志应依次出现"通讯触发(trigger#1)完成"→ 相机名"开始拍照并合成"→ 检测结果。
- 松开传感器,日志回到"等待通讯触发",等下一件。
到这一步就可以上线了。
6. 注意事项与常见问题¶
触发方式是"看到信号就拍",不是"信号变化才拍"。 工件必须是"经过"传感器。如果工件停在传感器前面不走,软件拍完一轮回来发现信号还在,会再拍一次,一直重复。安装传感器时要保证工件通过后信号消失。
信号太短会漏拍。 软件每 0.05 秒读一次,加上串口一来一回的时间,传感器被遮挡的时间至少要 0.1 秒。工件很小、速度很快时,把传感器装在工件较长的一侧,或用带"延时断开"功能的传感器。
一直停在"等待通讯触发"。 按顺序检查:
- 厂家调试软件是不是还开着占了串口。
- 设备设置里的 COM 口号对不对(拔插 USB 线后 COM 号可能变)。
- 485 的 A、B 是否接反,对调试一次。
- 波特率是否 9600、从站 ID 是否 1(在厂家软件里能读出来就没问题)。
- 挡住传感器时,厂家软件里 DI1 是否变黄。不变黄是传感器接线问题。
- 厂家软件里返回值是不是 1。不是 1 就把"触发条件值"改成实际返回的数。
软件报"Modbus RTU failed to open serial port"。 串口被别的程序占用,或者 USB 转 485 线没插好、驱动没装。
只想换传感器,不想动软件。 只要还是 NPN 三线制,直接换,软件不用改。换成 PNP 传感器接线不同,先联系我们。
7. 备用方案(第 4 步读不到值时才用)¶
在厂家软件"基础联动+主动上传"页,把第 1 路输入设为"联动开关量 带锁",这样传感器一挡,继电器 DO1 跟着吸合、松开就断开。然后 labeldetect 里通讯触发改成:
| 项 | 填写 |
|---|---|
| 寄存器类型 | READ_COILS |
| 地址 | 0 |
| 触发条件值 | 1 |
缺点:每拍一次继电器响一次,机械继电器有寿命,产量大的产线不建议长期用。
附:控制器 Modbus 指令速查(来自厂家文档)¶
| 功能 | 功能码 | 起始地址 | 说明 |
|---|---|---|---|
| 读开关量输入(单路) | 03 | 0x3000(十进制 12288) | 每路一个寄存器,第 1 路 0x3000。本方案用这条 |
| 读开关量输入(按位) | 02 | 0x0000 | 一个字节 8 路,bit0 为第 1 路。labeldetect 部分版本不支持 |
| 读继电器状态 | 01 | 0x0000 | 一个字节 8 路 |
| 读继电器状态(单路) | 03 | 0x1000(十进制 4096) | 每路一个寄存器 |
| 控制继电器 | 05 | 0x0000 | FF00 吸合,0000 断开 |
出厂串口参数:9600,8,N,1;设备地址 1。CRC 为标准 Modbus CRC16。