做邮件分拣机的这个项目,折腾了大概三周的晚上时间,从拿到课题到把仿真视频录出来,中间踩了不少坑。今天把这套基于西门子S7-1200 PLC和TP700触摸屏的控制系统方案完整梳理出来,包括博途V16下面的组态方式、分拣逻辑怎么写、怎么用PLCSIM把程序跑起来、HMI仿真和CAD图纸怎么配合,尽量按我实际调试的顺序讲,希望能给正在做同类项目或毕业设计的朋友一个能直接抄作业的参考。
这个项目的本质其实很简单:一条传送带不断送邮件过来,前面有传感器检测邮件进入,系统根据邮件编码(比如扫码结果或者人工按键指定的目的地)判断这封邮件该进几号分拣口,等邮件走到对应分拣口时,推杆或翻板动作把它拨到侧道里。难点不在动作本身,而在“什么时候推”和“怎么让程序结构清楚、能扩展”。S7-1200负责逻辑判断和时序控制,TP700触摸屏负责显示状态、统计数量和手动操作。整个过程用博途V16一个软件全部搞定,不需要额外装Step7和WinCC分开的项目,这本身就是TIA博途最大的价值。
1. 邮件分拣机到底在做什么:工艺拆解与控制需求
1.1 这套系统的工作流程与机构构成
先把工艺搞清楚再谈编程。我这里说的邮件分拣机,不是邮政那种大型交叉带分拣机,而是实验室或实训车间常见的小型直线分拣装置。机械结构主要由四部分组成:上料段、主传送带、分拣执行机构、集料口。
上料段通常是一小段独立皮带,或者就是一个导向板,邮件放上去之后由主传送带带着走。主传送带电机用三相异步电机加变频器控制,也有简化版用直流减速电机直接启停,看项目预算。沿着主传送带分布若干分拣口,每个分拣口配一套执行机构。最常见的执行机构有两种:气缸推杆和电磁翻板。推杆适合邮件形状规则、重量不大的场景,动作快、结构简单。翻板适合能承受一定重量、需要把邮件导流到侧道的场景。我这个项目用的是推杆,因为控制时序容易理解,画CAD图纸也直观。
分拣口的入口处安装对射式光电传感器或漫反射传感器,用来检测邮件是否到位。主传送带靠近上料端还有一个邮件进入检测传感器,它的作用是触发分拣判断。系统启动后,操作员在触摸屏上设定当前这封邮件的目标分拣口编号,或者用扫码枪读取条码自动识别,PLC记录下这个目标值。当邮件经过定位传感器时,PLC开始计算距离,等邮件运行到指定分拣口的时候输出推杆信号,把邮件推出主皮带。
控制需求拆出来就是三类:第一,顺序逻辑,启动停止、手动自动切换、急停复位。第二,分拣判断,要能记录每封邮件的目标口,不能搞混,这个在连续多封邮件连续进入时最考验程序。第三,状态监控,皮带运行状态、气缸到位信号、故障报警、分拣计数全要送到触摸屏上。
1.2 控制需求从工艺流程中来,不是拍脑袋想的
做工程项目一定要先列控制需求清单,再选PLC型号,而不是反过来。我这套系统梳理出来的IO如下:启动按钮、停止按钮、急停按钮、手动/自动选择开关各占一个数字量输入;邮件进入检测光电、每个分拣口到位检测光电各占输入,我做了4个分拣口,加上进入检测一共5个光电;推杆气缸的磁性到位开关每个口两个(推出到位和缩回到位),4个口8个输入;这还没算变频器反馈之类的信号,算下来数字量输入数量在17个以上。
输出侧:主皮带接触器或变频器启动端子、4个推杆电磁阀、三色灯塔(红黄绿)、蜂鸣器,粗算9个数字量输出。
所以我选了CPU 1214C DC/DC/DC,它集成14个数字量输入和10个数字量输出,刚好卡着够用。如果选用1212C,就只有8输入6输出,必须扩展SM1223模块,成本和接线复杂度都上去了。1214C多出来的点还能留几个备用,后面改需求不至于重新选型。这个选型逻辑在方案汇报的时候最好讲清楚,能体现你是算过IO的,不是随便拿一个CPU凑数。
1.3 为什么这个项目适合用来吃透S7-1200
邮件分拣机这个对象,难度梯度铺得很开。新手能从这里学会TIA博途项目怎么建、PLC变量表怎么规划、最简单的起保停电路怎么写。中等难度可以做定时器、计数器配合传感器实现分拣时序。往深了做,可以用SCL语言写状态机,用高速计数器做测距,甚至可以引入RFID识别邮件,连到上位机做数据追溯。也就是说,这套系统从小型PLC入门到复杂逻辑都能支撑,不会让你做完一遍还摸不着头脑。
再加上S7-1200本身定位就是小型控制器里的中坚力量,博途V16完整支持S7-1200和精智面板TP700,这俩是同一生态,学一遍后面接触S7-1500和WinCC的面板项目,迁移成本很低。TP700是西门子精智面板的代表型号,7英寸宽屏,带以太网口,做小型设备的HMI非常合适。把这个项目做明白,出去面试自动化岗位或者做设备调试,底气会足得多。
2. S7-1200和TP700选型及电气方案定型
2.1 为什么选S7-1200而不选200 SMART或300
很多人在S7-200 SMART和S7-1200之间纠结。如果只做单机小项目、预算非常紧张、程序量不大,200 SMART确实便宜,而且它在国内有大量存量设备,工程资料好找。但如果你需要跑比较复杂的功能块、要触摸屏和PLC协同仿真、要用博途V16统一组态、甚至后续要接Profinet分布式IO或驱动,那200 SMART就吃力了,它的编程软件和仿真能力跟博途不是一个量级的。
S7-1200的程序存储和数据存储都远大于200 SMART,支持块调用、多实例、SCL编程,调试时可以配合S7-PLCSIM做完整的仿真验证。而且博途V16里组态TP700触摸屏和S7-1200,直接连同一个项目,变量可以自动映射,这种“一个工程文件搞定PLC加HMI”的体验,比老式Step7加WinCC分开管理项目高效很多,也降低了学习成本。
2.2 TP700触摸屏和Profinet组网方式
TP700 Comfort是精智面板,带Profinet接口,IP地址可以和S7-1200设在同一个网段,比如PLC是192.168.0.1,面板是192.168.0.2。在博途V16里新建项目后,先添加S7-1200站点,再添加TP700面板,然后在网络视图里把两者的Profinet接口拖到一起连上线,系统会自动建立连接。这时候HMI的变量表可以直接引用PLC的符号变量,不需要手动敲绝对地址。这一步是博途最出彩的地方。
需要注意的是,TP700在组态时也要选对具体型号,TP700 Comfort有不同订货号,对应不同固件版本。博途V16支持组态TP700时选择固件版本,如果面板实物固件版本比较老,下载HMI程序时可能会提示需要更新设备固件。更新固件本身不复杂,在TIA博途里选中设备,在线状态下可以执行更新,但要注意更新过程中不能断电,否则面板变砖的风险很高。
2.3 IO地址分配和接线规划的实操建议
在博途V16里给变量起名字的时候,我建议直接用设备功能命名,比如EnterSensor(进入检测)、Push1Out(1号推杆伸出)、Cylinder1Retreat(1号气缸缩回到位),不要用I0.0这种地址符号。这样写梯形图的时候看程序就知道在操作什么,不用来回对地址表。触摸屏那边做变量映射时也清晰得多。
IO地址合理分区也很重要。把输入按功能连到固定区域:启动停止急停占I0.0-I0.2,模式开关I0.3,传感器从I0.4往后排。输出从Q0.0开始排主接触器、Q0.1到Q0.4排推杆电磁阀。这种规划在出CAD接线图时非常方便,也能避免程序里的地址冲突。
我踩过一次坑:一路输入接到了PLC的漏型/源型公共端接错。S7-1200的集成输入既支持源型也支持漏型,取决于M端的接法。如果传感器是PNP输出,公共端要接M;如果传感器是NPN输出,公共端要接24V正极。好多新手在这个地方烧传感器。我的建议是CAD图纸里把传感器接线单独画一张图,标明PNP/NPN类型,现场接线的人拿到图纸可以直接按图接,不用反复问。
2.4 CAD图纸在整个项目里的作用
标题里带了CAD,很多人以为CAD只是用来画一个外观示意图。实际上邮件分拣机这种项目,CAD图纸至少要包括三张:电控柜面板布置图、主回路和控制回路接线图、分拣机构安装位置图。
电控柜面板布置图解决的是物理空间问题,PLC、开关电源、继电器、接线端子排这些器件要按尺寸画在柜内布局里,留出走线槽和散热位置。主回路控制回路图解决的是通电逻辑问题,什么地方该用继电器隔离、什么地方直接接变频器端子,都要明确标注。分拣机构安装位置图则是把光电传感器和分拣口的距离标清楚,这是后面PLC里计算推杆动作延时的关键依据。
实际上做PLC程序的时候,我给每个分拣口安装位置编号,比如1号口中心距进入检测光电1.6米,2号口中心距2.6米。这些数字就来自CAD图纸上标注的尺寸。程序里算延时和动作先后,全都以此为基准。所以说CAD不是程序之外可有可无的东西,它是程序参数的直接来源。
3. 博途V16项目搭建与PLC程序开发
3.1 环境准备和新建项目的几个关键设置
博途V16安装不复杂,但坑不少。如果你的电脑内存不到16G,开一个包含PLC和HMI的项目会比较吃力,建议至少8G以上,固态硬盘是刚需。安装的时候尽量把所有需要的选件一次性装完,尤其是SIMATIC S7-1200的支持包和WinCC Runtime Advanced/V16仿真组件,缺了后面HMI仿真起不来。
安装过程要注意杀毒软件可能拦截授权服务和仿真组件,出问题先关掉安全软件再试。项目文件路径不能有中文和空格,建议放在纯英文目录下。新建项目后,在PLC属性里要确认启用了“支持仿真”,S7-1200从固件V4.0开始才支持PLCSIM仿真,太老的固件就必须在真实硬件上跑。TP700那边则要确认WinCC RT Advanced的许可证或试用期还有效,否则启动HMI仿真时会报运行系统错误。
3.2 PLC程序架构:OB、FC、FB、DB怎么安排才不乱
一个像样的S7-1200程序,不应该把所有逻辑都堆在OB1里。我按功能拆成四层:
主组织块OB1只做轮询,调用自动运行功能FC和报警处理FC。启动初始化在OB100里做,比如复位分拣计数器、清除中间标志位。
手动控制放FC_Manual,里面是所有阀和电机的点动逻辑,按钮按下就动作,跟自动互锁。手动模式主要用于设备调试和故障排除,比如单独测试1号推杆动不动、气缸磁性开关有没有信号。
自动运行放FB_Auto,用FB就是因为自动分拣需要保存每封邮件的目标口和位置状态,用多重背景实例或者单个背景DB保存这些数据比FC方便。比如DB_Auto里声明一个数组ShiftReg,存放传送带上的邮件队列信息。
报警处理放FC_Alarm,主要处理急停被拍下、气缸动作超时、变频器故障这些异常情况。报警信号统一映射到HMI的报警变量区,触摸屏上直接弹报警文本。
这种模块划分的好处是,你在调试时能快速定位问题。比如现场反馈推杆不动,先切手动模式测推杆电磁阀,如果手动能动说明硬件没问题,问题在自动逻辑或者传感器信号。如果没有手动程序,你在自动流程里排查一个执行机构的问题会非常痛苦。
3.3 分拣定位的核心逻辑:定长延时和队列跟踪
最需要讲透的是分拣时怎么知道邮件到了该推的位置。工艺简化后是这样:有两个关键位置点,一个是进入检测光电Sensor_In,一个是各分拣口的光电Sensor_Out1到Out4。分拣口的光电装在推杆的正前方或者正后方,用它检测邮件已经到位。
控制方式常用的有两种。第一种是定长延时法:邮件头部触发进入检测光电后,PLC开始计时,根据传送带速度和进入检测点到1号推杆的距离,算出经过多久邮件头部到达推杆位置,时间到了推杆动作。这种方式适合皮带速度恒定、邮件长度差别不大的情况,程序简单,用TONR定时器就能实现。
第二种是移位寄存器法:把传送带沿线划分成许多小段,邮件每前进一段就移位一次,哪个位置上有邮件、这封邮件去几号口,都可以用数组元素表示。这个逻辑对速度变化有鲁棒性,但需要编码器或者变频器频率反馈来产生位移脉冲,程序复杂度上升不少。
我的建议是,如果项目要求稳定、简单,优先用第一种。假设带速v=0.4m/s,进入检测光电到1号推杆中心距离L1=1.2m,那么邮件头部到达推杆的时间就是1.2除以0.4等于3秒。光电触发后,用定时器延时3秒输出推杆,推杆动作保持1.5秒确保邮件完全滑出主传送带,再缩回。2号分拣口距离更远,比如L2=2.0m,对应延时5秒。这个计算先写进程序注释里,后面调整速度时直接按比例修改。
如果要做得更严谨一些,还要考虑邮件的长度。比如邮件长度偏长,头部到达推杆时邮件尾部还没完全离开传感器,真正的推出窗口应该是邮件中心到达推杆的时刻。所以在延时计算里取邮件长度的一半作为修正:t = (L - 邮件长度/2) / v。你可以在触摸屏上设定默认邮件长度参数,这样更换物件时不用改程序。
用SCL实现这个逻辑比梯形图直观很多。核心段大概长这样:
// 邮件进入检测触发 IF "EnterSensor" AND NOT "EnterSensor_Edge" THEN "DB_Auto".MailBuffer[0].TargetChute := "DB_HMI".PresetChute; "DB_Auto".MailBuffer[0].Active := TRUE; END_IF; "EnterSensor_Edge" := "EnterSensor"; // 定时动作,1号口推杆 IF "DB_Auto".MailBuffer[0].Active AND "DB_Auto".Timer1.Q THEN "Push1Out" := TRUE; END_IF;当然,这里为了示意把逻辑大幅简化了。实际程序里移位寄存器数组会每个扫描周期往下传递状态,并对应触发现场寄存器,模拟邮件在传送带上的连续移动。
3.4 手动自动报警三块内容的接口衔接
自动和手动之间必须做严格的互锁。我在HMI上给每个推杆都设置了手动按钮,这个按钮只有在PLC处于手动模式时才有效果。PLC内部手动模式M_Manual为TRUE时,FB_Auto的自动输出被强制复位,手动命令可以直接到输出点。用软件互锁加硬件继电器互锁双重保险,防止误动作导致人身伤害。
报警处理这里有一个非常容易忽略的点:报警不仅要检测故障发生,还要防止一个故障反复触发刷屏。比如气缸推杆伸出后磁性开关在设定时间(比如3秒)内没动作,程序判定气缸卡死,报警置位。操作员处理完故障后按复位键,报警应该清除。所以报警一般用置位加复位指令而不是简单的常开触点输出。触摸屏上的报警文本和PLC里的报警位一一对应,HMI通过变量可见性控制是否弹窗提示。
分拣计数我用了两组计数器:一组记录每个分拣口累计处理的邮件数,一组记录总邮件数和剔除数。这些数值保存在PLC数据块里,触摸屏上直接显示。断电后数据要不要保持?如果设备需要统计班产量,建议把计数器定义成保持性变量。S7-1200数据块的保持性可以在属性里设置,默认不保持,需要手动勾选。我第一次没注意,每次断电数据清零,操作员早上开机发现前天产量没了,很尴尬。
4. TP700触摸屏画面组态与背后逻辑
4.1 HMI变量与PLC变量的对接方式
TP700组态用的是WinCC,但你在博途V16下不需要单独创建WinCC项目,直接在同一个项目下添加HMI设备就行。HMI变量表里点“从PLC连接”按钮,能列出PLC侧所有符号变量,挑要显示的勾选过来。这一步最爽的地方是不用手敲地址,也绝对不会有地址错位问题。
HMI变量连接PLC符号时,要留意数据类型匹配。PLC里用BOOL类型,HMI可以直接显示,但有些报警结构、INT和DINT之间转换容易出问题,赋值前先在PLC侧把类型定义好,免得HMI变量表要做一个转换标签。触摸屏是精致面板,跟基础面板RT系统不完全一样,勾选保持性时也要注意面板掉电保持和PLC保持变量是两套逻辑。
4.2 画面结构和按钮背后的功能陷阱
我做的画面按功能分四页:主画面、手动操作画面、参数设置画面、报警历史画面。主画面显示设备运行状态、当前模式、总计数和每个分拣口计数,还有一个大的停止按钮。手动操作画面按机构布局放置按钮,每个按钮旁边有对应的到位指示灯。参数设置画面放带速设定、邮件长度设定和各口延时设定。报警历史画面列表显示当前报警和历史报警。
触摸屏按钮看似简单,其实有几个很隐蔽的问题。按钮的“模式”属性要选“按一下”还是“切换”。如果你希望按钮按住动、松开停,必须用“按一下”加PLC里的保持逻辑,或者用触摸屏的“按住”事件触发置位、松开事件触发复位。如果直接用“切换”,按一下输出ON再按一下OFF,手动点动时特别容易造成误操作。
HMI变量的采集周期也会造成按钮响应延迟。速度模式下,HMI默认每个周期轮询所有画面变量,如果变量很多,某条变量刷新慢,按钮状态会在人眼看来有延迟。一般把系统默认周期设100毫秒够用,没必要设太快增加面板负担。
4.3 报警与统计:让操作员一眼看出设备问题在哪里
报警设计不能只是把PLC位的状态搬到屏幕。好的做法是通过HMI报警控件连接S7-1200的报警文本。每个报警触发时也会记录发生时间。操作员在报警历史里可以看到“3号推杆伸出超时”、发生时刻、确认按钮,一目了然。
统计画面里我放了三个小区域:历史累计总数、当日各口分拣数、设备运行时间。设备运行时间的计时逻辑需要注意,如果只是简单累加运行标志的扫描周期,长时间运行会产生累积计时误差,建议用RTC实时时钟差值来做。触摸屏上还能显示当前邮件总处理量和效率,作为实训演示效果也很好。
5. 仿真联调:没有实物怎么把整套系统调通
5.1 S7-PLCSIM仿真PLC程序的标准步骤
先用博途V16打开项目,在项目树选中PLC站点,点工具栏上的“启动仿真”按钮。第一次会弹出提示需要下载到仿真PLC,选择下载后会打开S7-PLCSIM界面。这里要说一个常见的失败原因:如果PLC属性里没有勾选支持仿真,或者固件版本太低,下载会报错。另外确认你已经安装了S7-PLCSIM V16组件,很多精简安装默认不带。
程序下载到仿真PLC后,仿真器里的CPU状态切到RUN,没有红灯报错就代表程序基本能跑。不要急着调试,先在PLCSIM里强制几个关键输入,比如给EnterSensor一个TRUE信号,观察分拣动作发生没有。S7-PLCSIM支持强制输入输出,也支持定时器运行,比老式仿真器好用很多。
5.2 HMI和PLCSIM联动仿真设置
TP700触摸屏的仿真和S7-1200的仿真联动,是很多教程一带而过但实操容易卡住的地方。必须在项目里先添加HMI设备并建立好Profinet连接,然后在HMI站点上点“启动仿真”。博途V16会弹出WinCC Runtime仿真窗口,此时HMI仿真默认连接的是PLCSIM实例,不需要再单独配置通信。
如果你启动HMI仿真时按钮是灰色或者启动后触摸屏上显示“连接中断”,大概率是HMI运行时没有正确识别PLCSIM。解决办法是在HMI的“运行系统设置”里检查是否选择了“SIMATIC PLC SIM”作为驱动,另外确认PLCSIM中的PLC已经处于RUN状态。
5.3 仿真不能替代实物调试的哪些事
仿真能验证逻辑,但不能验证硬件接线和实际传感器安装位置。这是所有仿真项目的边界。PLCSIM里你给EnterSensor强制一个TRUE,程序会照常运行,但它没法模拟一个传感器被遮挡时响应时间只有几毫秒的情况,也没法模拟气缸动作后磁性开关信号抖动干扰。
所以我的建议是:仿真阶段重点调三件事,一是操作逻辑流程是否通顺,二是报警互锁是否有效,三是分拣延时参数是否合理。把这三块在仿真中反复演练,上电调试时只需要排除硬件问题,效率会高很多。
仿真视频录制这个环节也顺便说一下。录完PLC和HMI的操作过程后,我用了OBS录屏软件,把PLCSIM窗口、HMI仿真窗口和CAD图纸分屏展示,明确标注“当前分拣目标=2号口”,再触发传感器,屏幕上能清楚看到推杆动作和计数加一。这样一段视频拿去做项目汇报,比干巴巴讲PPT有力很多。项目标题里的“仿真视频CAD”指的就是这个组合展示。
5.4 从仿真到实物调试的时间落差和预案
实物调试和仿真最大的区别是信号到达CPU的时间变得真实而离散。传感器可能因为安装位置偏了,邮件还没完全挡住光斑就返回了,也可能因为邮袋颜色深导致反射式光电提前误触发。仿真里不可能看到这些。我给每个分拣口的到位条件加了一个稳定时间,传感器信号必须持续50毫秒以上才被认定为有效,这样就挡住了大部分抖动干扰。
推杆动作时长在仿真里可以设置得短一点验证逻辑,但到实物要根据气缸实际动作时间调整。不同气压下气缸伸出速度不一样,冬天和夏天差很多,所以我没有把推杆持续时间写成固定死数值,而是放到HMI参数画面里,让现场调试人员能改。这在设备调试领域叫“调试参数开放”,也是程序人性化的体现。
6. 博途V16常见问题与排查速查表
6.1 软件安装和程序下载类问题
博途V16安装慢和兼容性问题是讨论最多的。如果你的系统是Windows 11,有些旧版本V16会提示不支持,这时候需要更新到V16 Update或更高版本。安装时先退出杀毒、确保以管理员身份运行安装向导。装完第一次启动项目时,如果提示缺少许可证,检查Automation License Manager里有没有激活对应的试用授权。
下载程序时如果报“设备不兼容”或“在线设备与项目不匹配”,八成是CPU固件版本不一致。解决方案是在在线和诊断视图中更新固件,或者把项目里的设备固件版本改到和实物一致。有一点要提醒:在线更新固件会使PLC停机,生产设备上做这个操作前必须确认没有在跑产线。
6.2 触摸屏仿真按钮无反应的几种原因排查
这个现象我周围好几个人都遇到过,HMI仿真窗口能打开、画面能显示,但点击画面里的按钮没有任何反应。排查顺序建议是这样:先看PLCSIM是否在运行,仿真的HMI必须连到运行中的仿真PLC,如果PLC处于STOP,按钮状态不会刷新。再看HMI变量是否已经连接到PLC符号,没有连接就直接在画面里用内部变量的按钮是不会有逻辑效果的。然后检查按钮事件有没有正确组态,比如事件类型设置了但没连动作。最后看运行系统的授权,WinCC RT Advanced试用期过期后,按钮事件也不执行。
当然HMI仿真时也不要开着多个旧的仿真实例,内存里多个PLCSIM实例会占用端口,导致新启动的HMI连到旧实例上,现象就是按钮点了没反应。关掉所有仿真实例重新来一遍能解决不少奇怪问题。
6.3 分拣误判和动作不到位的故障排查
现场如果出现该推的没推、不该推的乱推,别急着改程序,先用排除法定位。第一,确认传感器安装位置和CAD图上标的一致,用卷尺量一下实际距离和程序里输入的距离参数是否一致。第二,确认邮件进入检测信号没有重复触发,如果光电安装位置太靠近上料段,两封邮件连续进入间隔太短时,程序可能来不及处理上一封就收到下一封触发,这时候要在程序里加触发间隔锁定。第三,确认每个分拣口的光电信号接到了正确的输入点,不是地址映射错了。
如果动作延时没错但邮件推偏了,大概率是推杆动作时长不够或者带速不稳。传送带用变频器驱动时,加减速时间太长会导致瞬时带速和设定不同,邮件实际到达推杆的时间偏离理论值。解决办法是把推杆触发位置往邮件运行方向前移一点,或者在每个分拣口前再加一个传感器,用“分拣口光电触发后再延时200毫秒推”的方式替代固定长距离延时,可靠性会高很多。
6.4 几个不容易发现的细节问题
博途V16项目如果组态了两个相同IP地址的设备,下载时可能不会直接报错,但运行时通信会随机断。我在一次项目中给PLC和HMI设成了同一个IP,结果PLC程序能下载,HMI却无论如何连不上。后来检查网络视图才发现两个设备IP冲突。建议在项目导航里专门建一个IP地址规划表,PLC、HMI、上位机、交换机各自单独一段,避免类似问题。
保持性变量在仿真和实物上的行为也有差异。PLCSIM里断电重开,保持性数据是保留的,但仿真器退出再启动不一定会恢复,而实物PLC重新上电会先执行OB100初始化。如果你OB100里有复位操作,注意别把需要保持的数据误复位了。我习惯把初始化逻辑做成“仅在首次运行且没有保持数据时执行”,用一个小数据块标志位记录是否已初始化,防止设备重启后数据被清零。
7. 最后说一点个人实际调试中的体会
这项目做下来给我最大的感触是,一套系统的“可交付感”不只来自PLC程序能跑通,还来自HMI画面是否友好、仿真录像是否完整、CAD图纸是否对应实际柜内布局。很多朋友做项目喜欢逮着梯形图一直写,写完了就算结束,结果到汇报或答辩时发现只有逻辑代码,没有能演示的东西,评委根本看不出你做了什么。
我后面养成了一个习惯,程序写到一个阶段就先录一段仿真视频,哪怕只有5分钟,视频里直接把当前能验证的功能都演示一遍。视频文件名带日期和版本,比如“V16仿真_20240715_分拣计数验证.mp4”,这样改程序后对比视频还能看出功能有没有改动。CAD图纸也是同理,改一次IO分配就同步更新一次接线图,别让图纸和实物脱节。最终交付一个带有完整仿真验证视频和清晰CAD图纸的项目包,比只丢一个程序文件给客户或老师,专业程度高出一大截。
如果你准备照着这个思路自己做一遍,我建议把项目文件按三个目录归档:Program目录放博途V16工程文件,Document目录放IO表和CAD图纸,Video目录放每次仿真的验证录像。虽然只是文件管理的小习惯,但真正做复杂项目时能帮你省下大量回溯时间。这套系统做扎实之后,再往上接RFID识别、变频器Profinet通信或者MES数据上报,也不会觉得吃力,底层框架已经打好了。