114 lines
5.6 KiB
Markdown
114 lines
5.6 KiB
Markdown
|
|
# 搭建步骤说明 —— RS485 → Pharos LPC 灯光控制系统
|
|||
|
|
|
|||
|
|
日期:2026-10-09
|
|||
|
|
|
|||
|
|
## 1. 系统组成
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
发送方(PC / ESP32 / 任意串口主机)
|
|||
|
|
│ RS485 总线 A/B 双绞线(9600 8N1,ASCII 帧 \n 结尾)
|
|||
|
|
▼
|
|||
|
|
Pharos LPC 控制器(0140650,IP 192.168.58.109)
|
|||
|
|
│ DMX universe 1 通道 1~32
|
|||
|
|
▼
|
|||
|
|
32 路灯光(Generic Conventional 8 bit 调光通道)
|
|||
|
|
|
|||
|
|
照度计(仁科 485 型,Modbus 地址 2,4800 8N1)挂在同一 485 总线,
|
|||
|
|
由 Ubuntu 主机(192.168.58.7,/dev/ttyUSB0)轮询后转发 LUX=/LX2= 帧给 LPC。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2. 硬件接线
|
|||
|
|
|
|||
|
|
1. 发送方串口(USB-485 或 ESP32 UART+485 模块)A→A、B→B 接入 LPC 的 RS485 端口。
|
|||
|
|
2. LPC 串口参数:RS485 模式,9600 8N1(Designer → Network 视图 → Interfaces → Serial Port 设置)。
|
|||
|
|
3. DMX 输出:LPC DMX1 口接灯具/调光硅箱。
|
|||
|
|
4. 照度计接同一总线(注意其为 4800 波特率,与 LPC 9600 混跑,互不干扰)。
|
|||
|
|
|
|||
|
|
## 3. Designer 2 项目搭建(0140650.pd2)
|
|||
|
|
|
|||
|
|
### 3.1 灯具与 Patch
|
|||
|
|
|
|||
|
|
1. Layout 视图:Fixture Library 选 `Generic > Conventional 8 bit`,取消 Auto finish,
|
|||
|
|
在网格上连续点击放置 32 个(8 列 × 4 行),Finish。自动归入组 `All Conventional 8 bit`。
|
|||
|
|
2. Patch 视图:从左侧灯具树**拖拽**灯具到 DMX universe 1 的通道格子(点击/双击格子无效),
|
|||
|
|
完成灯具 1~32 → 通道 1~32。
|
|||
|
|
3. Patch 视图 → DMX universe 1 → eDMX Pass-Through 设为 **None**(本地模式;
|
|||
|
|
直通优先级高于本地输出,二者不可叠加)。
|
|||
|
|
|
|||
|
|
### 3.2 Timeline(FX 效果)
|
|||
|
|
|
|||
|
|
Timeline 视图 → 工具栏 New 建 4 条 Timeline。块放置方法:
|
|||
|
|
**双击右侧 Built-in 面板的效果图标(画布出现蓝框)→ 单击画布空白处提交**;
|
|||
|
|
块只在选中时渲染;紧邻后块会锁定前块 Release 字段(先设好 Release 再放下一块);
|
|||
|
|
属性在右侧面板直接编辑(Start / Length / Fade / Release)。
|
|||
|
|
|
|||
|
|
| Timeline | 效果 | 配置 |
|
|||
|
|
|----------|------|------|
|
|||
|
|
| 1 | 常亮 | White 块 0-30s,Level 255 |
|
|||
|
|
| 2 | 呼吸 | 4 个 White 块:0-8 / 8-16 / 16-24 / 24-30s,Fade 4 / Release 4(末块 3/3) |
|
|||
|
|
| 3 | 闪烁 | White 块 0-30s,Shape=Square,Base 0 / Size 255 / Loop Period 1.00s |
|
|||
|
|
| 4 | 缓变 | White 块 0-30s,Fade 15 / Release 15 |
|
|||
|
|
|
|||
|
|
**循环播放(2026-10-10 补)**:Timeline 默认播完 Length 即 released(灯灭)。
|
|||
|
|
工具栏 **Loop 按钮**(↻ 单环图标,悬停提示 "Loop",位置约 x=358;标尺末端出现循环标记为开启)
|
|||
|
|
已给 4 条 Timeline 逐一开启,但实测单独开启对控制器运行**不生效**;
|
|||
|
|
实际由触发器 **#13 FXLoop**(Type=Timeline Ended, Timeline=Any → Run Script 重启该时间线)实现循环。
|
|||
|
|
注意区分另两个相似按钮:**Hold At End**(→|,x=326,末端保持不释放)和
|
|||
|
|
**Enable Looping**(↻ 带两点,x=768,仅编辑器仿真循环,不上传控制器)。
|
|||
|
|
|
|||
|
|
### 3.3 触发器(Trigger 视图)
|
|||
|
|
|
|||
|
|
工具栏 Trigger → New... → Serial Input,每个触发器加 Action → Run Script → Quick Script 粘贴对应 Lua。
|
|||
|
|
|
|||
|
|
| # | String | 脚本文件 | 功能 |
|
|||
|
|
|---|--------|----------|------|
|
|||
|
|
| 2 | `BRT=<3d>` | lpc_serial_brt.lua | 手动亮度 0~100% → master_intensity |
|
|||
|
|
| 8 | `LUX=<6d>` | lpc_serial_lux.lua | 照度闭环自动调光 |
|
|||
|
|
| 9 | `LXT=<6d>` | lpc_serial_lxt.lua | 设定目标照度(变量 lux_target) |
|
|||
|
|
| 10 | `LX2=<6d>` | lpc_serial_lx2.lua | 照度→亮度对数映射(指示模式) |
|
|||
|
|
| 11 | `FX=<2d>` | lpc_serial_fx.lua | 效果选择:清 Override + `get_timeline(N):start_release_others()` |
|
|||
|
|
| 12 | `SC=<2d>` | lpc_serial_sc.lua | 场景选择:释放全部 Timeline + `get_group_override(0):set_intensity(level, 1.0)` |
|
|||
|
|
| 13 | Timeline Ended(Any) | lpc_fxloop.lua | 时间线到末尾自动重启实现循环;SC 释放属 Timeline Released 不会误触发 |
|
|||
|
|
|
|||
|
|
SC 亮度预设:01=255 全亮 / 02=128 半亮 / 03=26 微亮 / 04=0 全灭。
|
|||
|
|
|
|||
|
|
### 3.4 保存与上传
|
|||
|
|
|
|||
|
|
1. 保存:Ctrl+S 或 Project 视图 → Save Project(标题栏的 "*" 是应用图标不是未保存标记;
|
|||
|
|
以文件 LastWriteTime / Recent Projects 列表的 Last modified 更新为准)。
|
|||
|
|
2. Network 视图 → Upload → 选中设备行 → Upload All → 等 "Upload complete" → Close。
|
|||
|
|
3. **注意:Upload 会清空控制器上的 Override**;SC 场景需重新下发。
|
|||
|
|
4. 归档:把 `C:\Users\tonycao\Documents\0140650.pd2` 复制到本项目目录。
|
|||
|
|
|
|||
|
|
## 4. Ubuntu 侧部署(192.168.58.7)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 文件
|
|||
|
|
~/rs485-lpc_test_rs485.py # 串口收发工具
|
|||
|
|
~/rs485-lpc/lux_sync.py # 照度轮询→BRT 帧推送(反逻辑:越暗越亮)
|
|||
|
|
~/rs485-lpc/scan_modbus.py # Modbus 地址/寄存器扫描
|
|||
|
|
~/rs485-lpc/loop_test.sh # BRT 回归
|
|||
|
|
~/rs485-lpc/lux_test.sh # 照度闭环回归
|
|||
|
|
~/rs485-lpc/api_smoke.sh # LPC API 冒烟
|
|||
|
|
|
|||
|
|
# 启动照度同步(后台常驻)
|
|||
|
|
setsid bash -c 'nohup python3 ~/rs485-lpc/lux_sync.py > ~/rs485-lpc/lux_sync.log 2>&1 < /dev/null &'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
上传文件用 `Put-Remote.ps1`(-Remote 参数必须是目录 `/home/tonycao/rs485-lpc`),
|
|||
|
|
远程执行用 `Run-Remote.ps1 -Cmd "..."`(Posh-SSH,密码 "0";Windows 自带 ssh.exe 会挂死,勿用)。
|
|||
|
|
|
|||
|
|
## 5. 验证
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 发帧(Ubuntu)
|
|||
|
|
python3 ~/rs485-lpc_test_rs485.py -s 'FX=02'
|
|||
|
|
|
|||
|
|
# 查 LPC 状态(Windows)
|
|||
|
|
curl.exe http://192.168.58.109/api/timeline # running/released/none
|
|||
|
|
curl.exe "http://192.168.58.109/api/output?universe=dmx:1" # 32 通道实时值
|
|||
|
|
curl.exe http://192.168.58.109/api/group # master_intensity 回读
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
回归脚本:`loop_test.sh`(5/5)、`lux_test.sh`(7/7)、`lx2_test.sh`(8/8)。
|