ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

西门子GRAPH步序转威纶通HMI显示:数据驱动的一体化方案

西门子GRAPH步序转威纶通HMI显示:数据驱动的一体化方案 先给结论在很多顺序控制项目里PLC侧用西门子GRAPH把工艺流程写得再完整只要HMI显示没跟上交付那一刻还是会“露馅”。操作员不关心你在GRAPH里用了多少互锁条件他们只关心三件事现在执行到第几步、这一步在干什么、卡住是因为哪个条件没满足。但S7-GRAPH和威纶通触摸屏之间官方并没有提供一条“把GRAPH步序直接同步到HMI”的通道。你在GRAPH里每增加一个步骤、改一次步注释HMI端就要手工补标签、调画面、改文字。项目步数一多这套流程的维护成本会高到让人怀疑人生PLC侧步号已经跑到20HMI画面上还停着旧注释这种事故在交付现场几乎必现。这篇文章按“一镜到底”的方式把从PLC端到触摸屏端的完整链路拆给你看在GRAPH中如何把当前步号稳定地写出来如何把步骤清单整理成一份可读、可改、可入库的XML文件如何用Python脚本把XML转换成威纶通EBPro可导入的标签文件以及如何在HMI端用脚本JS/宏把步号映射成中文步骤说明。文章最后还会给出常见问题排查表和工程最佳实践。整套方案的核心目标只有一个让“GRAPH步序 → HMI显示”从手工维护变成数据驱动维护。无论你用的是S7-1200、S7-1500还是老型号S7-300这套转换思路都能复用差异只在地址规划和GRAPH版本细节上。1. GRAPH步序显示到底难在哪1.1 操作员真正想看到的东西在一条典型的自动化产线上GRAPH背景下的HMI画面通常需要显示三类信息当前步号机器现在走到哪个步骤比如“第3步 / 共12步”。当前步骤含义这一步在做什么比如“夹紧工装”“检测尺寸”“等待气缸退回到位”。步骤状态位某些关键步骤是否动作完成或者哪些步骤处于等待/互锁状态。这三类信息看着简单但每一项都对应到PLC和HMI之间的一组数据。GRAPH步序不是一个“能用鼠标一键拖到HMI”的元件它对应的是DB块里的一堆位和字。要在威纶通上显示本质工作是把GRAPH的“运行状态”翻译成HMI能读到的“标签”。1.2 传统手工做法的三个坑如果项目很小只有五六个步骤手工建标签、做动画完全来得及。但步骤一旦超过20步问题就会集中爆发第一个坑是标签爆炸。每个步骤至少需要一个状态位标签加上当前步号、启动、停止、急停等控制位一个GRAPH程序轻松产生几十个标签。手工在EBPro里一个个建既慢又容易漏。第二个坑是注释不同步。GRAPH里的步注释是中文写的HMI画面里的文字又是另一份。改工艺时只改了GRAPH注释忘了改HMI画面结果操作员看到的是过时描述轻则误导重则引发误操作。第三个坑是画面维护成本高。每增删一个步骤就要重新摆放元件、调整动画、重新下载。项目后期需求变更是常态这套流程会吃掉大量调试时间。1.3 问题的本质传统做法的病根在于以画面为核心而不是以数据为核心。你维护的是散落在画面里的几百个元件而不是一份集中管理的步骤清单。更合理的做法是先有数据文件再由数据文件生成HMI所需的一切。GRAPH步序本身就是强结构化数据——步骤编号、步骤名称、步骤注释、状态位地址全部可以列成表格。既然能列成表格就能用XML保存用脚本转换一键导入HMI。2. 核心概念与总体方案2.1 几个关键概念先统一术语后面不会再重复解释。概念说明S7-GRAPH西门子TIA Portal中的顺序功能图编程语言适合顺序控制、状态机场景步骤StepGRAPH里最基本的执行单元一个Step对应一个工艺动作步号当前正在执行的Step编号是HMI显示“走到第几步”的关键数据DB块西门子数据块GRAPH的步号、控制位一般都要映射到固定的DB地址EBPro威纶通触摸屏组态软件MT/TM/cMT系列HMI都通过它组态标签TagEBPro里的数据接口用于把HMI和PLC地址对应起来宏指令/脚本威纶通HMI上的程序入口MT_iE系列通常叫宏指令cMT及新型号支持JavaScript/LuaXML一种可读的结构化数据文件用来保存GRAPH步骤清单供转换脚本读入2.2 传统方案与XML转换方案的对比对比维度传统手工方案XML数据驱动方案新增一个步骤HMI端建标签、加动画、写注释PLC端写步号动作CSV里加一行修改步注释到画面上一个一个改文字改XML或CSV的一行重新生成导入标签数量控制随步数线性增长人工维护脚本批量生成标签命名统一可追溯性依赖个人操作习惯XML可进Git历史版本可回滚出错的概率改错位、漏改、重复定义只要源数据正确生成结果一定一致2.3 总体链路整个方案分为四段PLC端在GRAPH里为每一步写出步号把步号写到固定DB地址。这是HMI显示的数据源头。源数据整理把步骤编号、步骤名称、步骤注释、状态位地址整理成CSV表格这是唯一需要人工维护的数据。转换脚本Python读取CSV生成一份graph_hmi.xml再读取XML生成威纶通EBPro需要的标签导入文件和HMI脚本文件。HMI端在EBPro中导入标签文件放置显示元件加入脚本下载运行。从这条链路可以看出中间环节全是脚本自动完成的人工只维护一份CSV/XML步骤清单。这就是“一镜到底”的含义。3. 环境准备与前置条件下面这些环境是本文示例用到的配置。实际项目以你手头的版本为准但大方向一致。项目建议配置说明PLC编程软件TIA Portal V16及以上低版本也能做只是GRAPH界面略有差异PLCS7-1200 / S7-1500S7-300的GRAPH也可以参考HMI组态软件威纶通EBPro 6.x版本不同菜单入口略有差异HMI型号MT8071iE 或支持脚本的cMT系列MT_iE系列用宏指令cMT系列可用JavaScriptPythonPython 3.8及以上用于执行转换脚本模拟软件S7-PLCSIM离线验证GRAPH步序跳转需要特别说明的是不同威纶通机型的脚本入口名称不同。有些机型叫“宏指令”有些叫“JavaScript脚本”还有些叫“Lua脚本”。本文后面会把逻辑写清楚你在具体机型上把API名称按手册调整即可。4. PLC侧让GRAPH把当前步号写出来4.1 在GRAPH块接口里预留步号要在HMI上显示“当前到第几步”最直接的办法是让GRAPH自己把步号写到一个公共变量里。以S7-1500为例在GRAPH功能块比如FB10的接口中增加一个整数型InOut变量或Output变量变量名数据类型方向说明StepNoINTInOut 或 Output当前激活步骤号StepNameSTRINGOutput当前步骤名称可选然后在GRAPH的每一步Actions区域里写一条赋值动作把当前步号写进StepNo。4.2 每个步骤的动作里写步号GRAPH编辑器中在每一步的Actions区域添加一行Step1 的 Actions: StepNo : 1; // 进入第1步时对外输出步号1 Step2 的 Actions: StepNo : 2; // 进入第2步时对外输出步号2以此类推。这种做法看起来笨但非常可靠因为它把“步号”这个信息和GRAPH本身的跳转逻辑绑定在一起不会出现HMI读到的步号和实际逻辑不一致的情况。4.3 为什么不用GRAPH状态位直接转换有人可能会问GRAPH实例DB里本身有激活状态位甚至可以通过系统功能读出当前步号为什么还要在每一步里手工写原因有三点地址不稳定GRAPH实例DB内部的步状态位布局跟GRAPH版本有关S7-300和S7-1500的偏移规则不完全一样直接解析容易踩版本坑。可读性差即使读到了状态位你还得在PLC侧做编码转换把位图变成整数步号这部分代码写起来不直观。可维护性差未来换GRAPH版本或重构程序时依赖内部状态位的逻辑会变得非常脆弱。而用“StepNo : n”这种显式赋值任何人打开GRAPH都能看懂。如果你已经有惯用的方式读出步号比如通过SFC或标准库函数也可以继续沿用关键是最终有一个INT类型的“当前步号”能稳定出现在固定地址上。本文后面假设这个地址是DB100.DBW2。4.4 DB块规划与地址统一建议在TIA Portal里新建一个全局数据块DB100专门存放GRAPH相关的HMI数据。注意取消“优化的块访问”否则无法使用DB100.DBW2这种绝对地址在威纶通里直接访问。一个推荐的DB规划如下地址数据类型变量名说明DB100.DBX0.0BOOLHMI_Start启动顺序控制DB100.DBX0.1BOOLHMI_Stop暂停顺序控制DB100.DBW2INTStepNo当前步号DB100.DBX10.0BOOLStep0_ACTIVE第0步激活空闲DB100.DBX10.1BOOLStep1_ACTIVE第1步激活DB100.DBX10.2BOOLStep2_ACTIVE第2步激活DB100.DBX10.3BOOLStep3_ACTIVE第3步激活DB100.DBX10.4BOOLStep4_ACTIVE第4步激活DB100.DBX10.5BOOLStep5_ACTIVE第5步激活这样规划后面生成威纶通标签时地址可以直接从DB100导出不会出现引用满天飞的情况。在GRAPH里写步号时直接对DB100.StepNo赋值。5. 把步骤清单整理成XML5.1 步骤清单的来源第4步完成之后PLC侧已经能输出一个稳定的步号。但HMI还需要“步骤注释”——每个步号对应的中文描述这些数据最好集中维护。步骤清单有三个来源你可以按实际情况选择从GRAPH编辑器复制到Excel在GRAPH的步骤列表上复制粘贴到Excel整理成表格。这是最常用的方式几乎所有TIA版本都支持。从GRAPH导出源文件解析在TIA Portal中右击GRAPH块选择“从块生成源”生成一个文本源文件。再用脚本正则解析STEP和TITLE提取步号和注释。直接在CSV里维护项目处于设计阶段时先画好CSV表格再回填到GRAPH里。这种“先有清单、后有程序”的方式最不容易出错。无论来源是哪种最终都要整理成统一格式的CSV供Python脚本读取。5.2 用一个合理的数据结构保存步骤信息新建一个steps.csv结构如下step_no,step_name,step_comment,status_bit_addr 0,IDLE,空闲未启动,DB100.DBX10.0 1,S1_INIT,初始化各气缸复位,DB100.DBX10.1 2,S2_CLAMP,夹紧工装,DB100.DBX10.2 3,S3_FEED,进给加工,DB100.DBX10.3 4,S4_CHECK,尺寸检测,DB100.DBX10.4 5,S5_UNLOAD,松开工装回到原点,DB100.DBX10.5注意编码如果里面有中文建议保存为UTF-8带BOM也可以避免后续脚本读取时出现乱码。这里把第0步定义成“空闲”是为了让HMI在没有启动时也能显示一个明确文本。5.3 用Python把CSV转成XML下面这个脚本读取steps.csv生成graph_hmi.xml。它同时写入PLC标签信息和步序表后续的威纶通转换脚本都从这个XML读取。# steps_csv_to_xml.py # 用法: python steps_csv_to_xml.py steps.csv graph_hmi.xml import csv import sys import xml.etree.ElementTree as ET def csv_to_xml(csv_path, xml_path): root ET.Element(GraphHmi, version1.0, creatorgraph_to_weinview) # PLC标签信息包含HMI需要用到的公共控制位和当前步号 logic ET.SubElement(root, LogicTags) logic.append(ET.Element(Tag, name启动, addressDB100.DBX0.0, dataTypeBIT, comment启动顺序控制)) logic.append(ET.Element(Tag, name停止, addressDB100.DBX0.1, dataTypeBIT, comment暂停顺序控制)) logic.append(ET.Element(Tag, name当前步号, addressDB100.DBW2, dataTypeINT, commentGRAPH当前激活步)) # 步骤表 steps ET.SubElement(root, StepTable) with open(csv_path, encodingutf-8-sig) as f: for row in csv.DictReader(f): step ET.SubElement(steps, Step) step.set(no, row[step_no].strip()) step.set(name, row[step_name].strip()) step.set(comment, row[step_comment].strip()) step.set(statusBit, row[status_bit_addr].strip()) # Python 3.9 自带ET.indent低版本去掉缩进不影响功能 try: ET.indent(root, space ) except AttributeError: pass ET.ElementTree(root).write(xml_path, encodingutf-8, xml_declarationTrue) print(f[OK] 已生成 {xml_path}) if __name__ __main__: if len(sys.argv) ! 3: print(用法: python steps_csv_to_xml.py steps.csv graph_hmi.xml) sys.exit(1) csv_to_xml(sys.argv[1], sys.argv[2])运行命令python steps_csv_to_xml.py steps.csv graph_hmi.xml5.4 XML文件长什么样生成的graph_hmi.xml大致如下?xml version1.0 encodingUTF-8? GraphHmi version1.0 creatorgraph_to_weinview LogicTags Tag name启动 addressDB100.DBX0.0 dataTypeBIT comment启动顺序控制/ Tag name停止 addressDB100.DBX0.1 dataTypeBIT comment暂停顺序控制/ Tag name当前步号 addressDB100.DBW2 dataTypeINT commentGRAPH当前激活步/ /LogicTags StepTable Step no0 nameIDLE comment空闲未启动 statusBitDB100.DBX10.0/ Step no1 nameS1_INIT comment初始化各气缸复位 statusBitDB100.DBX10.1/ Step no2 nameS2_CLAMP comment夹紧工装 statusBitDB100.DBX10.2/ Step no3 nameS3_FEED comment进给加工 statusBitDB100.DBX10.3/ Step no4 nameS4_CHECK comment尺寸检测 statusBitDB100.DBX10.4/ Step no5 nameS5_UNLOAD comment松开工装回到原点 statusBitDB100.DBX10.5/ /StepTable /GraphHmi这份XML既是威纶通转换脚本的输入也是后续重新生成标签、脚本的永久归档文件。如果你只是想查看或修改XML用VS Code、Notepad甚至记事本都能打开修改后务必用UTF-8编码保存否则中文注释会乱码。6. 从XML生成威纶通导入文件和JS映射6.1 生成EBPro标签导入CSV威纶通EBPro的标签导入功能本质上需要一个结构化的CSV文件。不同版本的EBPro对列头的要求不完全一样最稳妥的做法是先在EBPro里手动导出一份空标签表观察当前版本的表头格式再让脚本按同样的表头生成。下面脚本把graph_hmi.xml转成EBPro可导入的标签CSV同时生成一个HMI端用的JS查表文件# graph_xml_to_weinview.py # 用法: python graph_xml_to_weinview.py graph_hmi.xml weinview_tags.csv hmi_display.js import csv import sys import xml.etree.ElementTree as ET def xml_to_weinview(xml_path, csv_path, js_path): tree ET.parse(xml_path) root tree.getroot() # EBPro标签导入常见列头请以本机EBPro导出模板为准 fieldnames [Name, Comment, Device, Address, DataType] rows [] # PLC逻辑标签直接对应HMI控制位和当前步号 for tag in root.iter(Tag): rows.append({ Name: tag.get(name), Comment: tag.get(comment, ), Device: S7_1500, Address: tag.get(address), DataType: tag.get(dataType, INT), }) # 每个步骤生成一个状态位标签步号与注释从XML直接读入 for step in root.iter(Step): rows.append({ Name: fSTEP_{step.get(no)}_A, Comment: step.get(comment, ), Device: S7_1500, Address: step.get(statusBit), DataType: BIT, }) with open(csv_path, w, encodingutf-8-sig, newline) as f: writer csv.DictWriter(f, fieldnamesfieldnames) writer.writeheader() writer.writerows(rows) print(f[OK] 标签导入文件: {csv_path}) # 生成HMI端脚本的查表部分注释来自XML中的步骤注释 with open(js_path, w, encodingutf-8) as f: f.write(// hmi_display.js - 由 graph_hmi.xml 自动生成\n) f.write(var stepTable {\n) for step in root.iter(Step): f.write(f {step.get(no)}: {step.get(comment)},\n) f.write( -1: 步号异常\n) f.write(};\n\n) print(f[OK] HMI脚本文件: {js_path}) if __name__ __main__: if len(sys.argv) ! 4: print(用法: python graph_xml_to_weinview.py graph_hmi.xml weinview_tags.csv hmi_display.js) sys.exit(1) xml_to_weinview(sys.argv[1], sys.argv[2], sys.argv[3])运行命令python graph_xml_to_weinview.py graph_hmi.xml weinview_tags.csv hmi_display.js6.2 生成的CSV内容示例脚本生成的weinview_tags.csv大概长这样Name,Comment,Device,Address,DataType 启动,启动顺序控制,S7_1500,DB100.DBX0.0,BIT 停止,暂停顺序控制,S7_1500,DB100.DBX0.1,BIT 当前步号,GRAPH当前激活步,S7_1500,DB100.DBW2,INT STEP_0_A,空闲未启动,S7_1500,DB100.DBX10.0,BIT STEP_1_A,初始化各气缸复位,S7_1500,DB100.DBX10.1,BIT STEP_2_A,夹紧工装,S7_1500,DB100.DBX10.2,BIT STEP_3_A,进给加工,S7_1500,DB100.DBX10.3,BIT STEP_4_A,尺寸检测,S7_1500,DB100.DBX10.4,BIT STEP_5_A,松开工装回到原点,S7_1500,DB100.DBX10.5,BIT6.3 生成的JS/宏逻辑代码脚本同时生成hmi_display.js里面是一个步号到注释的查表。你在HMI端要做的就是把PLC侧的“当前步号”读进来再通过这张表翻译成文本。下面是通用逻辑API名称会因为威纶通机型不同而有差异// hmi_display.js 的查表部分 var stepTable { 0: 空闲未启动, 1: 初始化各气缸复位, 2: 夹紧工装, 3: 进给加工, 4: 尺寸检测, 5: 松开工装回到原点, -1: 步号异常 }; // 下面的API是原型示意请按所在机型手册替换成真实接口 function refreshStepDisplay() { var stepNo readLw(100); // 从LW100读入PLC当前步号 stepNo Number(stepNo); // 统一转成数值 var text stepTable[stepNo] || (步号未知: stepNo); writeLwString(102, text); // 写入显示元件绑定的LW区域 }如果用的是MT_iE系列EBPro里的入口叫“宏指令”逻辑写成C语言风格也是先GetData读LW再比较判断macro_0: short stepNo GetData(stepNo, Local, LW, 100) if stepNo 1 then SetData(1, Local, LW, 101) endif end macro这里的LW101实际上是HMI侧的一个“索引值”。画面上的“多状态指示”元件绑定LW101利用EBPro的多状态功能显示对应中文文本。这是很多现场项目验证过的稳定做法因为它把中文文字放在EBPro工程里维护晚上位机不需要处理复杂的字符串编码问题。7. EBPro一键导入与画面组态7.1 导入标签在EBPro中打开你的HMI工程进入标签管理器或者双击左侧设备列表中的Siemens PLC设备属性找到标签导入入口。不同版本按钮位置有差别但逻辑一样点击“导入”或“导入PLC标签”。文件类型选择CSV选中上一步生成的weinview_tags.csv。预览列表确认名称、地址、数据类型没有错位。确认导入。如果你的EBPro版本支持XML标签导入也可以直接选择graph_hmi.xml。即便不支持XML也建议保留在项目目录中它是后续重新生成标签和脚本的唯一源文件不要删。导入完成后检查一下标签是否都进来了。重点确认“当前步号”的地址是DB100.DBW2数据类型是INT。7.2 添加显示元件在HMI画面上推荐做两个区域步号数字区放一个数值显示元件绑定“当前步号”标签。操作员先看到数字。步骤文本区放一个“多状态指示”元件绑定LW101宏翻译后的索引。在元件的状态列表里把0到5分别录入“空闲未启动”“初始化各气缸复位”等中文文本。不建议让画面上的文字直接绑定PLC字符串标签。原因很简单PLC字符串编码和威纶通字符串编码不一致现场很容易出现中文乱码。用“多状态指示”通过整数索引映射文本是兼容性最好的方案。7.3 配置脚本宏指令或JS脚本要周期性执行一般放在“周期执行”或通过PLC触发的宏里。你需要确认宏的周期时间建议200ms到500ms不要做得太频繁否则会增加HMI负载。LW100必须已经通过“当前步号”标签实时更新。宏里最终写出的LW101要和画面上的多状态指示元件绑定一致。在cMT或支持JavaScript的机型上把hmi_display.js的内容贴进脚本编辑器把API名称换成当前机型提供的读写接口即可。7.4 下载模拟完成以上配置后先不要急着下载到真机。在EBPro里点击“模拟”先用离线模拟功能验证画面效果。模拟时LW100不会自动有值你可以用模拟器的手动写入功能把LW100写成1到5观察多状态指示元件是否显示对应的中文文本。这一步能过滤掉90%的画面配置问题。8. 运行验证与效果确认8.1 S7-PLCSIM离线仿真如果你有TIA Portal的S7-PLCSIM可以先把PLC程序和HIM模拟器联起来在TIA Portal中启动PLCSIM下载包含GRAPH的PLC程序。用GRAPH监视功能手动切换到某个步骤比如切到Step 3“进给加工”。观察DB100.DBW2的值是否变成3。如果DB100.DBW2没有变化先检查GRAPH步骤里的StepNo赋值是否真的执行了再检查GRAPH功能块是否处于“启用”状态。8.2 EBPro在线模拟EBPro的在线模拟器可以连接PLCSIM或真实PLC。联机后观察当前步号数字元件显示的值是否和GRAPH监视画面中的激活步骤一致。多状态指示元件是否显示对应中文文本。从Step 1切到Step 2时文本是否同步刷新。8.3 判断标准一个合格的GRAPH步序显示画面应该满足三个条件实时性GRAPH步骤跳转后HMI文本切换延迟不超过一个扫描周期加一个宏周期。一致性HMI显示的步号和GRAPH编辑器里看到的激活步骤完全一致。健壮性步号超出步表范围时能显示“步号未知”而不是空白或乱码。如果出现第3类问题说明宏/JS里的兜底分支没写好。上面生成的stepTable里已经包含了默认返回值逻辑直接保留即可。9. 常见问题与排查问题现象可能原因排查方式解决方案EBPro导入CSV报格式错误列头与当前版本要求不一致用EBPro导出一份空标签表对比列头调整CSV列头或用模板文件回填HMI读不到当前步号始终为0DB块开启了“优化的块访问”确认TIA Portal中DB100属性取消优化块访问才能使用绝对地址步号乱跳或显示错误GRAPH里StepNo赋值位置不对打开GRAPH监控逐个检查Action确保每条ACTION在当前步骤always执行中文显示乱码XML/CSV编码不是UTF-8用VS Code打开文件查看右下角编码统一保存为UTF-8可带BOM宏指令不执行宏没有配置周期或触发条件查看EBPro宏设置中的执行方式设为周期执行周期建议200~500ms步骤文本更新延迟宏周期太长或扫描周期太慢观察宏周期和PLC扫描时间缩短宏周期但不要低于100msXML转换脚本找不到文件相对路径写错或中文目录问题先确认使用绝对路径运行建议项目目录全英文路径10. 工程最佳实践这一部分是我认为整个方案里最值得收藏的内容直接决定你在真实项目里能不能少踩坑。第一步号必须连续且从0或1开始。GRAPH里的步骤号可以是任意值但HMI查表是按连续索引来的。建议在GRAPH里就用1、2、3这样连续编号0号留给“空闲”状态。否则宏里的查表逻辑会越写越复杂。第二注释在PLC侧写规范不要在HMI端重复维护。中文注释里尽量包含“动作 目标 结果”比如“夹紧工装等待到位传感器”。这些注释会通过XML直接走进HMI成为操作员看到的内容。第三整套XML和脚本纳入版本管理。graph_hmi.xml、steps.csv、转换脚本都应该提交到Git。后续工艺改了只有steps.csv或XML会变生成物全部重新生成。这比在HMI界面里改文字要安全得多。第四标签命名统一。推荐用STEP_序号_A表示步骤激活位用中文短横线分隔的标签名只用于HMI内部逻辑。命名不统一后期画面维护会很痛苦。第五真机下载前必须做备份和停机验证。修改HMI程序或PLC程序属于生产环境变更。不管是下装PLC还是下载HMI都要提前备份原工程并确认产线处于安全停机状态。回到现场后先空跑验证再带料验证。第六安全性原则。如果PLC侧允许HMI写步号或强制跳步必须加权限和互锁。建议HMI只读步号不允许操作员直接修改步号。跳步操作留给工程师模式并记录操作日志。11. 总结与下一步建议这篇文章把“西门子GRAPH步序转威纶通HMI显示”的完整链路梳理了一遍PLC端显式写步号CSV维护步骤清单Python生成XML再由XML生成EBPro标签导入文件和HMI脚本文件。这套方案真正的价值不在于省掉了一次手工操作而在于把“GRAPH步序显示”变成了可追溯、可回滚、可自动化的数据工程。如果你正在做一个全新项目建议直接从“先有steps.csv后有GRAPH程序”开始让工艺清单成为整个顺序控制的唯一数据源。如果你已经完成了GRAPH程序也可以把现有步骤整理成CSV再走后面的转换链路改造成本不会太大。下一步可以继续深入的方向有三个一是把GRAPH步骤注释继续延伸到报警文本让HMI报警页和步序显示使用同一份XML二是把步骤持续时间、循环次数等运行数据加入XML让HMI同时展示统计信息三是如果现场有多台PLC、多个GRAPH程序可以把转换脚本整合成一个小工具让操作员在界面上选择XML就能一键生成所有HMI工程文件。建议把本文收藏备用等真正做顺序控制项目时按这套流程走一遍你就能体会到“数据驱动维护”和“画面逐个手改”之间的差距了。
返回列表