简介:这份西门子博图V15.1 PLC完整实例程序,面向自动化工程师、设备维护人员及PLC进阶学习者,可作工程参考与技能训练。程序覆盖西门子触摸屏、RFID识别、机器人控制、扫码枪、PLC-PC(MES)通信及PLC-PLC通信,并示范同一站内两个PLC网络分层的组态思路,项目需用博途V15.1打开。压缩包含79个文件,以XML标签/配置、BMP/PNG/ICO图标资源、GSD设备描述文件、转换日志和项目备份为主,包体仅11.12MB,目录组织清晰,便于分模块查阅。目前已有3918人学习/下载。预览可见TIA V14/V15升级转换记录、多组PLC标签表、HMI文本列表导入日志、XRef交叉引用库等,能帮助理解项目迁移、标签规划、设备组态与通讯联调细节,值得借鉴。
1. 一个西门子博图实例.0压缩包,值得花半小时把它打开
上手PLC编程最头疼的不是语法,而是没见过一套完整的工程长什么样。这个西门子博图实例.0_V15.1.rar就是干这个的:里面是打包好的TIA Portal V15.1项目,硬件组态、程序块、数据块、HMI画面都齐了。没有真实PLC也能通过PLCSIM把程序跑起来,看逻辑怎么跳、数据怎么流动。适合三类人:刚装好博图、想找个现成项目练手的初学者;要读懂别人设备程序的维护人员;以及想规范自己组态习惯、拿现成工程当模板的调试工程师。展开它不复杂,但版本、路径、授权这几个坎,一次踩过就不再踩。
2. 打开实例项目前:版本匹配、解压路径与 V15.1 项目恢复
2.1 为什么必须是 TIA Portal V15.1:版本之间没有后悔药
先看压缩包名字里的V15.1。TIA Portal的项目文件带版本后缀:V15是.ap15,V15.1是.ap15_1,V16是.ap16。这个后缀直接决定了谁能打开它。博图的项目文件只允许"低版本打开更低版本、高版本升级低版本",反过来不行。V15.1的工程拿到V15里双击,会直接提示"项目版本较高,无法打开";拿到V16、V17里打开,会弹出升级向导,升级完保存,V15.1就再也打不回来了。这就是很多设备厂商给程序时坚持按版本交档的原因。升级不是不行,但一次升级等于把项目迁到另一个数据模型里,所有块、变量的内部存储结构都会变,回退没有后悔药。
然后是配套软件的版本,不止是TIA Portal本体。仿真器S7-PLCSIM也必须装V15.1这一版。PLCSIM的版本号跟主软件不一致,启动仿真时会报版本不匹配,或者干脆连仿真按钮都是灰的。安装时如果有旧版本,先卸载干净再装V15.1,常见做法是安装包里的STEP7 Professional V15.1、WinCC V15.1、S7-PLCSIM V15.1一次装齐,版本号对齐,后面少很多麻烦。
版本对应关系整理成一张表:
| 手里的软件版本 | 打开 .ap15_1 项目的结果 | 建议 |
|---|---|---|
| V15.1 | 直接打开,无需转换 | 用它最省事 |
| V15 | 报"项目版本较高,无法打开" | 升级软件到V15.1 |
| V16及以上 | 弹出升级向导,升完不可回退 | 先备份原始rar包再升级 |
| V14/V14 SP1 | 打不开,不识别该类型 | 必须先装V15.1 |
确认版本的路径:打开TIA Portal,菜单"帮助 → 关于",会显示当前版本号,V15.1就是15.1.0.XXXXX这样的格式。另外右键.ap15_1文件,在文件属性里也能看到类型描述。版本确认这一步花不了两分钟,省的是后面一整个晚上的排错时间。
2.2 解压与项目恢复:从 rar 到可编辑工程的标准动作
压缩包先解压再打开,不要试图在rar软件里双击项目文件。博图的工程不是一个单文件,而是一个项目文件夹,里面有项目文件、系统目录、诊断数据目录等一堆东西。rar只是打包外壳,直接在压缩工具里双击打开,经常因为临时目录或文件关联问题出现各种奇怪的错误。压缩包名里的"实例.0"多半是打包者的迭代序号,不用过度解读,重点认准V15.1这个版本标记。
我一般用7-Zip命令行解压到固定工作目录:
# 用 7-Zip 解压到纯英文路径,-o 指定输出目录,-y 跳过确认 7z x "西门子博图实例.0_V15.1.rar" -o"D:\PLC_Projects" -y # 解压后确认目录结构,项目文件后缀应为 .ap15_1 dir "D:\PLC_Projects"这段命令里,x是解压并保留目录结构,-o后面紧跟输出路径,-y表示遇到询问全部回答是,避免交互卡住。解压完成后重点看目录名:如果解压出来的文件夹名带中文或空格,先改成纯英文,比如把中文目录改成 Inst_V151。TIA Portal 对非ASCII字符路径的支持一直不算好,中文路径是项目打不开的高频原因之一,这条后面避坑章节还会细说。
打开项目的标准动作:
- 启动 TIA Portal V15.1,不直接双击.ap15_1,避免文件关联混乱
- 菜单"项目 → 打开",浏览到刚才解压出的项目文件夹
- 选择里面的 .ap15_1 项目文件,点击"打开"
- 等待"打开项目"进度条走完,期间会做一致性检查和内部数据校验,项目块多的时候等一两分钟正常
- 打开后左侧项目树能看到 PLC_1、HMI_1 之类的设备
打开后如果弹出"不一致"或"需要重新生成"的提示,先记下提示内容,多数情况是硬件组态引用或版本转换残留,后面避坑章会讲怎么处理。
2.3 打开后第一眼:项目树、设备视图与网络视图怎么读
项目树默认在左侧,第一层通常是 PLC_1、HMI_1、共享设备、公共数据。点开 PLC_1 会看到"程序块""工艺对象""外部源文件""PLC变量",HMI_1下面有"画面""HMI变量""运行系统设置"。这些就是后面拆解的主战场。
设备视图和网络视图是理解硬件组态的两把钥匙。设备视图看的是插槽和模块:CPU在哪一槽、信号模块的通道地址从多少到多少、HMI挂在哪。网络视图看的是设备之间的连接关系,重点是PLC和HMI之间有没有一条PROFINET连接,双击这条连接能看到传输速率和IO刷新时间。实例项目一般已经组态好了,照抄它的拓扑就是现成的网络模板。
读这三个视图的顺序有讲究:先打开网络视图,确认设备清单;再进设备视图,记下CPU型号和固件版本;最后回项目树,看程序块的组织结构。我第一次接触实例包时直接扎进程序块里看代码,结果变量从哪来、对应哪个模块都理不清,倒回去看组态才明白。先硬件后软件,读别人项目才不会迷路。
3. 拆解实例项目:硬件组态、程序块与 DB 数据区怎么读
拿到一个能打开的实例项目,别急着改,先拆。这一章讲清楚从硬件到程序再到画面的三层结构。
3.1 硬件组态里藏着什么:CPU型号、信号模块与PROFINET参数
双击项目树里的 PLC_1,默认进入设备视图。设备视图的中间是机架,最左侧是CPU插槽。实例项目里常见的是S7-1214C或S7-1511这类CPU,具体看包的说明。双击CPU图标打开属性对话框,重点看两个地方:PROFINET接口的IP地址,以及固件版本。
IP地址决定仿真能不能连上。比如PLC设的是192.168.0.1,HMI设的是192.168.0.2,那本地电脑的虚拟网卡就必须在192.168.0.x这个网段。PLCSIM会虚拟出一块网卡,它和项目里组态的IP是联动的。改IP的方法:在属性对话框的"以太网地址"里直接修改,改完编译下载才生效。
固件版本决定指令集。S7-1200的固件V4.0以上支持较新的扩展指令,V3.0则少很多功能。PLCSIM V15.1能仿真的固件范围是有限的,实例里如果组态了一个很新的固件版本,下载时经常报设备不兼容。后面避坑章会专门说怎么降固件版本,这里先记住:在CPU属性对话框里,固件版本既能看也能改,改完重新编译。
信号模块看DI/DO/AI的通道分配。选中某个信号模块,下方会出现通道地址表,比如DI地址从I0.0到I0.7。这些地址就是程序中直接用I、Q操作的基础。还想提一点:实例项目里的模块订货号带硬件版本号,实际设备如果型号不完全一致,组态里的模块会显示黄感叹号,这是硬件版本不一致的警告,不影响仿真,但照着实机做项目时要改成实际模块的版本号。
3.2 程序结构:OB/FC/FB/DB 的分工与调用关系
程序块按类型分四类,理解它们的分工,读代码就快一半。
OB是操作系统调用的组织块。OB1是主循环,扫描周期从这里开始;OB100是暖启动初始化,只在CPU启动时执行一次,适合做初始赋值。实例里如果有循环中断OB,比如OB30,它的中断时间默认100ms,在CPU属性里可以改,一般做定时采集用到。
FC和FB是用户写的逻辑块,区别在于有没有自己的背景数据。FC没有背景数据,适合做纯计算,比如把模拟量工程量转换写成FC;FB有背景数据,适合做需要保持状态的设备控制,比如电机、阀门、PID回路。每个FB被调用时对应一个背景DB,里面存这个FB的实例数据。
DB是数据存储区。全局DB存全局数据,背景DB存某个FB的运行数据。看实例项目时,建议先打开"调用结构",它会用树形图展示哪个OB调用了哪些FC/FB,哪个FB用了哪个背景DB。这个视图在项目树的"PLC_1 → 程序块 → 调用结构"里,比逐个双击块看代码高效得多。
实例里如果写了SCL程序块,读起来和结构化文本一致。比如一个典型的电机控制FB,SCL逻辑长这样:
FUNCTION_BLOCK FB_MotorControl VAR_INPUT bStartCmd : BOOL; // 启动按钮输入 bStopCmd : BOOL; // 停止按钮输入 bFault : BOOL; // 故障信号输入 END_VAR VAR_OUTPUT bRun : BOOL; // 运行输出 END_VAR VAR bState : BOOL; // 内部保持状态 END_VAR // 启保停逻辑:先处理停止和故障,再考虑启动 IF bStopCmd OR bFault THEN bState := FALSE; ELSIF bStartCmd THEN bState := TRUE; END_IF; bRun := bState;这段代码的输入输出都在接口区声明,bState是内部记忆位。实例里的FB大多是这个套路:输入放在VAR_INPUT,输出放VAR_OUTPUT,中间状态放VAR。读别人FB时先看接口声明,再看逻辑,比看调用它的OB快得多。它体现的是所有FB的通病:状态保持靠背景DB,所以背景DB的数据要先复位,否则设备可能带着旧状态启动。
交叉引用是读程序的另一个利器。选中某个变量或DB地址,在项目树菜单里点"转到 → 交叉引用",能看到它在哪些块、哪些画面被访问过。查一个报警变量谁写的、谁读的,几分钟就能理清数据流。还有一处值得留意:"外部源文件"目录下如果有SCL源文件,说明打包者习惯保存一份可编辑的文本源码,改逻辑比在块里改方便,引用关系也更清楚。
3.3 数据块与 HMI 画面:从符号表到画面变量
PLC变量表(符号表)是第一层索引。它给I、Q、M等绝对地址起符号名,程序里能用符号名写,别人看注释也明白。打开PLC_1 → PLC变量 → 默认变量表,能看到这个实例项目对每个地址的命名习惯,这是最值得抄的部分:命名规范、注释完整,后续维护少留坑。
全局DB是第二层数据层。实例里的生产数据、配方数据、报警配置,通常都放在全局DB里,用结构体组织。双击DB,可以设置"从数据块生成"或者在线监视时看实时值。DB的偏移地址是HMI引用的依据,比如一个BOOL变量存在DB1.DBX0.0,HMI的IO域连接的就是这个地址。这里要提一下"保持性"设置:DB变量可以在属性里设置保持性,掉电保持的变量和不保持的分开放,照实例的DB结构学习这个习惯,比自己乱建一堆DB省心得多。
HMI画面是第三层。打开HMI_1 → 画面,双击主画面,右侧会列出所有画面元素。点一个按钮,看属性页的"事件"标签,会看到按下和松开分别触发什么变量。点一个IO域,看"属性 → 变量",能看到它绑定的是PLC的哪个变量。把三层对应起来的方法很简单:先在PLC变量表里找符号,再在DB里找地址,再看HMI画面元素绑定的变量。用这个顺序梳理两个变量,整个项目的通讯脉络就清楚了。
整理一个变量映射表做参照:
| PLC变量(符号名) | 数据类型 | 实际地址 | HMI画面元素 | 用途 |
|---|---|---|---|---|
| stData.Motor.B_RUN | BOOL | DB1.DBX0.0 | 电机运行指示灯 | 显示运行状态 |
| stData.Motor.R_SPEED | REAL | DB1.DBD4.0 | 速度设定IO域 | 运行参数输入 |
| stData.Motor.B_STOP | BOOL | DB1.DBX0.2 | 停止按钮 | 操作命令写入 |
读实例项目到这一步,硬件、程序、画面三层怎么连已经清楚了。接下来是把这套逻辑跑起来看效果。仿真这一步和信息安全没有关系,纯粹是把虚拟PLC拉起来,验证实例程序的运行表现。
4. 用 S7-PLCSIM V15.1 跑通实例:仿真下载、监控表与HMI联调
4.1 建立仿真连接:PLCSIM 启动与下载三步
没有真实设备,实例项目能不能动起来,全靠S7-PLCSIM V15.1。它会在电脑里虚拟一块网卡和一整台PLC,把项目下载进去,然后跑程序。前提是PLCSIM已经安装,而且版本是V15.1,跟TIA Portal主程序严格对应。
启动仿真的标准动作:
- 在项目树里选中 PLC_1
- 点击工具栏的"仿真"图标(一台小PLC带灯泡的图标),或者菜单"在线 → 仿真 → 启动"
- TIA Portal自动启动PLCSIM,弹出虚拟PLC窗口,同时弹出"下载到设备"对话框
- PG/PC接口类型选"PLCSIM",接口参数保持默认,点"开始搜索"
- 搜索到虚拟PLC后,点"装载",对话框里选"全部覆盖"或"停止所有块后下载",第一次下载选"全部覆盖"最干净
下载完成后,PLCSIM窗口里的虚拟PLC还处于STOP状态,点一下RUN按钮,程序开始真正循环运行。这里有个细节:加载时如果提示固件版本不一致,选"继续"会下载失败,正确做法是先按提示把CPU固件版本降到PLCSIM支持的范围,再重新编译下载。下载之前最好先点一次"项目 → 编译",让所有块完成一致性检查,编译报错时不要下载,不然下载了一大半报错,还得回滚。
下载时如果PG/PC接口里找不到PLCSIM选项,大概率是PLCSIM没装或者版本不对。回到安装管理里确认S7-PLCSIM V15.1已启用,重启TIA Portal再试。PLCSIM和真实设备仿真之间偶尔有些"玄学"问题,重启大法在仿真环境里同样管用。
4.2 监控表和强制表验证逻辑:把程序钉在调试台上
程序跑起来后,还要能观察内部状态。三种手段足够用:监控表、程序块在线视图、DB在线监视。
监控表的位置在项目树"PLC_1 → 监控与强制 → 监控表"。双击打开,在"地址"列填变量地址,格式可以用绝对地址(比如%DB1.DBX0.0)或者填符号名。点"在线 → 监视",表里会实时刷新数值。改值的方法是先点"齿轮"图标进入"修改"列,填TRUE/FALSE,再点"立即修改所有值"按钮。监控表适合验证逻辑:把启动位改成TRUE,看输出位有没有跟着变。注意监视表里修改值不会写入程序里的强制地址,它是一次性写入,下次扫描可能会被程序逻辑覆盖,这正是用来验证逻辑的地方。
程序块在线视图更直观。打开一个OB1或FB,点工具栏的"眼镜"图标进入在线监控,程序里的每行都会变成带颜色的状态线。在SCL块里,TRUE的分支显示绿色,FALSE的显示蓝色或灰色,一眼能看出当前执行到了哪条路径。LAD块则是触点闭合状态一目了然。仿真状态下运行逻辑是真实执行的,在线视图能抓到每一周期后的状态变化,这个观察方式在真实PLC上同样适用。
DB在线监视是看数据的另一扇窗。打开全局DB,点"眼镜",所有变量的实时值都刷出来;结构体、数组也能展开看。实例项目里如果有模拟量处理,在DB里看工程量数值和原始码值的变化,比对转换逻辑是否正确,比翻公式快。强制表只在有物理IO或PLCSIM时才有效,它能强制输入信号,比如强制一个DI点为TRUE,程序里对应的I0.0就变成1,测试外部信号逻辑用这个。强制值的典型特征是黄色背景,取消强制要小心,全部取消强制的按钮在强制表工具栏里,别误点成停止监视。
4.3 HMI画面仿真:把WinCC Runtime和虚拟PLC连起来
实例项目里通常还带着HMI组态。仿真HMI的入口在HMI画面编辑器里:打开任意一个画面,点工具栏的"开始仿真"按钮(显示器加绿色箭头的图标)。第一次点会弹出一个对话框,选择运行系统,这里要选"仿真",然后点开始。
HMI仿真窗口会以运行态打开,画面上的按钮、指示灯都是可操作的状态。此时只要PLCSIM里的PLC在RUN,画面上的变量就会实时刷新。点画面上的启动按钮,PLC程序动作,指示灯跟着变,整个联调过程跟真实设备几乎一样。这套做法的好处是不用买面板、不用接线,纯软件就能把手动/自动、报警、趋势这些HMI功能都验一遍。
HMI仿真连不上PLCSIM的典型表现是画面里变量显示#####或者长时间不刷新。检查点有两个:一是HMI的连接设置,变量表里每条变量的"连接"必须指向PLC_1,连接参数里的接口要选"PN/IE"或软件仿真对应的虚拟网卡;二是IP网段,HMI和PLC的IP必须同一网段。这两个点改完,重新编译HMI,再启动仿真,一般就好了。
5. 实例项目避坑指南:版本、授权、路径与仿真的6个典型问题
5.1 V16/V17打开升级后保存,V15.1再也回不去
现象:用V16打开.ap15_1项目,提示升级,确认后项目结构、块语言都变了,保存后V15.1打开报版本高。
原因:TIA Portal的升级是对项目数据模型的整体迁移,没有反向通道。升级会把块的内部存储格式改掉,旧版本软件读不了新格式。
解决:升级前把原始rar包或者解压目录完整复制一份,在副本上升级。交档给客户或者同事之前,问清楚对方用的什么版本,按对方版本另存。不要在自己电脑上进完级再把项目发出去。
5.2 启动仿真或打开项目时卡在授权检查
现象:点仿真按钮后,弹窗提示"未找到许可证"或"检查许可证",然后没有下文;打开某些加密块时也提示授权不足。
原因:许可证管理器里没有PLCSIM或对应版本的授权。TIA Portal V15.1的授权和旧版不通用,S7-PLCSIM V15.1需要单独授权。
解决:打开"Automation License Manager",查看本地"受保护的产品文件"里有没有需要的产品密钥。确认授权传输完成后,完全退出TIA Portal再重启,授权检查通常只在启动时做。注意授权是绑定电脑的,换了电脑或者重装系统后需要重新传输。仿真环境中授权状态显示为试用版时,功能会受限,常见的坑是许可状态正常但仿真按钮仍灰,这时先检查安装的PLCSIM组件是否被取消勾选。
5.3 下载到PLCSIM提示"设备不兼容"或固件版本不符
现象:开始搜索能搜到虚拟PLC,点"装载"后报设备不兼容,下载中止。
原因:项目里组的CPU固件版本比PLCSIM V15.1支持的高,或者PLCSIM驱动与CPU型号不匹配。
解决:双击CPU,属性 → 常规 → 固件版本,改成PLCSIM支持范围内的版本。S7-1200系列的V4.0和V4.2在仿真中表现差别不大,选V4.0稳妥。改完重新编译,再下载。这个坑特别容易出现在从网上下载的实例包里,因为打包者的PLCSIM版本可能和你的不一样。如果换了固件版本还是报不兼容,检查一下CPU型号是不是选了带F的安全型,安全CPU的下载校验逻辑在PLCSIM里比较敏感,换标准CPU重试。
5.4 HMI仿真黑屏或IO域显示#####
现象:HMI仿真窗口能打开,但画面空白、按钮没反应、数值显示#####,偶尔还闪屏。
原因:HMI运行系统没连上PLC仿真,或者变量地址不存在。#####通常是变量找不到对应地址的典型表现,数据越界、DB偏移写错都会这样。HMI仿真这一步翻车率很高,问题大多不在画面本身,而在连接参数。
解决:先检查HMI变量表里每条变量的"连接"列,确保指向PLC_1;再对照DB的偏移地址确认变量地址没写错;最后重新编译HMI(项目树右键HMI_1 → 编译)再启动仿真。黑屏还有一个隐蔽原因:画面组态里勾选了"启用位图"但电脑显卡不支持,把运行系统设置里的图形性能改成"标准模式"。
5.5 中文路径或空格导致项目无法打开
现象:解压到"桌面\实例项目"或者中文目录里,打开时提示"无法定位项目文件"或路径无效。
原因:TIA Portal的项目文件管理器对非ASCII字符路径支持差,中文、全角符号、过长路径都会导致打开失败。
解决:统一用纯英文路径,比如D:\PLC_Projects\Inst_V151,目录不要有空格。注意解压工具如果默认带出中文文件名,先重命名再打开。还有一个连带的坑:项目里如果引用了外部源文件或外部文档,路径里的中文也会在编译时报错,所以整个工作目录建议都保持纯英文。
5.6 实例里的IP地址与本地网段冲突,仿真数据不刷新
现象:PLCSIM正常运行,HMI画面数据死活不动,监控表里值也不变化。
原因:项目组态的IP网段和当前电脑虚拟网卡不在同一段,或者PLCSIM虚拟网卡的IP被占用。
解决:把PLC和HMI的IP改成同一网段,比如PLC为192.168.0.1、HMI为192.168.0.2,电脑的虚拟网卡地址别和它们冲突。改IP后要重新编译并下载PLC和HMI,再启动仿真。验证方法是PLCSIM窗口上能看到当前IP,和组态一致就正常。如果改完IP后仿真还是不动,查一下本机防火墙有没有拦截PLCSIM的虚拟网卡流量,仿真联调时临时放行能解决很多奇怪的不通信问题。
6. 把实例改造成自己的项目:另存、重命名与参数重设的三个习惯
6.1 先另存再动手,原始包当备份
打开实例后第一件事是"项目 → 另存为",选一个纯英文路径,给新项目取自己的名字。另存的副本用来改,原始解压包保留着。这一步不会有任何副作用,但能给后面所有折腾留一条退路。另存时勾选"包含硬件组态"的选项保持默认,不要为了减肥去掉硬件组态,不然程序块的地址引用会连着一起乱掉。
6.2 重命名与剥离:保留程序骨架,删掉无关组态
改设备名和块名之前,想清楚引用关系。右键重命名PLC_1、HMI_1、程序块,TIA会自动更新引用。我不建议改DB号和FC号,符号名够用;删掉用不上的HMI画面和扩展模块前,先在交叉引用里确认没有程序引用。有个习惯我一直在用:把实例里不用的OB30循环中断、不用的报警组态先停用而不是删除,等自己的程序逻辑完全替换了再清空,防止删掉后编译出一堆悬空引用。
6.3 参数重设验证清单:改完照着过一遍
| 检查项 | 验证点 |
|---|---|
| CPU型号与固件 | 与实际设备一致,仿真时在PLCSIM支持范围 |
| 网络地址 | PLC与HMI同一网段,不占用真实设备IP |
| 时钟存储器 | 与程序里用到的M区不冲突 |
| 数据块初始值 | 第一次下载用"全部覆盖",避免旧值残留 |
| 循环中断时间 | 按工艺要求重设,实例默认不一定合适 |
最早拿到这类实例包时,我上来就想跑仿真,结果在授权和版本上折腾了半下午,后来养成先对版本、再查IP、最后才动手的习惯。这套流程走得稳,实例包才真正变成自己的东西。希望帮到你。
本文还有配套的精品资源,点击获取