feat(opc): 添加S7直写支持并更新字段映射格式

- 在OpcConfig模型中新增S7终端、机架和槽位配置
- 实现S7直写功能,替代原有的OPC写入方式
- 更新前端字段映射占位符为S7地址格式
- 修改焊接完成信号触发条件说明
- 添加S7 INT32读取功能用于数据版本控制
This commit is contained in:
2026-04-24 16:58:58 +08:00
parent 95ec77afae
commit 8b15f78e78
4 changed files with 238 additions and 48 deletions

View File

@@ -24,7 +24,7 @@
</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">焊接完成信号01保持2秒触发</span>
<span class="hint">焊接完成信号01且计数器变化触发</span>
</el-form-item>
</el-form>
@@ -42,16 +42,24 @@
<el-input v-model="form.write_target_node" placeholder="ns=2;s=PL.Material.Target" style="width:360px" />
<span class="hint">1=一号开卷机, 2=二号开卷机</span>
</el-form-item>
<el-form-item label="S7 终端">
<el-input v-model="form.write_s7_endpoint" placeholder="192.168.0.10:102" style="width:360px" />
<span class="hint">计划写入采用 S7 直写格式 IP:PORT</span>
</el-form-item>
<el-form-item label="S7 Rack/Slot">
<el-input-number v-model="form.write_s7_rack" :min="0" :max="7" style="width:120px" />
<el-input-number v-model="form.write_s7_slot" :min="0" :max="31" style="width:120px;margin-left:8px" />
</el-form-item>
</el-form>
<div class="panel-title" style="margin-top:16px">一号开卷机字段映射</div>
<div class="panel-title" style="margin-top:16px">一号开卷机字段地址映射(S7)</div>
<div v-for="field in writeFieldDefs" :key="'u1-' + field.key" class="node-row">
<div class="field-label">{{ field.label }}</div>
<span class="arrow"></span>
<el-input v-model="writeNodes['1'][field.key]" :placeholder="field.placeholder" size="small" style="width:320px" />
</div>
<div class="panel-title" style="margin-top:16px">二号开卷机字段映射</div>
<div class="panel-title" style="margin-top:16px">二号开卷机字段地址映射(S7)</div>
<div v-for="field in writeFieldDefs" :key="'u2-' + field.key" class="node-row">
<div class="field-label">{{ field.label }}</div>
<span class="arrow"></span>
@@ -109,19 +117,22 @@ export default {
signal2_node: '',
write_counter_node: '',
write_source_node: '',
write_target_node: ''
write_target_node: '',
write_s7_endpoint: '',
write_s7_rack: 0,
write_s7_slot: 1
},
writeFieldDefs: [
{ key: 'setup_data_revision', label: '设置数据修改', placeholder: 'ns=2;s=PL.Setup.DataRevision' },
{ key: 'coilid', label: '钢卷ID', placeholder: 'ns=2;s=PL.Entry1.CoilId' },
{ key: 'entry_coil_weight', label: '入口钢卷重量', placeholder: 'ns=2;s=PL.Entry1.Weight' },
{ key: 'entry_of_coil_length', label: '长度', placeholder: 'ns=2;s=PL.Entry1.Length' },
{ key: 'entry_coil_width', label: '宽度', placeholder: 'ns=2;s=PL.Entry1.Width' },
{ key: 'entry_coil_thickness', label: '厚度', placeholder: 'ns=2;s=PL.Entry1.Thickness' },
{ key: 'entry_of_coil_inner_diameter', label: '钢卷内径', placeholder: 'ns=2;s=PL.Entry1.InnerDiameter' },
{ key: 'entry_of_coil_outer_diameter', label: '钢卷外径', placeholder: 'ns=2;s=PL.Entry1.OuterDiameter' },
{ key: 'alloy_code', label: '合金代码', placeholder: 'ns=2;s=PL.Entry1.AlloyCode' },
{ key: 'material', label: '材质', placeholder: 'ns=2;s=PL.Entry1.Material' }
{ key: 'setup_data_revision', label: '设置数据修改', placeholder: 'DB35501.DINT0' },
{ key: 'coilid', label: '钢卷ID', placeholder: 'DB35501.Byte4 (A20)' },
{ key: 'entry_coil_weight', label: '入口钢卷重量', placeholder: 'DB35501.DBD26' },
{ key: 'entry_of_coil_length', label: '长度', placeholder: 'DB35501.DBD30' },
{ key: 'entry_coil_width', label: '宽度', placeholder: 'DB35501.DBD34' },
{ key: 'entry_coil_thickness', label: '厚度', placeholder: 'DB35501.DBD38' },
{ key: 'entry_of_coil_inner_diameter', label: '钢卷内径', placeholder: 'DB35501.DBD42' },
{ key: 'entry_of_coil_outer_diameter', label: '钢卷外径', placeholder: 'DB35501.DBD46' },
{ key: 'alloy_code', label: '合金代码', placeholder: 'DB35501.Byte50 (A4)' },
{ key: 'material', label: '材质', placeholder: 'DB35501.Byte54 (A20)' }
],
writeNodes: { '1': {}, '2': {} },
nodeList: [],
@@ -148,6 +159,9 @@ export default {
this.form.write_counter_node = cfg.write_counter_node || ''
this.form.write_source_node = cfg.write_source_node || ''
this.form.write_target_node = cfg.write_target_node || ''
this.form.write_s7_endpoint = cfg.write_s7_endpoint || ''
this.form.write_s7_rack = cfg.write_s7_rack ?? 0
this.form.write_s7_slot = cfg.write_s7_slot ?? 1
this.writeNodes = {
'1': { ...(cfg.write_nodes?.['1'] || {}) },
'2': { ...(cfg.write_nodes?.['2'] || {}) }