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
|
*$py.class
|
||||||
|
|
||||||
# 虚拟环境
|
# 虚拟环境
|
||||||
.env/
|
|
||||||
.venv/
|
.venv/
|
||||||
env/
|
|
||||||
venv/
|
venv/
|
||||||
ENV/
|
ENV/
|
||||||
|
|
||||||
# 环境变量文件 (包含敏感信息)
|
# 环境变量文件 (包含敏感信息)
|
||||||
.env
|
|
||||||
.env.local
|
|
||||||
.env.*.local
|
|
||||||
|
|
||||||
# 数据库文件 (SQLite 本地缓存)
|
# 数据库文件 (SQLite 本地缓存)
|
||||||
*.db
|
*.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():
|
def get_signal_config():
|
||||||
"""获取信号节点配置"""
|
"""获取信号节点配置"""
|
||||||
return {
|
return {
|
||||||
"signal1_node": opc_service.signal1_node,
|
|
||||||
"signal2_node": opc_service.signal2_node,
|
"signal2_node": opc_service.signal2_node,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +660,6 @@ def get_signal_config():
|
|||||||
@app.post("/api/opc/signals")
|
@app.post("/api/opc/signals")
|
||||||
async def save_signal_config(data: dict):
|
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)
|
opc_service.signal2_node = data.get("signal2_node", opc_service.signal2_node)
|
||||||
try:
|
try:
|
||||||
opc_service.save_config()
|
opc_service.save_config()
|
||||||
@@ -675,11 +673,7 @@ async def save_signal_config(data: dict):
|
|||||||
# 模拟信号接口 (用于测试)
|
# 模拟信号接口 (用于测试)
|
||||||
# ─────────────────────────────────────────────
|
# ─────────────────────────────────────────────
|
||||||
|
|
||||||
@app.post("/api/track/simulate/signal1")
|
# 信号1模拟API已移除 - 信号1不再使用
|
||||||
async def simulate_signal1():
|
|
||||||
"""模拟信号1触发 - 获取下5个钢卷"""
|
|
||||||
await opc_service._handle_signal1()
|
|
||||||
return {"message": "信号1已触发"}
|
|
||||||
|
|
||||||
|
|
||||||
@app.post("/api/track/simulate/signal2")
|
@app.post("/api/track/simulate/signal2")
|
||||||
|
|||||||
@@ -1,15 +1,39 @@
|
|||||||
{
|
{
|
||||||
"opc_url": "opc.tcp://127.0.0.1:49320",
|
"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,
|
"poll_interval": 2,
|
||||||
"trackmap_nodes": {},
|
"trackmap_nodes": {},
|
||||||
"signal1_node": "ns=2;s=PL.Signal.EntryCoil",
|
"signal2_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.WeldDone",
|
||||||
"signal2_node": "ns=2;s=PL.Signal.WeldDone",
|
"write_counter_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.WriteCounter",
|
||||||
"write_counter_node": "",
|
"write_source_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.Source",
|
||||||
"write_source_node": "",
|
"write_target_node": "ns=2;s=通道 1.PLCFur.LineMeasure-1.Target",
|
||||||
"write_target_node": "",
|
"write_s7_endpoint": "140.80.0.2:102",
|
||||||
|
"write_s7_rack": 0,
|
||||||
|
"write_s7_slot": 1,
|
||||||
"write_nodes": {
|
"write_nodes": {
|
||||||
"1": {},
|
"1": {
|
||||||
"2": {}
|
"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
|
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 self.track_state == "WAIT_S1":
|
||||||
if signal1_value is not None and self.signal1_last is not None:
|
# 不再处理信号1的自动化触发
|
||||||
if self.signal1_last == 0 and signal1_value == 1 and counter_changed:
|
# 信号1只能通过手动调用API或信号2内部逻辑触发
|
||||||
self._log(f"Signal1: Entry coil triggered (0->1) with counter change, state={self.track_state}")
|
pass
|
||||||
await self._handle_signal1()
|
|
||||||
self.track_state = "WAIT_S2"
|
|
||||||
self.last_counter_at_state_change = current_counter
|
|
||||||
|
|
||||||
elif self.track_state == "WAIT_S2":
|
elif self.track_state == "WAIT_S2":
|
||||||
if signal2_value is not None and self.signal2_last is not None:
|
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" />
|
<el-input v-model="form.counter_node" placeholder="ns=2;s=PL.TRACKMAP.COUNTER" style="width:360px" />
|
||||||
<span class="hint">追踪流程计数器,节点值变化时触发采集</span>
|
<span class="hint">追踪流程计数器,节点值变化时触发采集</span>
|
||||||
</el-form-item>
|
</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-form-item label="信号2(焊接完成)">
|
||||||
<el-input v-model="form.signal2_node" placeholder="ns=2;s=PL.Signal.WeldDone" style="width:360px" />
|
<el-input v-model="form.signal2_node" placeholder="ns=2;s=PL.Signal.WeldDone" style="width:360px" />
|
||||||
<span class="hint">焊接完成信号,0→1且计数器变化触发</span>
|
<span class="hint">焊接完成信号,0→1且计数器变化触发</span>
|
||||||
|
|||||||
@@ -15,6 +15,12 @@ set "BACKEND_DIR=backend"
|
|||||||
set "FRONTEND_DIR=frontend"
|
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 环境...
|
echo [1/4] 检查并创建 conda 环境...
|
||||||
conda env list | findstr %CONDA_ENV%
|
conda env list | findstr %CONDA_ENV%
|
||||||
if %errorlevel% equ 0 (
|
if %errorlevel% equ 0 (
|
||||||
@@ -33,8 +39,11 @@ cd ..
|
|||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo [4/4] 启动前后端...
|
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
|
timeout /t 2 /nobreak >nul
|
||||||
|
|
||||||
|
:: 启动前端
|
||||||
start "【前端】" cmd /k "chcp 65001 & cd /d ""%FRONTEND_DIR%"" & npm run serve"
|
start "【前端】" cmd /k "chcp 65001 & cd /d ""%FRONTEND_DIR%"" & npm run serve"
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
|
|||||||
Reference in New Issue
Block a user