refactor(opc): 移除信号1相关功能并更新配置
移除前端信号1配置项、后端信号1处理逻辑及相关API 更新OPC配置节点信息及启动脚本conda初始化
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -21,16 +21,11 @@ __pycache__/
|
||||
*$py.class
|
||||
|
||||
# 虚拟环境
|
||||
.env/
|
||||
.venv/
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
|
||||
# 环境变量文件 (包含敏感信息)
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# 数据库文件 (SQLite 本地缓存)
|
||||
*.db
|
||||
|
||||
11
backend/.env
Normal file
11
backend/.env
Normal file
@@ -0,0 +1,11 @@
|
||||
# Oracle Database
|
||||
ORACLE_DSN=localhost:1521/orcl
|
||||
ORACLE_USER=pltm
|
||||
ORACLE_PASSWORD=pltm123
|
||||
|
||||
# OPC-UA Server
|
||||
OPC_URL=opc.tcp://127.0.0.1:49320
|
||||
OPC_COUNTER_NODE=ns=2;s=通道 1.PLCFur.LineMeasure-1.SystemCounter
|
||||
OPC_POLL_INTERVAL=2
|
||||
|
||||
|
||||
@@ -653,7 +653,6 @@ def get_coils_by_range(start: int = Query(1), end: int = Query(5)):
|
||||
def get_signal_config():
|
||||
"""获取信号节点配置"""
|
||||
return {
|
||||
"signal1_node": opc_service.signal1_node,
|
||||
"signal2_node": opc_service.signal2_node,
|
||||
}
|
||||
|
||||
@@ -661,7 +660,6 @@ def get_signal_config():
|
||||
@app.post("/api/opc/signals")
|
||||
async def save_signal_config(data: dict):
|
||||
"""保存信号节点配置"""
|
||||
opc_service.signal1_node = data.get("signal1_node", opc_service.signal1_node)
|
||||
opc_service.signal2_node = data.get("signal2_node", opc_service.signal2_node)
|
||||
try:
|
||||
opc_service.save_config()
|
||||
@@ -675,11 +673,7 @@ async def save_signal_config(data: dict):
|
||||
# 模拟信号接口 (用于测试)
|
||||
# ─────────────────────────────────────────────
|
||||
|
||||
@app.post("/api/track/simulate/signal1")
|
||||
async def simulate_signal1():
|
||||
"""模拟信号1触发 - 获取下5个钢卷"""
|
||||
await opc_service._handle_signal1()
|
||||
return {"message": "信号1已触发"}
|
||||
# 信号1模拟API已移除 - 信号1不再使用
|
||||
|
||||
|
||||
@app.post("/api/track/simulate/signal2")
|
||||
|
||||
@@ -1,15 +1,39 @@
|
||||
{
|
||||
"opc_url": "opc.tcp://127.0.0.1:49320",
|
||||
"counter_node": "ns=2;s=PL.TRACKMAP.COUNTER",
|
||||
"counter_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.COUNTER",
|
||||
"poll_interval": 2,
|
||||
"trackmap_nodes": {},
|
||||
"signal1_node": "ns=2;s=PL.Signal.EntryCoil",
|
||||
"signal2_node": "ns=2;s=PL.Signal.WeldDone",
|
||||
"write_counter_node": "",
|
||||
"write_source_node": "",
|
||||
"write_target_node": "",
|
||||
"signal2_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.WeldDone",
|
||||
"write_counter_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.WriteCounter",
|
||||
"write_source_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.Source",
|
||||
"write_target_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.Target",
|
||||
"write_s7_endpoint": "140.80.0.2:102",
|
||||
"write_s7_rack": 0,
|
||||
"write_s7_slot": 1,
|
||||
"write_nodes": {
|
||||
"1": {},
|
||||
"2": {}
|
||||
"1": {
|
||||
"setup_data_revision": "DB35501.DINT0",
|
||||
"coilid": "DB35501.DBB4",
|
||||
"entry_coil_weight": "DB35501.DBD26",
|
||||
"entry_of_coil_length": "DB35501.DBD30",
|
||||
"entry_coil_width": "DB35501.DBD34",
|
||||
"entry_coil_thickness": "DB35501.DBD38",
|
||||
"entry_of_coil_inner_diameter": "DB35501.DBD42",
|
||||
"entry_of_coil_outer_diameter": "DB35501.DBD46",
|
||||
"alloy_code": "DB35501.DBB50",
|
||||
"material": "DB35501.DBB56"
|
||||
},
|
||||
"2": {
|
||||
"setup_data_revision": "DB35501.DINT0",
|
||||
"coilid": "DB35501.DBB78",
|
||||
"entry_coil_weight": "DB35501.DBD100",
|
||||
"entry_of_coil_length": "DB35501.DBD104",
|
||||
"entry_coil_width": "DB35501.DBD108",
|
||||
"entry_coil_thickness": "DB35501.DBD112",
|
||||
"entry_of_coil_inner_diameter": "DB35501.DBD116",
|
||||
"entry_of_coil_outer_diameter": "DB35501.DBD120",
|
||||
"alloy_code": "DB35501.DBB124",
|
||||
"material": "DB35501.DBB130"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -272,14 +272,12 @@ class OpcService:
|
||||
|
||||
counter_changed = current_counter != self.last_counter_at_state_change
|
||||
|
||||
# State machine for signal processing
|
||||
# Signal1自动化处理已禁用 - 只允许手动调用_handle_signal1函数
|
||||
# 信号1不再响应自动化触发,确保双向保护
|
||||
if self.track_state == "WAIT_S1":
|
||||
if signal1_value is not None and self.signal1_last is not None:
|
||||
if self.signal1_last == 0 and signal1_value == 1 and counter_changed:
|
||||
self._log(f"Signal1: Entry coil triggered (0->1) with counter change, state={self.track_state}")
|
||||
await self._handle_signal1()
|
||||
self.track_state = "WAIT_S2"
|
||||
self.last_counter_at_state_change = current_counter
|
||||
# 不再处理信号1的自动化触发
|
||||
# 信号1只能通过手动调用API或信号2内部逻辑触发
|
||||
pass
|
||||
|
||||
elif self.track_state == "WAIT_S2":
|
||||
if signal2_value is not None and self.signal2_last is not None:
|
||||
|
||||
@@ -18,10 +18,6 @@
|
||||
<el-input v-model="form.counter_node" placeholder="ns=2;s=PL.TRACKMAP.COUNTER" style="width:360px" />
|
||||
<span class="hint">追踪流程计数器,节点值变化时触发采集</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="信号1(入口钢卷)">
|
||||
<el-input v-model="form.signal1_node" placeholder="ns=2;s=PL.Signal.EntryCoil" style="width:360px" />
|
||||
<span class="hint">入口钢卷信号,0→1触发</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="信号2(焊接完成)">
|
||||
<el-input v-model="form.signal2_node" placeholder="ns=2;s=PL.Signal.WeldDone" style="width:360px" />
|
||||
<span class="hint">焊接完成信号,0→1且计数器变化触发</span>
|
||||
|
||||
@@ -15,6 +15,12 @@ set "BACKEND_DIR=backend"
|
||||
set "FRONTEND_DIR=frontend"
|
||||
:: =====================================================
|
||||
|
||||
:: 初始化 conda(关键:让脚本内部能使用 conda 命令)
|
||||
for /f "delims=" %%i in ('conda info --base') do set "CONDA_BASE=%%i"
|
||||
call "%CONDA_BASE%\shell\condabin\conda-hook.cmd"
|
||||
echo ✅ conda 环境初始化完成
|
||||
|
||||
echo.
|
||||
echo [1/4] 检查并创建 conda 环境...
|
||||
conda env list | findstr %CONDA_ENV%
|
||||
if %errorlevel% equ 0 (
|
||||
@@ -33,8 +39,11 @@ cd ..
|
||||
|
||||
echo.
|
||||
echo [4/4] 启动前后端...
|
||||
start "【后端】" cmd /k "chcp 65001 & call conda activate %CONDA_ENV% & cd /d ""%BACKEND_DIR%"" & uvicorn main:app --host 0.0.0.0 --port 8000 --reload"
|
||||
:: 启动后端
|
||||
start "【后端】" cmd /k "chcp 65001 & for /f "delims=" %%i in ('conda info --base') do set "CONDA_BASE=%%i" & call "%%CONDA_BASE%%\shell\condabin\conda-hook.cmd" & call conda activate %CONDA_ENV% & cd /d ""%BACKEND_DIR%"" & uvicorn main:app --host 0.0.0.0 --port 8000 --reload"
|
||||
timeout /t 2 /nobreak >nul
|
||||
|
||||
:: 启动前端
|
||||
start "【前端】" cmd /k "chcp 65001 & cd /d ""%FRONTEND_DIR%"" & npm run serve"
|
||||
|
||||
echo.
|
||||
|
||||
Reference in New Issue
Block a user