简介:面向零基础自动化从业者与电气调试新人的施耐德Unity Pro入门手册,围绕Quantum系列PLC编程软件的自学场景展开,帮助读者从界面认知过渡到独立完成小型项目配置。内容按实际工程流程组织,覆盖新建程序、机架槽位调整、CPU与状态RAM设置、以太网及NOE模块通讯配置,并延伸到变量与DDT/DFB类型创建、MAST段程序编写、动态数据表监控,以及生成更改、标准/仿真模式切换、程序上传下载与STU/XEF保存等操作要点。文档以操作步骤配合配置对话框讲解,重点提示地址范围、命名规则和变量列筛选等易错细节,便于对照练习与排查常见配置问题。资源包为1个docx文档,约1.18MB,已有1994人学习,适合作为PLC编程初学者的案头速查与跟练材料。
1. 装 Unity Pro 最容易翻车的地方,是安装向导里少勾了一个平台
Unity Pro 装完,打开文件 → 新建,Quantum 那一栏的 CPU 型号列表是空的,140CPU67160 怎么翻都翻不到。新手第一反应是软件装坏了、安装包不完整,其实多半是安装向导里那几个默认折叠的组件没勾全。这类“装上了但用不了”的情形,在 Unity Pro 上特别常见。软件本体几个 G,真正决定你能不能建 Quantum 工程的,是平台库、通讯驱动和授权这三样。一台笔记本要同时承担新建工程、硬件组态、变量管理、仿真调试和实机下载,环境不对,后面每一步都会卡住。下面按实际装机的顺序走一遍:机器要什么条件、安装勾什么、组态怎么配、连不上怎么救。
2. 安装前准备:机器条件、组件勾选与授权,一步都省不掉
2.1 装之前的机器侧清点
Unity Pro 是个偏老的 Windows 桌面工程软件,它的安装程序对系统环境挺敏感。系统这块,V11 之后的版本对 Windows 10 的支持才比较完整,再往前的版本更适合留在 Windows 7 上跑。如果手上的工程是从老设备维护下来的,别急着上新系统,常见做法是留一台干净的机器,或者单独开一个虚拟机专门跑 Unity Pro,把办公软件、聊天工具、各种安全软件隔离开,省得后面驱动冲突查半天。
分辨率是最容易被忽略的一条。Unity Pro 的主界面是“项目浏览器 + 硬件目录 + 编辑区”三栏并排,1280×1024 是底线,1366×768 的笔记本会挤到工具栏互相遮挡,硬件目录拉不开,拖拽模块都费劲。接个外接显示器,或者把缩放调到 100%,比换软件版本管用。
运行库方面,安装包里一般自带 .NET Framework 和 VC++ 运行库,但精简单位的系统镜像经常把这部分裁掉,安装过程不报错,装完启动就闪退。装之前先确认这两样在不在。下面三条命令在 PowerShell 里跑,一次性把系统版本、.NET 版本和屏幕分辨率看全:
# 1) 系统名称、版本和内部版本号,判断是不是被精简过的镜像 Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber # 2) .NET Framework 4.x 的 Release 值,528040 及以上代表 4.8 Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | Select-Object Release # 3) 主屏可用分辨率,低于 1280x1024 建议先调整再装 Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.Screen]::PrimaryScreen.Bounds第一条看OsBuildNumber,版本号正常但内部版本号异常,多半是第三方精简系统,这种系统装工程软件出问题的概率明显偏高。第二条的Release是 .NET 4.x 的版本代号,数值对不上就先去补运行库。第三条返回的是当前主屏的工作区尺寸,注意是工作区不是物理分辨率,任务栏会占掉一部分高度。
剩下的几条属于常规但必须做的:用管理员账户安装,安装路径别带中文和空格,安装期间把安全软件的实时防护关掉,安装目录预留 10G 以上空间,工程文件和备份放到另一个盘。这些不是玄学,每一条都在现场造成过安装中断或启动失败。
提示:安装过程中如果弹出驱动签名确认、端口占用提示,选允许和继续,别点取消,取消之后驱动不会重新安装,只能修复安装。
2.2 安装向导里的平台库、通讯驱动和授权组件
Unity Pro 的安装向导会把组件折叠起来,默认只勾了主程序,剩下的要手动展开。这几个组件的取舍直接决定后面能不能建工程、能不能连 PLC:
| 组件 | 是否必勾 | 不勾的后果 |
|---|---|---|
| Modicon Quantum 平台库 | 必勾 | 新建工程时 CPU 型号列表里找不到 140CPU67160 |
| Premium / Atrium 等其它平台库 | 按项目勾 | 只有对应平台的工程才用得上,全勾会拖慢启动 |
| 通讯驱动(USB / TCPIP / MB+) | 必勾 | 测试连接直接失败,三种链路全用不了 |
| 授权管理组件 | 必勾 | 软件能打开,授权无法落地 |
| 示例工程与在线帮助 | 建议勾 | 新手查功能块用法时会省很多时间 |
平台库是关键。Quantum 系列的老 CPU 型号都挂在 Quantum 平台下,没勾这个库,新建工程的 CPU 选择对话框就是空的。通讯驱动是第二个关键,USB、以太网、MB+ 三条链路全靠它,驱动没装或者装了没重启,设备管理器里看不到对应项,软件里的“测试连接”按钮永远是失败。
装完之后别急着建工程,先确认这两样是否已安装。下面这段按关键字找平台库文件和驱动服务,路径按你自己的实际安装位置改:
# 安装根目录,按实际路径替换 $UNITY_HOME = "D:\UnityPro" # 1) 找平台库文件,文件名里一般带 Quantum / Premium 字样 Get-ChildItem $UNITY_HOME -Recurse -Filter "*Quantum*" -ErrorAction SilentlyContinue | Select-Object -First 10 FullName # 2) 查通讯驱动服务是否注册,服务名或显示名里通常带 XIP 或 Unity Get-Service | Where-Object { $_.Name -like "*XIP*" -or $_.DisplayName -like "*Unity*" } | Select-Object Name, DisplayName, Status第一条返回空,说明平台库根本没安装,回去做修复安装。第二条返回空,说明驱动没注册,八成是装完没重启,重启一次再看;重启还是没有,就是安装时驱动组件没勾。这两步花两分钟,能省掉后面半小时的“为什么连不上”。
2.3 授权与首次启动要改的三个默认项
授权这件事要提前说清楚:没激活的状态下,软件一般能打开、能建工程、能写程序、能跑仿真,但连实机那一步会卡住。所以我的习惯是,授权没到位之前先用仿真模式把逻辑跑通,等授权落地了再上实机,不要反过来,不然现场调试时才发现连不上,耽误的是停机时间。
首次启动之后,有三处默认设置建议顺手改掉,后面建变量、写程序会舒服很多:
| 设置项 | 位置 | 建议 | 原因 |
|---|---|---|---|
| 允许前导数字 | 工具 → 项目设置 → 变量 | 勾选 | 默认变量名不能以数字开头,现场点位命名经常是 1# 泵、2# 阀 |
| 变量列显示 | 变量表右键列头 → 自定义列 | 名称/类型/地址/注释/值 | 默认列不全,地址列不显示等于盲写 |
| 自动备份间隔 | 项目设置里的保存相关项 | 10~15 分钟 | 组态改到一半崩溃,没有备份就得重来 |
“允许前导数字”这一条特别值得说。默认关掉是有原因的,加了前导数字之后,某些老版本的功能块管脚解析会出问题,但对纯变量命名来说,打开它能让现场点位名和图纸对得上,减少一轮改名。打开之后记得变量名和地址的对应关系再核一遍。
变量的列显示顺序可以在自定义列对话框里用右侧按钮上下调,名称前面的勾选框决定这一列显不显示。这套设置是跟着工程走的,不是跟着软件走的,新建工程还得再设一次,所以建议把常用配置项记在工程模板里。
3. 硬件组态:机架槽位、CPU 状态 RAM 与 NOE 网络
3.1 新建工程选 140CPU67160,再把 16 槽机架换成 10 槽
新建工程这一步有两个动作,顺序不能反。先点左上角文件 → 新建,或者直接点工具栏的新建图标,弹出对话框,在平台列表里选 Quantum,CPU 型号选 140CPU67160,确定。
新建完成之后,项目浏览器里会出现机架节点,默认是一个 16 插槽机架,型号 140XBP01600。但现场实物大概率是 10 槽的 140XBP01000,这两个型号在软件里都能配,配错了表面上看不出来,实际会出两个问题:一是槽位编号和实物对不上,二是背板供电预算按 16 槽算,跟实际不符。改法很简单,右键点击项目浏览器里的机架节点(默认名称是 1),选择替换机架,在弹出的型号列表里选 140XBP01000。
机架定下来之后再配模块。有两种方式:双击空白插槽位置,从弹出的设备列表里选;或者从硬件目录里直接拖拽到插槽上。按图纸顺序依次配电源模块、CPU、通讯模块,再往后是 DI/DO/AI/AO。槽位规划建议在纸上先画一遍:
| 槽位 | 模块 | 说明 |
|---|---|---|
| 电源位 | 电源模块 | 按机架实物,独立电源槽 |
| 1 | 140CPU67160 | CPU 本体 |
| 2 | NOE 通讯模块 | 以太网口,后面要配 IP |
| 3 起 | I/O 模块 | 按图纸顺序排列,不建议跳槽 |
槽位中间留空在软件里是允许的,但在现场是自找麻烦。模块地址是按槽位算的,空一个槽,后面所有 I/O 的地址段整体后移,接线图和程序里的 %I/%Q 地址全对不上。真要扩容,宁可把空槽留在最后。
3.2 状态 RAM 范围、热备和实时时钟
CPU 配好之后双击 140CPU67160,会打开配置对话框。这里最重要的一项是状态 RAM 的地址范围设定,程序的变量地址必须落在这个范围里才能生效,超出范围不会报错,但变量值永远是 0,在线监视也看不到变化。
这个设置项是新手最容易忽略的。默认范围往往只覆盖一小段 %MW,而现场工程动辄上千个中间变量,写到 %MW2000 之后全部静默失效,查起来非常痛苦。建议在组态阶段就把地址区间规划好:
| 区域 | 起始 | 结束 | 用途 |
|---|---|---|---|
| %MW | 0 | 999 | 上位机读写区,走通讯 |
| %MW | 1000 | 1999 | 内部中间变量,非传输区域 |
| %M | 0 | 255 | 位状态、报警标志 |
表格里的数字是示例,实际按项目规模放大。规划好之后,把 CPU 配置里的状态 RAM 范围一次设到位,后面就不用反复改。
热备对话框里有两项要处理。一是配置状态 RAM 的非传输区域,这块区域和上位数据库没有数据交换,只限内部使用,把纯内部的中间变量放进去,能减少通讯扫描的负担。二是选择无 RIO 子站,本系统没有配 RIO 子站的话就选无,选了有但实际没接,扫描时会一直报通讯故障。
实时时钟在动态显示 → 实时时钟里配。两种方式:把 PC 时间传到 PLC,适合调试阶段,笔记本时间准就行;或者自定义 PLC 时间,设好之后选用户 → PLC,适合现场没有对时源的场合。选哪种取决于系统里有没有统一的时钟源,有就跟着时钟源走,没有就手动设一次,别让它停在出厂时间上,后期查故障记录时间全是错的。
3.3 以太网网络命名与 NOE 口绑定
通讯配置分两层,逻辑网络一层,物理模块一层,两层都配完才通。
先建逻辑网络:菜单通讯 → 新建网络,在可用网络列表里选以太网,起个名字。这里有个硬性限制,网络名不支持中文,也不支持数字和个别符号开头,建议以英文字母开头,比如ETHERNET1。名字起错会直接被拒绝,不给出明确提示,只弹一个校验失败的框。
再配网络参数:选中通讯列表里的ETHERNET1,填 IP 地址、子网掩码、网关地址,这三项是跟上位机通讯的基础。
最后绑物理口:双击主机架上的 NOE 模块,再双击 NOE 模块下方的以太网口,弹出对话框,在列表里选ETHERNET。这一步的意义是把逻辑网络和物理端口关联起来,只配了网络没绑口,软件里看着一切正常,测试连接就是不通。
网络名和变量名的合法格式可以用一段小脚本先验一遍,省得在软件里一个个试:
import re # Unity Pro 网络名/变量名规则:字母开头,只含字母、数字、下划线 pattern = re.compile(r"^[A-Za-z][A-Za-z0-9_]{0,31}$") for name in ["ETHERNET1", "1ETHERNET", "以太网1", "ETH-1"]: print(name, bool(pattern.match(name)))跑出来ETHERNET1是 True,1ETHERNET、以太网1、ETH-1都是 False。正则里^[A-Za-z]限定首字符必须是字母,[A-Za-z0-9_]{0,31}限定后续字符和总长度。现场命名习惯是“用途 + 序号”,比如ETHERNET1、LINE2NET,既能通过校验,又方便后期扩展。
IP 规划建议跟现场网络管理员对一次,别自己拍:
| 设备 | IP | 掩码 | 网关 |
|---|---|---|---|
| 编程笔记本 | 192.168.1.100 | 255.255.255.0 | 192.168.1.1 |
| PLC NOE 口 | 192.168.1.20 | 255.255.255.0 | 192.168.1.1 |
笔记本和 PLC 必须在同一网段,这是测试连接失败最常见的原因,比软件配置问题还常见。笔记本上如果有多个网卡,包括虚拟网卡,先把不用的禁用掉,路由优先级抢起来的时候,表现就是“明明同网段却 ping 不通”。
4. 从变量表到可下载工程:建变量、写 DFB、连接下载
4.1 基本变量三列:名称、类型、地址
变量在项目浏览器 → 变量和 FB 实例 → 基本变量里建。默认的列有名称、类型、地址、值、注释,可以右键点列名那一栏,选自定义列,把想看的列调出来,显示顺序用右侧按钮上下调,勾选框控制显不显示。
名称和类型是必填的。名称默认不能以数字开头,要开前导数字就去工具 → 项目设置 → 变量里勾上;类型可以是基本类型 BOOL、EBOOL、WORD、INT、REAL,也可以是数组ARRAY[0..15] OF BOOL,或者是 DDT 里定义的导出类型。
地址这一列最容易写错,格式和含义要分清:
| 地址 | 含义 | 说明 |
|---|---|---|
| %M10 | 内部位 | 程序内部用,掉电不保持 |
| %MW100 | 内部字 | 16 位字,模拟量中间值常用 |
| %I0.1.1 | 输入位 | 三个数字分别是机架、槽位、通道 |
| %Q0.1.1 | 输出位 | 同上 |
| %IW0.1.1 | 输入字 | 模拟量输入 |
| %QW0.0.1 | 输出字 | 模拟量输出 |
地址列可以为空,空地址的变量就是个纯内存变量,只在程序内部用,不占 I/O 地址。值是常数或者空,注释可有可无,但有注释的变量和没注释的变量,三个月后回头看是两个世界。
筛选这块有两个入口。名称后面有个空白格,输入要查的关键字回车即可,支持*abc*这种通配,星号代表任意几个字符,但只对名称生效。想按类型、注释筛选,就用列头上的筛选按钮,先选列,再选等于或不等于,填内容。
类型选择上有个概念要分清:EDT 是软件自带的基本数据类型,比如 WORD、EBOOL、BOOL、INT;DDT 是导出的数据类型,通常是用基本类型拼出来的自定义结构。举个例子,DDT 里定义了一个BigActSEQ,类型是ARRAY[0..34] OF WORD,那在基本变量里定义变量Big_ActSEQ时,类型就选BigActSEQ,而不是去写数组表达式。这个区别在批量建变量时特别重要,类型列填错,导入会整批失败。
4.2 Excel 批量建变量:先导出 TXT 再导回
几十个变量手敲还行,几百个点位手敲就是给自己找麻烦。标准做法是走 Excel 中转:先在变量表里建一个变量,导出成 TXT,用 Excel 打开补齐,再导回工程。
操作顺序:
- 在基本变量表里建一个变量,填好名称、类型、地址、注释,作为模板行。
- 导出这个变量表,得到一个 TXT 文件。
- 打开 Excel,文件 → 打开,文件类型选 TXT,选中刚导出的文件。
- 文本导入向导第一步选分隔符号,下一步勾 Tab 键,下一步把地址列的数据格式设成文本。
- 在 Excel 里按列补齐其它点位,保持列顺序和模板一致。
- 存成 Tab 分隔的 TXT,回软件导入。
导出的 TXT 大概是这个结构,列之间是 Tab:
名称 类型 地址 值 注释 StartBtn BOOL %M10 start push button MotorRun BOOL %Q0.1.1 motor run output RunHour INT %MW100 0 running hours第一行是列头,导入时软件按列头匹配,列顺序可以变,但列头不能改。地址列一定要在 Excel 里设成文本格式,否则%MW0010这类带前导零的地址会被自动处理掉前导零,导入之后地址全错。注释列里有中文没问题,但别在单元格里换行,换行符会把一条记录拆成两行。
导入之前先备份一次 STU 工程文件,这条不是客套。导入失败有时是部分成功,表里一半变量进去了,一半没进去,没有备份就得手工比对。导入之后拿筛选功能搜一遍重名,*abc*这种模糊搜能一次把相近命名全捞出来。
4.3 DFB 与程序段:生成更改才是生效点
导出功能块类型(DFB)适合把重复逻辑封装起来,比如模拟量换算。做法是点变量和 FB 实例里的 DFB 类型,输入名称AI_Converter,类型默认是 DFB,然后在输入、输出里填管脚变量名,在段里填功能块变量名SCALE_Calculate,编程语言从 FBD、LD、ST 里选一个。双击SCALE_Calculate就能进编程界面。
模拟量换算用 ST 写起来最直观:
(* DFB: AI_Converter,段 SCALE_Calculate,ST 语言 *) (* Raw: INT 原始码值输入;EngValue: REAL 工程值输出 *) IF Raw < RawLow THEN EngValue := EngLow; (* 低于量程下限,钳到下限 *) ELSIF Raw > RawHigh THEN EngValue := EngHigh; (* 高于量程上限,钳到上限 *) ELSE EngValue := (Raw - RawLow) * (EngHigh - EngLow) / (RawHigh - RawLow) + EngLow; END_IF;RawLow/RawHigh是原始码值的量程端点,4~20mA 对应的一般是 0~27648 这类数值;EngLow/EngHigh是工程值端点,比如 0~100 摄氏度。先钳位再线性换算,是为了防止现场传感器超量程时输出一个离谱的数,进而触发误报警。这段逻辑封成 DFB 之后,每个模拟量点调一次就行,不用复制粘贴。
主程序在程序 → 任务 → MAST → 段里写。右键新建段,输入名称,选编程语言,然后在段里调用变量和功能块。写完之后有个动作必须记住:点生成更改,或者重新生成所有项目。这两个的区别是,生成更改只编译改动部分,速度快,适合在线小改;重新生成所有项目全量编译,慢但干净,适合大改或者报错查不出来的时候。菜单里也能找到这两个命令。
编译结果在编辑程序的下方显示,有错误的情况下无法下载程序到 PLC,有警告可以下载但要看一眼内容。常见的错误就那几类:变量未定义、类型不匹配、地址越界、段里有语法问题。ST 段的语法错误定位到行,FBD 和 LD 的错误定位到块,报错信息里会带块名或变量名。
4.4 三种连接方式与上传下载的顺序
连接 PLC 有三条物理链路,加上一个仿真器,参数各不相同:
| 方式 | 介质 | 地址 | 接线 |
|---|---|---|---|
| USB | USB | SYS | 笔记本 USB 口接 CPU 上的 USB 端口 |
| 以太网 | TCPIP | NOE 模块里配的 IP,如 192.168.1.20 | 网线接 NOE 模块以太网口 |
| MB+ | MBPLUS01 | MB+ 主干网上 NOM 模块的地址,如 2 | MBP 转 USB 转换器接 NOM 模块 |
| 仿真器 | TCPIP | 127.0.0.1 | 不需要接线 |
在 PLC 菜单下先选标准模式还是仿真模式。标准模式走实际 PLC 通讯,仿真模式走虚拟 PLC。设置好介质和地址,点右侧的测试连接按钮,成功会弹提示,失败也会弹提示,失败了就别往下走,先查设置和接线。
下载的顺序是:连接成功 → 点 PLC 的连接按钮 → 选将项目传输到 PLC → 下载完成 → 点运行。上传反过来,选从 PLC 中上传项目。
这里有个血泪经验的坑:断开程序连接时,软件会弹框问要不要更新上载信息,一定选“是”。选了否,下次连上 PLC 就上传不了程序了,因为软件认为本地信息和 PLC 不一致,会一直卡在提示上。现场如果碰到这种情况,手上有源程序的话,重新完整下载一次并正确断开,上载信息就恢复了。
还有一个开关要留意:上载信息那个勾选框,去掉之后就无法上载程序。这是给不想让别人读走程序的场合准备的,正常情况下别动它。
状态栏会显示当前状态,三个提示要会读:显示“不同”,说明当前 PLC 里的程序和本地要下载的程序不一致;显示“运行”,说明 PLC 处于运行状态;显示TCPIP:127.0.0.1,说明当前是仿真模式。
保存走文件 → 另存为,存成*.STU格式。保存的时候会自动生成*.ztx、*.auto、*.sta、
本文还有配套的精品资源,点击获取