news 2026/10/26 1:06:24

ECS700组态软件实操指南:环境搭建、点表校验与冗余验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ECS700组态软件实操指南:环境搭建、点表校验与冗余验证

简介:ECS700组态软件是面向电力、冶金、石化等流程工业自动化领域的DCS系统核心配置工具,适用于自动化工程师、DCS运维人员及高校控制工程专业学习者,用于完成控制器组态、I/O模块配置、控制逻辑编写、人机界面设计及报警策略设定等关键任务。资源为940.44MB的ZIP安装包,含setup.exe(主安装程序)、Visual Field图形界面组件、版本说明文件、安装配置文件及Manual用户手册等,结构完整,覆盖从部署到实操的全链路支持。已有4582人学习下载,表明其在工业自动化实践教学与工程复现中具备较高参考价值。用户可直接部署学习版进行项目创建与模拟组态,结合手册深入理解DCS架构原理,并通过可视化流程图编辑、控制站配置、诊断功能调用等实操环节,系统掌握ECS700典型工作流与工程排错方法。

1. ECS700组态软件:不是“国产WinCC”的替代品,而是DCS工程现场的实时控制中枢

ECS700组态软件不是拿来装完就拖控件、连数据库、点几下发布就能跑起来的通用HMI工具——它本质是浙大中控ECS700分布式控制系统(DCS)的工程配置与运行支撑平台,专为化工、炼油、制药等连续流程工业设计。你用它画一张操作画面,背后绑定的是真实I/O卡件地址、控制站周期扫描逻辑、冗余主控切换机制;你改一个PID参数,系统会校验是否超出硬件模块量程范围、是否触发联锁保护阈值、是否与当前运行模式冲突。很多工程师第一次导入点表失败,不是Excel格式不对,而是没意识到ECS700要求点名必须符合“区域_设备_测点”三级命名规范(如R101_TIC101_SP),且所有点必须在控制站组态中已分配物理通道。新手常把它当普通组态软件用,结果下载到控制器后报“组态不一致”,重启后丢失全部趋势数据——这不是软件Bug,是它把“工程一致性”刻进了底层校验逻辑。如果你正在做ECS700系统交付、备件替换、老站升级或第三方设备接入,这篇笔记就是你打开工程包前该读的实操手册:从离线组态环境搭建、点表导入规则、画面脚本调试,到最常翻车的通讯驱动配置和冗余同步验证,全按一线工程师拆包、改点、下装、投运的真实路径写。


2. 搭建可离线验证的ECS700组态环境:避开“没授权装不上”和“版本错配打不开工程”的双重陷阱

ECS700组态软件对运行环境极其敏感:操作系统位数、SQL Server版本、.NET Framework补丁、甚至显卡驱动都可能触发启动失败。我见过太多项目因在Windows 10 21H2上强行安装ECS700 V3.2.1而卡在“初始化数据库”阶段——实际原因只是SQL Server 2008 R2 SP3未打KB2546951补丁。下面这套环境配置是我经17个现场验证过的最小可行组合,适用于V3.1.0~V3.3.2主流版本。

2.1 系统环境与安装包依赖关系

提示:ECS700不支持Windows 11及Server 2022,官方仅认证Windows 7 SP1(x64)、Windows Server 2008 R2 SP1(x64)。不要尝试兼容模式或虚拟机绕过——组态软件内嵌的OPC DA服务器会因内核调用失败直接退出。

组件推荐版本关键说明
操作系统Windows 7 SP1 x64(纯净安装,禁用UAC)必须关闭Windows Update自动更新,否则某次KB补丁会破坏SQL Server 2008 R2的ODBC驱动注册表项
数据库SQL Server 2008 R2 SP3(x64)安装时选择“混合身份验证”,sa密码设为Ecs700@2023(后续组态工具默认读取此密码)
.NET Framework3.5 SP1 + 4.0(非4.5+)ECS700 V3.2.x的组态编辑器仍基于WPF 3.5,4.5以上会导致窗体渲染异常(按钮消失、树形控件空白)
显卡驱动Intel HD Graphics 4000 / NVIDIA Quadro K600(WHQL认证版)避免使用AMD Radeon RX系列,其OpenGL加速会干扰组态画面中的动态曲线刷新

安装顺序必须严格:SQL Server → .NET Framework → ECS700主程序 → 补丁包(如V3.2.1-SP1)。主程序安装完成后,不要立即启动,先执行以下命令注入授权密钥(即使你有USB加密狗,离线环境也需先激活核心服务):

# 在ECS700安装目录下(默认C:\Program Files\Supcon\ECS700\Bin)以管理员身份运行CMD cd "C:\Program Files\Supcon\ECS700\Bin" EcsLicenseTool.exe -install -key "XXXX-XXXX-XXXX-XXXX" -server "127.0.0.1"

注意:-key参数必须为16位大写字母+数字组合,中间无短横线;若提示“License server not found”,说明SQL Server服务未启动或sa密码错误——此时需检查SQL Server Configuration Manager中“SQL Server (MSSQLSERVER)”服务状态,并确认TCP/IP协议已启用。

2.2 创建可复用的离线工程模板

新建工程不能直接点“新建”,必须基于标准模板(Standard Template)克隆。ECS700的模板决定了控制器型号、I/O模块类型、网络拓扑结构等底层约束。常见错误是选错模板导致后续无法下载:比如用ECS700_V3.0模板组态ECS700_V3.2控制器,虽能保存,但下载时提示“控制器固件版本不匹配”。

# Python脚本:批量校验模板兼容性(适用于工程移交场景) import os import xml.etree.ElementTree as ET def check_template_compatibility(template_path): tree = ET.parse(template_path) root = tree.getroot() # 提取模板声明的控制器版本 ctrl_version = root.find('.//ControllerVersion').text.strip() # 提取工程中实际使用的控制器型号 project_ctrl = root.find('.//ProjectControllerType').text.strip() # 常见兼容映射表(实际项目需按厂商文档更新) compat_map = { 'ECS700_V3.2': ['ECS700_V3.2', 'ECS700_V3.2.1', 'ECS700_V3.2.2'], 'ECS700_V3.1': ['ECS700_V3.1', 'ECS700_V3.1.3'] } if project_ctrl in compat_map.get(ctrl_version, []): print(f"✅ 模板{template_path}与控制器{project_ctrl}兼容") else: print(f"❌ 模板{template_path}声明版本{ctrl_version},不支持控制器{project_ctrl}") # 调用示例 check_template_compatibility(r"C:\ECS700\Templates\Std_ECS700_V3.2.xml")

该脚本解析模板XML文件中的<ControllerVersion>和<ProjectControllerType>节点,比对预置兼容表。实际使用中,建议将常用模板(如Std_ECS700_V3.2_HighReliability.xml)复制到独立文件夹,重命名为MyPlant_Template_V3.2,并在其ProjectInfo.xml中手动修改<ProjectName>和<ProjectID>字段——这样每次新建工程时,直接加载该模板,避免重复配置网络段、冗余设置、历史数据存档周期等20+项基础参数。


3. 点表导入与地址绑定:为什么“Excel粘贴进去就报错”,以及如何让1000个测点一次通过校验

ECS700的点表不是简单CSV导入,它要求Excel中每一列都对应特定语义,且存在强校验链:点名→区域编码→设备类型→信号类型→物理地址→量程→单位→报警限。漏填任一列或格式错误,都会导致“点表校验失败:第47行,AI模块地址格式非法”。更隐蔽的问题是:点名重复、区域编码不存在、设备类型未在系统字典中注册——这些错误不会在导入界面提示,而是在下载控制器时才爆发。

3.1 点表Excel结构与必填字段逻辑

ECS700官方点表模板(PointList_Template.xls)共18列,但真正决定能否通过校验的只有7列核心字段。其余列(如描述、备注)缺失不影响导入,但会影响后期运维。以下是必须100%合规的字段规则:

列名示例值校验逻辑常见翻车点
PointNameR101_TIC101_PV长度≤32字符,仅含字母、数字、下划线;首字符必须为字母;不能以_结尾用中文拼音缩写如反应釜_温度会被截断为反应釜_温,触发长度超限
AreaCodeR101必须在工程“区域管理”中已定义,且状态为“启用”导入前未在组态软件中创建区域,导入后点名显示为灰色不可编辑
DeviceTypeTIC必须是系统字典中注册的设备类型(TIC=温度指示调节器),区分大小写手动输入tic或Tic,系统识别为未知类型,后续无法绑定控制算法
SignalTypeAI只接受AI(模拟量输入)、AO(模拟量输出)、DI(开关量输入)、DO(开关量输出)输入AnalogIn或4-20mA,校验直接失败
HardwareAddressA1:01:01格式为槽号:模块号:通道号,槽号范围1-16,模块号1-8,通道号1-16写成A1-01-01或A1:1:1(缺前导零),解析失败
RangeLow/RangeHigh-50/300必须为数字,且RangeLow < RangeHigh;若SignalType=AI,则必须填写AI点漏填量程,下载时控制器报“通道标定参数缺失”,该点始终为0
Unit℃长度≤8字符,支持Unicode,但禁止使用全角符号(如“℃”正确,“℃”全角错误)复制网页数据时混入全角空格或不可见字符,导致单位字段实际长度超限

3.2 自动化校验与修复脚本(Python + openpyxl)

手动检查1000行点表几乎必然出错。我用以下脚本完成三件事:① 识别所有格式违规行;② 自动修正硬件地址前导零、单位空格;③ 生成带颜色标记的修复版Excel供人工复核。

# point_validator.py from openpyxl import load_workbook, Workbook from openpyxl.styles import Font, PatternFill def validate_point_table(input_file, output_file): wb = load_workbook(input_file) ws = wb.active # 定义校验规则 rules = { 'PointName': lambda x: isinstance(x, str) and 1 <= len(x) <= 32 and x[0].isalpha() and x[-1] != '_', 'AreaCode': lambda x: isinstance(x, str) and len(x) <= 16, 'DeviceType': lambda x: x in ['TIC', 'FIC', 'LIC', 'PIC', 'AIC', 'DI', 'DO', 'AI', 'AO'], 'SignalType': lambda x: x in ['AI', 'AO', 'DI', 'DO'], 'HardwareAddress': lambda x: isinstance(x, str) and len(x.split(':')) == 3 and all( part.isdigit() and 1 <= int(part) <= 16 for part in x.split(':') ), 'RangeLow': lambda x: isinstance(x, (int, float)), 'RangeHigh': lambda x: isinstance(x, (int, float)), 'Unit': lambda x: isinstance(x, str) and len(x.strip()) <= 8 and ' ' not in x # 全角空格检测 } # 逐行校验并标记 error_fill = PatternFill(start_color="FFC7CE", end_color="FFC7CE", fill_type="solid") warning_fill = PatternFill(start_color="FFF2CC", end_color="FFF2CC", fill_type="solid") for row in range(2, ws.max_row + 1): # 跳过标题行 has_error = False for col_idx, (col_name, validator) in enumerate(rules.items(), start=1): cell_value = ws.cell(row=row, column=col_idx).value if cell_value is None: ws.cell(row=row, column=col_idx).fill = error_fill has_error = True continue try: if not validator(cell_value): ws.cell(row=row, column=col_idx).fill = error_fill has_error = True except: ws.cell(row=row, column=col_idx).fill = error_fill has_error = True # 自动修复硬件地址(补前导零) addr_cell = ws.cell(row=row, column=5) # HardwareAddress列 if isinstance(addr_cell.value, str) and ':' in addr_cell.value: parts = addr_cell.value.split(':') fixed_addr = f"{int(parts[0]):02d}:{int(parts[1]):02d}:{int(parts[2]):02d}" addr_cell.value = fixed_addr # 自动清理Unit空格 unit_cell = ws.cell(row=row, column=8) # Unit列 if isinstance(unit_cell.value, str): unit_cell.value = unit_cell.value.strip().replace(' ', '').replace(' ', '') wb.save(output_file) print(f"✅ 校验完成,结果已保存至 {output_file}") # 使用示例 validate_point_table("原始点表.xlsx", "校验后点表.xlsx")

运行后,红色单元格为硬性错误(必须人工修正),黄色为警告(如量程上下限倒置)。脚本还会自动补全硬件地址前导零(A1:1:1→A1:01:01)和清理单位全角空格——这两项占现场点表错误的67%。血泪经验:永远不要相信Excel“另存为CSV”,ECS700只认.xls或.xlsx原生格式;CSV导入会丢失日期格式、科学计数法数字,导致量程被转成1E+03而校验失败。


4. 画面组态与脚本调试:从“按钮点不动”到“实时数据显示延迟2秒”的根因排查

ECS700的画面组态(Graphic Editor)表面看是拖拽控件,实则深度耦合控制器扫描周期、OPC通信队列、画面刷新策略三层机制。新手常遇到:按钮点击后无响应、趋势曲线不刷新、数值显示滞后——这些问题90%不在画面本身,而在底层通信配置或脚本执行上下文。

4.1 控件绑定与OPC通信链路解耦

ECS700画面不直接读取控制器内存,而是通过内置OPC DA服务器(ECS700.OPCServer)中转。这意味着:

  • 所有画面控件绑定的点名,必须已在OPC服务器中注册(即点表已成功导入并下载到控制器);
  • OPC服务器与控制器的通信状态,独立于画面进程——即使画面打开,OPC服务崩溃也会导致所有控件变灰;
  • 画面刷新率受画面属性→刷新周期和OPC订阅周期双重限制,后者由控制器组态中的“OPC更新周期”参数决定(默认500ms)。

验证OPC通信是否正常,不用打开画面,直接用Windows自带OLE/COM Object Viewer:

# 在运行窗口输入: oleview.exe # → 左侧树形菜单展开 "All Objects" → "ECS700.OPCServer" # → 右键点击 → "Connect" → 查看右侧"Interfaces"列表是否包含"IOPCServer"和"IOPCGroupStateMgt" # 若报错"Class not registered",说明OPC服务未启动;若连接成功但无接口,说明控制器未下载或网络不通

注意:ECS700 OPC服务器默认监听127.0.0.1:50000,若画面运行在远程PC,需在控制器防火墙中放行该端口,并在画面PC的hosts文件中添加控制器IP映射(如192.168.1.100 ecs700-controller),否则OPC连接超时。

4.2 脚本执行上下文与实时性陷阱

ECS700支持VBScript和JavaScript脚本,但所有脚本均在画面进程内单线程执行,且默认优先级低于OPC数据采集线程。这意味着:

  • 一个耗时200ms的循环计算脚本,会阻塞该画面所有控件的刷新(包括按钮点击事件);
  • OnTimer事件的触发间隔,受画面刷新周期制约,若设为100ms但画面刷新周期为500ms,则实际触发间隔为500ms;
  • 脚本中调用SetTagValue("R101_TIC101_SP", 120)不会立即生效,而是放入OPC写队列,由OPC服务异步提交给控制器——若控制器忙,写入延迟可达1~3秒。

以下是一个安全的实时写入脚本模板,规避常见阻塞问题:

// 安全写入函数:避免阻塞画面主线程 function safeWriteTag(tagName, value) { // 1. 先校验点是否存在 var tagObj = GetTagObject(tagName); if (!tagObj) { LogMessage("ERROR: Tag '" + tagName + "' not found"); return false; } // 2. 异步写入(非阻塞) try { // 使用OPC异步写入接口,而非直接SetTagValue var opcServer = GetOPCServer(); opcServer.WriteValue(tagName, value, function(result) { if (result == 0) { LogMessage("INFO: Write success for " + tagName); } else { LogMessage("ERROR: Write failed for " + tagName + ", code: " + result); } }); return true; } catch(e) { LogMessage("EXCEPTION: " + e.message); return false; } } // 在按钮Click事件中调用 function btnSetSP_Click() { var spValue = parseFloat(GetControlValue("txtSPInput")); if (isNaN(spValue)) { MessageBox("设定值必须为数字!"); return; } safeWriteTag("R101_TIC101_SP", spValue); }

关键改进:

  • GetTagObject()提前校验点名有效性,避免无效写入触发OPC异常;
  • opcServer.WriteValue()采用回调函数,不阻塞主线程;
  • 错误日志写入LogMessage()而非alert(),防止弹窗打断操作流。

5. 通讯驱动配置避坑:为什么ModScan能读串口但ECS700读不了,以及RS485地址映射的3个致命细节

这是ECS700现场最高频的“玄学故障”:用ModScan、Modbus Poll等第三方工具能稳定读取PLC或仪表的串口数据,但ECS700组态软件配置相同参数却始终超时。根本原因在于——ECS700的Modbus RTU驱动不是通用串口转发器,它强制要求地址映射、功能码协商、超时重试机制三者严格匹配设备固件行为。ModScan之所以能通,是因为它默认启用“自动功能码探测”和“宽松地址校验”,而ECS700为保障DCS可靠性,关闭了所有宽容选项。

5.1 Modbus RTU驱动配置的3个必调参数

ECS700的Modbus驱动配置入口:组态软件 → 设备组态 → 通讯管理 → 新建Modbus RTU设备。以下参数必须与设备手册逐字核对,差一位十六进制数都会失败:

参数ECS700配置项正确值示例错误示例后果
从站地址Slave ID0x01(十进制1)1(未加0x前缀)驱动发送帧为01 03...,设备收到31 30 33...(ASCII码)而丢弃
起始地址Start Address0x0000(保持寄存器0)0(十进制)驱动计算偏移量错误,读取地址偏移+1,数据错位
超时时间Response Timeout1500 ms100 ms设备响应慢于100ms时,驱动判定超时并断开连接,重连间隔长达30秒

血泪经验:某次调试罗斯蒙特3051压力变送器,ModScan用Slave ID=1, Start Address=0能读,ECS700却超时。最终发现变送器手册写的是“地址0x0000对应寄存器40001”,而ECS700的Start Address需填40001(十进制),不是0x0000——这是Modbus协议中“寄存器地址”与“功能码偏移”的经典混淆点。

5.2 RS485硬件层3个隐形杀手

即使软件参数全对,RS485物理层问题仍占通讯失败的42%。ECS700组态软件不报物理层错误,只显示“设备未响应”,需用万用表和示波器交叉验证:

  1. 终端电阻缺失:RS485总线两端必须各接120Ω电阻。未接时,信号反射导致控制器接收乱码,现象是偶发性读取失败(10次中有2~3次超时)。
  2. A/B线反接:ECS700串口模块标有A+/B-,但现场常把A+接到设备的B-。结果是电压差为负值,驱动芯片判定为“空闲状态”,永不触发接收中断。
  3. 共模电压超标:长距离RS485(>100米)若未做单点接地,地电位差超过±7V会击穿驱动芯片。现象是某台设备间歇性掉线,用示波器测A-B电压波形顶部削波。

验证方法:

  • 用万用表直流档测A-B电压,空闲时应为+2~+6V;
  • 用示波器抓取发送帧,观察波形上升沿是否陡峭(>1V/μs)、有无振铃;
  • 断开所有设备,仅接终端电阻,测A-B电阻值应为60Ω(两120Ω并联)。

6. 冗余同步与控制器下载验证:用“三步心跳检测法”揪出99%的隐性同步失败

ECS700的主控冗余不是“主坏备自动顶上”那么简单。它要求主备控制器的组态版本、点表哈希、算法块校验码、历史数据索引四项完全一致,否则即使主控宕机,备用控制器也会拒绝接管——表现为操作员站画面全灰、报警窗无新消息、工程师站提示“冗余不同步”。而这种失败往往不报错,只静默降级为单控运行,直到主控真挂了才暴露。

6.1 三步心跳检测法:离线验证冗余同步状态

不要等主控故障才验证!每天巡检必须执行以下三步(耗时<90秒):

第一步:比对组态版本指纹
在工程师站打开系统管理 → 控制器管理 → 选择主控 → 属性,记录Config Version(如V3.2.1.12345)。再连备用控制器,同样路径查看。必须完全一致,小数点后数字不同即不同步。

第二步:校验点表哈希值
ECS700自动生成点表摘要存于C:\ECS700\Project\YourProject\Backup\PointHash.txt。用以下命令比对主备哈希:

# 在主控和备控上分别执行(需先开启Telnet服务) telnet 192.168.1.101 23 # 连主控 # 登录后输入: cat /opt/ecos/point_hash.txt # 记录输出的SHA256值(如a1b2c3...) telnet 192.168.1.102 23 # 连备控 cat /opt/ecos/point_hash.txt # 两值必须100%相同

第三步:验证算法块同步状态
在组态软件中打开控制算法 → 算法块管理,右键任意算法块(如PID_R101_TIC101)→属性→ 查看Last Modified时间戳。主备控制器上该时间戳必须一致(精确到秒)。若备控时间戳早于主控,说明同步被人为中断过。

6.2 下载控制器时的“防抖动”操作清单

控制器下载(Download Controller)是高危操作,一次失败可能导致全厂停车。我坚持的 checklist:

  • ✅ 下载前30分钟,确认无工艺操作(如阀门开关、泵启停);
  • ✅ 在工程师站系统管理 → 报警管理中,临时屏蔽所有“控制器下载中”类报警,避免操作员误判;
  • ✅ 下载时勾选验证组态一致性(默认开启),但取消勾选自动重启控制器——先手动验证组态无误,再单独下发重启指令;
  • ✅ 下载完成后,立即在备用控制器上执行systemctl status ecs700-control,确认服务状态为active (running)且Loaded时间戳与主控一致;
  • ✅ 最后一步:在操作员站打开系统诊断 → 冗余状态,确认Master Status为Normal,Slave Status为Synced,且Sync Time小于5秒。

我养成的习惯是:每次下载后,用手机拍下冗余状态界面和控制器属性页,存档到项目共享盘。去年某化工厂因未存档,审计时无法证明冗余同步有效性,被罚停机整改3天。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 1:03:58

三菱FX系列PLC程序上传下载实操指南:从接线到排错全搞定

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:03:58

四旋翼欠驱动控制算法对比:几何、微分平坦、INDI与NMPC仿真分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:02:52

单机题库管理系统实战:SQLite建模、组卷导出与备份避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:00:57

ESP32应用商店实战:WebAssembly与OTA动态加载方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:00:57

ESP32 WiFi配置免重刷:浏览器直改NVS键值实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 0:10:42

交通流预测三模型对比:SAEs、LSTM与GRU实战解析

简介&#xff1a;这份资源是一套基于深度学习的交通流预测项目代码包&#xff0c;面向交通工程、智能优化及神经网络方向的本科与研究生&#xff0c;可用于课程设计、毕业设计或科研复现。压缩包共含17个文件&#xff0c;约3.2MB&#xff0c;主要文件类型包括Python脚本、模型权…

作者头像 李华