每年电气类毕业设计翻来覆去就那么几类,电机控制、交通灯、电梯、恒压供水,做得人多,答辩老师也看得多。真正让我觉得值得推荐给学生的题目,自动灌溉系统算一个:它既有传统PLC控制的底线要求,又天然嵌入了模拟量采集、上下限比较、手动/自动切换这些实际工程里绕不开的核心知识,再加上组态王做上位机监控,整个系统闭环完整,拿出去讲很有说头。这篇文章我就以自己手头带过的“基于西门子S7-200PLC的自动灌溉系统”完整项目为例,把从需求拆解、硬件选型、I/O分配、梯形图程序设计,到组态王画面组态、仿真联调再到报告写作和答辩准备的整个链路,按我实际操作的顺序全部拆开讲一遍。无论你是正在为毕业设计发愁的电气专业学生,还是想快速上手S7-200配合组态王开发监控系统的初学者,这篇内容都能帮你少走很多弯路。
1. 自动灌溉项目到底要做什么:先把需求画成一张功能图
很多人拿到题目第一反应就是上网找源程序,找到后直接用,结果答辩时老师随便问一个“你的模拟量量程是怎么处理的”就卡壳。这不是个别现象,而是普遍问题。做这类题目,第一步永远是把题目翻译成具体的功能清单,而不是先找代码。
1.1 系统功能需求逐条拆解
自动灌溉系统,从控制角度讲,核心功能就三类:采集、判断、执行。
采集端要解决的是“土壤到底干不干”的问题。市面上常见的土壤湿度传感器输出有数字量和模拟量两种,数字量传感器内部已经集成了比较器,拧电位器设定阈值,湿度低于阈值就输出低电平,但这种方案做完之后几乎没有调试空间,报告里也写不出什么实质内容。我给学生选的是输出0-10V模拟量的土壤湿度传感器,配合S7-200的模拟量扩展模块来做,这样既能把A/D转换、工程量换算、上下限比较这些知识点全部覆盖到,报告里有内容可写,答辩时也有东西可讲。
判断端要解决的是“什么时候该浇、浇多久”的问题。最基本的方案是设一个湿度下限值,低于下限就启动水泵,高于上限就停止,这就是典型的双限控制。进阶一点的方案可以加入定时灌溉功能,比如每天固定时间段强制灌溉一段时间,满足某些对灌溉时间有要求的作物场景。再复杂一点可以引入光照、温度等多路传感器做综合判断,但作为本科毕业设计,双限控制加定时控制已经完全够用,没必要堆复杂度。
执行端要解决的是“怎么把水送出去”的问题。一般选用单相交流水泵,通过PLC的数字量输出点控制中间继电器,再由中间继电器控制接触器,最终驱动水泵电机。选用中间继电器做隔离,是为了保护PLC输出点,这个逻辑我在后面的硬件章节详细说。
1.2 系统指标与控制逻辑设计
明确了功能,接下来要把控制逻辑用文字描述清楚,这相当于软件工程里的需求规格说明书。我的建议是画一个控制流程图,然后把逻辑用自然语言写出来,例如:
- 系统上电后进入自动模式,PLC循环读取土壤湿度模拟量。
- 当湿度值低于设定下限(比如30%)时,启动灌溉水泵。
- 当湿度值回升到设定上限(比如60%)时,停止灌溉水泵。
- 手动模式下,操作人员通过组态王界面上的按钮直接控制水泵启停。
- 任何模式下,水泵持续运行时间超过设定上限(比如30分钟),强制停机并触发报警,防止管道破裂或传感器故障导致的水淹。
这个设计里有个非常关键的细节:为什么停止值要高于启动值?这叫滞回控制。如果只有一个阈值,湿度一低于30%就启动,一高于30%就停止,那灌溉过程中湿度在阈值附近波动会导致水泵频繁启停,继电器和接触器会很快报废。设定一低一高两个阈值,中间留出30%的缓冲区间,系统就不会出现震荡。这个细节是最容易被忽略但又是答辩时最能体现你专业水平的地方。
1.3 为什么这个题目适合做毕业设计
客观说,同时覆盖PLC、组态、传感器、电机控制四个知识点的题目不多,而自动灌溉系统恰好全都占了。S7-200的编程本身不复杂,梯形图逻辑量不大,一个学生在一个学期内完全有能力从头到尾做出来,不会出现做不完的风险。组态王部分则是很多学生的薄弱环节,但又是就业市场上非常实用的技能,做完这个项目,简历上写“熟悉组态王监控系统开发”是有底气的。综合来看,这个题目难度适中,工作量饱满,知识点覆盖广,适合大多数电气工程及其自动化专业的本科生。
2. 硬件选型和I/O分配:动手编程前必须想清楚的事
我在检查学生开题报告的时候,发现大家最容易出现的问题就是直接拿着别人的硬件清单抄,根本不知道自己为什么选这个型号。这一个章节我按自己的选型思路完整梳理一遍。
2.1 为什么选择S7-200而不是S7-1200或S7-1500
西门子PLC产品线很丰富,S7-200属于老一代小型机,S7-1200是它的升级替代产品,S7-1500则是中大型机。很多人会问:既然S7-1200已经出来了,为什么还要用S7-200?
说实话,如果是从头学西门子PLC,我更推荐S7-1200配合博途软件,毕竟博途是现在的趋势。但作为毕业设计,S7-200有一个无法替代的优势:它的编程软件STEP 7-Micro/WIN非常轻量,对电脑配置要求低,破解版容易找,学习资料极其丰富,几乎每个高校的实验室都有存量设备。而博途软件安装包动辄几十GB,对电脑性能要求高,很多学生自己的笔记本根本带不动。更重要的是,S7-200的指令系统更简单直接,适合教学和快速上手,让学生把精力放在控制逻辑本身而不是纠结软件操作上。
从数据层面说,S7-200 CPU224有14个数字量输入和10个数字量输出,对于自动灌溉这种I/O点数不超过20个的小系统来说绰绰有余。如果需要扩展模拟量,可以挂EM235模拟量扩展模块,4路模拟量输入加1路模拟量输出,完全满足一两路湿度传感器的需求。
2.2 传感器、执行器与电源选型
土壤湿度传感器我选的是输出0-10V模拟量的型号,市面上很多,价格也不贵,几十块钱就能买到。这里有个选型要点:传感器的供电电压要跟PLC系统匹配。常见的有5V、12V、24V几种,我推荐选24V供电的,因为S7-200的传感器电源就是24V,可以直接取用,不需要额外的电源模块。
水泵的选择上,实验室演示用的小型潜水泵即可,功率一般几十瓦到几百瓦。实际接线用中间继电器过渡,中间继电器线圈电压选DC24V,由PLC输出点驱动,触点容量选5A以上,用来控制接触器线圈。这里强调一点:PLC的数字量输出点直接驱动接触器线圈不是不行,但接触器线圈是感性负载,断开时会产生很高的反电动势,容易打坏PLC输出点。中间继电器相当于加了一层缓冲,这是工程上的标准做法,答辩时老师问到为什么不直接用PLC带接触器,你要能答上来。
电源方面需要两个:一个给PLC供电,一般用220V AC转24V DC开关电源;另一个给传感器供电,可以直接共用PLC的24V传感器电源。注意模拟量传感器的供电和PLC的模拟量模块必须共地,否则采集到的数值会漂移,这是很多人调试半天发现数据不稳的根源。
2.3 I/O点表:写代码前最重要的一页纸
I/O点表是PLC项目里最基础也最容易被忽视的文件。很多学生在编程的时候凭记忆写地址,写到一半发现地址冲突或不够用,再回头改程序,浪费大量时间。正确做法是在编程前先用一张表把所有的输入输出、中间变量、寄存器地址全部规划好。
我给的参考I/O分配如下:
| 地址 | 类型 | 功能说明 |
|---|---|---|
| I0.0 | 数字量输入 | 自动/手动模式切换开关 |
| I0.1 | 数字量输入 | 水泵启动按钮(手动模式) |
| I0.2 | 数字量输入 | 水泵停止按钮(手动模式) |
| I0.3 | 数字量输入 | 水泵过热保护继电器常闭触点 |
| AIW0 | 模拟量输入 | 土壤湿度传感器1(0-10V) |
| AIW2 | 模拟量输入 | 土壤湿度传感器2(0-10V,备用) |
| Q0.0 | 数字量输出 | 灌溉水泵接触器控制 |
| Q0.1 | 数字量输出 | 报警指示灯 |
| VW100 | 变量存储区 | 湿度测量值(工程量) |
| VW102 | 变量存储区 | 湿度下限设定值 |
| VW104 | 变量存储区 | 湿度上限设定值 |
| VD106 | 变量存储区 | 水泵累计运行时间 |
地址规划的原则是:数字量I/O用I和Q区,模拟量用AIW区,中间变量和设定参数统一放V区。V区地址的使用要注意字节对齐,VW100和VW102这种字地址之间间隔2个字节,VD106这种双字地址要间隔4个字节,避免数据覆盖。
3. 梯形图程序设计:把控制逻辑变成PLC能听懂的语言
硬件确定之后,接下来就是编程。S7-200的编程软件是STEP 7-Micro/WIN,界面很直观,建立项目、写梯形图、下载调试的流程都相对简单。这一章我重点讲程序框架和几个核心模块的实现思路,不讲逐条指令的机械操作,那些看帮助文档就能学会。
3.1 程序整体框架:主程序+子程序+中断
S7-200的程序结构分为主程序(main)、子程序(SBR)和中断程序(INT)。我很推荐用模块化的方式组织自动灌溉的程序代码,原因很简单:不管是调试还是后续修改需求,模块化都能让你快速定位问题,不用在一个几百行的梯形图里前后翻找。
我的程序结构如下:
- 主程序Main:负责初始化参数、循环调用子程序。
- 子程序SBR_0:模拟量采集与工程量转换。
- 子程序SBR_1:自动控制逻辑(湿度比较、水泵启停)。
- 子程序SBR_2:手动控制逻辑。
- 子程序SBR_3:定时灌溉逻辑。
- 子程序SBR_4:报警处理与安全保护。
- 中断程序INT_0:定时器中断,用于累计水泵运行时间。
主程序做的事情非常简单:SM0.1首次扫描时调用初始化,然后依次调用各个子程序。每个子程序做一件独立的事情,边界清晰,调试时可以单独监控某个子程序内部的状态,非常方便。
3.2 模拟量采集与工程量转换:最容易出错的一环
这是整个PLC程序里最核心也最容易出错的地方。S7-200的模拟量输入模块EM235将0-10V电压信号转换为数字量,转换范围是0到32000。也就是说,湿度传感器输出的0-10V电压,对应PLC读到的0-32000的原始数字。
但问题来了:传感器标定的输出和湿度百分比之间的关系是什么?以我选的传感器为例,它是线性的,0V对应0%湿度,10V对应100%湿度,那工程量转换就是简单的一次函数:
湿度百分比 = 原始数字量 / 32000 × 100%
在S7-200里,我用整数运算实现这个转换逻辑。首先用MOVW指令把AIW0的值读到VW0,然后用除法指令。注意S7-200的整数除法结果和余数是分开存放的,操作起来稍微啰嗦一点,我的做法是先乘以100再除以32000,这样结果就是0-100之间的整数百分比,方便后面的比较逻辑。整个转换过程在SBR_0里完成,大约十条指令。
这里有一个很关键的细节:模拟量值不是拿回来就能直接用。传感器在实际安装后,因为土壤类型、探头插入深度、供电电压波动等原因,零点会发生偏移。所以我在程序中预留了一个校准系数VW98,工程量的计算变成:
湿度百分比 = (原始数字量 - 零点偏移) / 量程 × 100%
零点偏移通过实际测量干燥土壤时的读数来确定,每次上电后可以用组态王画面上的校准按钮把当前值设为零点。这一点如果做好了,答辩时说出来,老师会认为你真的理解整个测量链路,而不只是抄了一段程序。
3.3 自动控制逻辑:双限滞回控制的实现
自动控制模块是整个程序的心脏。在SBR_1里,我需要做的逻辑其实非常简单:读取VW100(当前湿度百分比),与VW102(下限设定值)和VW104(上限设定值)比较,决定Q0.0是否输出。
梯形图里的实现思路是:
- 网络1:启动条件。如果当前湿度小于下限设定值,并且Q0.0没有输出(也就是水泵当前没有运行),那么置位一个中间标志M0.0。
- 网络2:停止条件。如果当前湿度大于上限设定值,并且Q0.0有输出,那么复位M0.0。
- 网络3:通过M0.0控制Q0.0输出。
为什么要用M0.0中间标志而不是直接用Q0.0参与比较?这是为了让后续扩展更灵活。比如我要加入定时强制灌溉功能,只需要在M0.0的置位条件里并联一个定时触发条件即可,不需要改动原有的比较逻辑。
滞回控制的本质是:启动阈值低于停止阈值。这个设计一定要在报告里重点阐述,同时在答辩PPT里配一张湿度-时间的曲线图,解释为什么这样设计可以避免频繁启停。
3.4 手动/自动切换与安全保护
自动/手动切换是这类系统必备的功能。我的实现方案是:用I0.0接一个旋钮开关,I0.0闭合时系统处于手动模式,断开时处于自动模式。
手动模式下,SBR_2投入使用,I0.1按下启动水泵,I0.2按下停止水泵。自动模式下SBR_2不执行,避免两个模式同时控制Q0.0造成逻辑冲突。每个模式的输出都用不同的中间继电器地址,最后再汇总到Q0.0,这样就避免了竞争风险。
安全保护方面设计了两个:过载保护和运行超时保护。I0.3接热继电器常闭触点,正常时I0.3为ON,一旦水泵过载,热继电器动作,I0.3断开,程序立即切断Q0.0输出。运行超时保护用定时器实现,在SBR_1中,只要Q0.0有输出,就启动一个定时器,累计运行时间超过VW110中设定的阈值(比如30分钟),则强制关闭Q0.0并置位报警标志M0.1,点亮Q0.1报警灯。这个设计考虑的是传感器故障的极端情况:如果湿度传感器损坏,一直输出低电平,水泵会永远运行下去,导致水资源浪费甚至水泵烧毁。有了超时保护,系统变得安全得多。
4. 组态王画面组态:从设备配置到画面的完整流程
组态王是国产组态软件里非常经典的一款,在很多工控项目里都有应用。对毕业设计来说,组态王的价值在于能直观展示系统的运行状态,同时也是答辩演示时最出效果的部分。组态王与S7-200的通信通常采用PPI协议,通过PC/PPI电缆或者USB-PPI编程电缆连接。
4.1 工程创建与设备通信配置
打开组态王,第一步是新建工程。工程名称建议用英文拼音缩写,比如auto_irrigation,避免中文路径带来的兼容性问题。工程创建后会进入开发系统界面,这里的工作分两大部分:定义外部设备和创建变量。
设备通信是组态王连接PLC的桥梁。在工程树里找到“设备”,选择“新建”,驱动类型选“西门子 -> S7-200(PPI)”,然后设置通信参数。这里最容易出问题的就是通信参数的匹配:组态王里设置的PLC地址必须和STEP 7-Micro/WIN里系统块中设置的PLC站地址一致,默认都是2。通信端口要选择实际连接的COM口,波特率默认9600。
设备定义完成后,下一步是创建变量。组态王的变量分I/O变量和内存变量两类。I/O变量是与PLC通信的变量,它的数据类型和寄存器地址必须与PLC程序里的地址严格对应。比如:
| 组态王变量名 | 数据类型 | 连接设备 | 寄存器 | 读写属性 |
|---|---|---|---|---|
| 当前湿度 | 整型 | S7-200 | VW100 | 只读 |
| 湿度下限 | 整型 | S7-200 | VW102 | 读写 |
| 湿度上限 | 整型 | S7-200 | VW104 | 读写 |
| 水泵运行 | 离散 | S7-200 | Q0.0 | 只读 |
| 手动启动 | 离散 | S7-200 | M0.3 | 读写 |
| 手动停止 | 离散 | S7-200 | M0.4 | 读写 |
| 报警状态 | 离散 | S7-200 | M0.1 | 只读 |
| 自动模式 | 离散 | S7-200 | M0.5 | 只读 |
注意变量类型要匹配:整数对应PLC的VW字变量,离散对应PLC的位变量。地址格式要按组态王的要求写,S7-200的位地址在组态王里通常用B形式表示,比如Q0.0写成Q0.0即可,具体格式在不同版本的组态王里略有差异,实际操作时以设备帮助文档为准。
4.2 画面设计与动画连接
有了变量,接下来就是画画面。一个标准的自动灌溉监控画面应该包含以下元素:工艺流程图(水箱、水泵、管道、滴灌区域)、实时数据显示、控制按钮、运行状态指示、趋势曲线、报警信息。
工艺流程图画好后,关键是做动画连接。双击画面上的水泵图形,弹出动画连接对话框,可以关联“填充”、“隐含”、“旋转”等属性。对水泵,我通常关联它的旋转动画:水泵运行时图形旋转,停止时静止。对管道里的水流,用颜色的填充变化来表示有水流动。这些动画连接在组态王里的实现并不复杂,把画面元素和对应的变量关联起来就行,注意变量的值变化范围跟动画属性匹配,否则动画不显示或者显示异常。
实时数据显示用文本控件,关联“当前湿度”变量,显示格式设为整数即可。设定值的输入用输入框控件,关联“湿度下限”和“湿度上限”变量,运行时可以直接在界面上修改,修改后写入PLC的VW102和VW104,PLC程序里比较逻辑读取的值随之变化。这个交互流程一定要演示给答辩老师看,这是整个系统最直观的亮点。
4.3 历史曲线与数据报表
组态王的历史趋势曲线功能非常成熟,也是毕业设计里比较加分的模块。配置方法是在画面中添加“趋势曲线”控件,定义它的数据源为“历史库”中的变量,然后配置历史库的存储周期。
这里有一个常见的坑:历史曲线没有数据。原因通常是历史记录没有开启。需要在“实时数据库”中,把要记录历史的数据变量的“记录”属性设为“是”,并设置存储周期,比如每1秒存一次。如果前一天没有配置,第二天去看曲线自然是空的。
数据报表方面,可以用组态王自带的报表系统生成日报表或月报表,统计每天、每周的灌溉次数、水泵累计运行时间、湿度平均值等。报表的数据源可以是历史库中的记录。对于毕业设计来说,实现一个日报表功能,展示当天的湿度变化情况和水泵启停记录,已经完全满足要求。
4.4 报警窗口与安全管理
报警功能是组态王里相对容易出彩的部分。在数据词典里定义“当前湿度”变量时,可以在报警属性中设置上限报警和下限报警。比如湿度低于20%触发“土壤干燥”报警,高于90%触发“土壤过湿”报警。运行时,组态王自带报警窗口控件会实时显示报警信息和时间戳。
另外建议在组态王里设置操作员和安全区,给系统设置一个登录界面,不同用户有不同权限。操作员可以修改设定值、手动控制水泵,管理员可以修改报警阈值和系统参数。这个功能的实现比较简单,但能在报告里体现出你考虑了系统安全性和操作规范性,答辩时候老师通常会给正面评价。
5. 仿真与联调:没有实物PLC也能完整跑通全流程
很多学校的实验室设备紧张,或者因为资金问题没有采购S7-200实物,导致很多学生以为做不了这个题目。其实S7-200有官方仿真器,配合组态王可以完成绝大部分功能的调试和演示。这一点必须单独写一章,因为真实操作中坑很多。
5.1 S7-200仿真器环境搭建
S7-200的仿真器一般叫S7-200 Simulator,可以在网上找到。仿真器的使用流程是:先在STEP 7-Micro/WIN里编写程序并编译,确保没有错误,然后导出为仿真器支持的格式。具体操作是点击“文件”菜单里的“导出”,选择导出为.SIM格式的文件。然后在仿真器中加载这个文件,选择对应的CPU型号,点击运行,程序就能仿真运行。
这里有一个非常关键的注意事项:仿真器对S7-200指令的支持并不完整,像某些通信指令、特殊功能指令在仿真器中无法运行。好在我们自动灌溉系统的逻辑比较简单,基本都是基本逻辑指令和模拟量处理指令,仿真器完全能跑起来。如果程序里用了仿真器不支持的指令,编译时不会报错,但加载到仿真器里可能会运行异常甚至加载失败。解决办法是写程序时尽量使用基础指令,把特殊功能放到程序调试阶段再加。
仿真器中可以手动改变输入点的通断状态来模拟传感器信号。但要注意,仿真器里的模拟量输入A/D值是不能直接手动设置的,这也是仿真的局限。我的做法是把自动控制逻辑部分的调试分两步:先用开关量模拟传感器高低电平,测试启停逻辑;然后在真正连接组态王联调时,通过组态王修改变量值来模拟模拟量的连续变化。
5.2 组态王与仿真器的联合调试
这是容易被卡住的环节。仿真器和组态王之间怎么建立通信?方案是使用VSPD(虚拟串口软件)创建一对虚拟串口,比如COM3和COM4,它们之间是连通的。然后让仿真器占用COM3,组态王连接COM4,这样就能实现组态王与仿真PLC之间的PPI通信。
具体操作步骤:
- 安装VSPD,添加一对虚拟串口COM3和COM4。
- 打开S7-200仿真器,在通信设置里选择COM3,确认PLC站地址为2。
- 打开组态王,在设备配置里选择COM4,驱动选S7-200(PPI),站地址设为2,波特率与仿真器一致。
- 启动组态王运行系统,如果设备通信状态显示正常,说明通信链路已经打通。
通信链路正常后,就可以在组态王画面里实时看到PLC程序运行状态了。我测试时的做法是:在组态王里手动修改“湿度下限”为30、“湿度上限”为60,然后在“当前湿度”变量上手动写入一个值,比如写入20,PLC端比较逻辑检测到湿度低于下限,Q0.0输出为ON,组态王画面上的水泵动画开始旋转。再把“当前湿度”改为70,水泵停止。整个联调过程非常直观,也和实际情况完全一致。
有个细节说一下:组态王里对I/O变量手动写入值,写入的是PLC内部对应寄存器的值,这跟实际传感器采集到真实值再传给PLC是两回事,但用来验证逻辑和演示动画效果完全够用。在写报告的时候,如实说明是使用了仿真环境验证控制逻辑,同时提供相关截图,这个工作量是能被认可的。
6. 常见问题与排查技巧实录
做项目过程中我遇到过的、以及学生经常问到的典型问题,我整理成一个速查表,按照实际发生率排个序。这些问题大部分都是非硬件故障,更多是配置和逻辑问题。
| 问题现象 | 可能原因 | 排查思路与解决方法 |
|---|---|---|
| PLC程序无法下载 | 通信参数不匹配,PPI地址错误 | 检查PC/PPI电缆驱动是否安装,PLC站地址是否设为2,通信波特率是否一致 |
| 组态王与PLC通信失败 | 组态王设备配置错误或串口被占用 | 确认使用的串口号正确,关闭其他占用串口的软件,检查设备帮助里的地址格式 |
| 模拟量读数一直为0 | 传感器供电问题或传感器信号未接对 | 用万用表测量传感器输出端,确认有0-10V信号,检查信号线是否接入AIW0对应端子,检查模块拨码开关 |
| 模拟量读数跳变剧烈 | 传感器供电和PLC模块没有共地 | 检查传感器电源地是否和EM235模块的公共端连接,重新接好地线 |
| 水泵频繁启停 | 没有设置滞回区间,上下限设置太近 | 重新设定湿度下限和上限,保证至少20%的滞回区间 |
| 组态王历史曲线无数据 | 历史记录功能未开启 | 在实时数据库中把变量的记录属性设为是,设置合理的存储周期并重启运行系统 |
| 仿真器加载程序后无法运行 | 程序中使用了仿真器不支持的指令 | 检查程序是否包含通信指令、高速计数等特殊指令,将程序简化为基本指令 |
这些坑我自己几乎都踩过一遍。其中最有代表性的是“模拟量读数跳变剧烈”这个问题。当时学生一直以为是传感器质量不行,换了两三个传感器还是同样的问题,排查了很久,最后发现是传感器供电电源的地线没有和EM235模拟量模块的地线接在一起,导致两个设备参考电位不同,A/D转换结果就一直在飘。接上之后数值立刻稳定下来。这个案例也说明,遇到问题不要盲目换硬件,先把接线逻辑从头到尾捋一遍,往往问题就出在最不起眼的环节。
7. 报告写作与答辩准备的思路
最后说一下报告和答辩。有整套源文件和代码的学生,往往会在报告上掉以轻心,觉得代码能跑就行。但实际上毕业设计的最终成绩,很大程度取决于报告和答辩的呈现。站在答辩老师的角度,他不能像你一样天天调试程序,他只能通过你的报告、PPT和现场演示来判断你对整个系统的理解程度。
7.1 万字报告的结构与写作重点
一篇完整的电气类毕业设计报告,结构大概包括:绪论(研究背景与意义)、系统总体方案设计、硬件设计、软件设计、系统调试、总结与展望。我建议在写作时把重点放在“系统总体方案设计”和“软件设计”两章,这两章加起来至少要占整篇报告的一半。
在系统总体方案设计里,要画清楚系统组成框图,写明为什么选择这种结构。这里不要只写“本系统结构简单、成本低”这种空话,而要写具体的对比和取舍。比如对比市面上常见的几种自动灌溉方案,分析各自的优缺点,最后得出结论为什么选PLC方案,这是体现独立思考的地方。
在软件设计一章里,程序流程图是必须的,每个子程序一张流程图,然后配梯形图截图,并对关键程序段做文字说明。特别要注意的是,文字说明不能只是翻译梯形图指令,而要解释设计意图。比如“湿度下限设置为30%是为了保证土壤不干旱,上限设置60%是为了避免过湿导致植物烂根,中间30%的滞回区间是为了防止水泵频繁启停”。这种分析性的文字是得分的关键。
7.2 答辩演示准备要点
答辩现场通常需要10-15分钟的PPT汇报和几分钟的演示。PPT的个人经验是控制在10页以内,不要超过12页,内容排序:选题背景与意义、系统总体结构、硬件选型与设计、软件实现、组态画面展示、创新点与总结。
演示环节建议提前导出两个版本:一是录制的仿真演示视频,防止现场设备出问题;二是现场实时演示组态王和PLC仿真器的联动。实时演示时,可以先展示组态王上的运行画面,再手动改变设定值或当前湿度值,让评委直观看到水泵的启停和画面动画的变化,这是整个答辩里最能加分的时刻。同时要提前想好几道可能被问到的问题,比如“你的湿度传感器防水怎么处理”、“如果传感器失效系统会怎样”、“你的系统如何实现节水”等,这些问题都可以在报告里找到答案。
我带的这个项目,用的就是一套完整的源文件包,包含PLC程序、组态王工程文件、仿真器和全套设计文档,学生拿到之后对照这篇文章的思路去理解,再结合学校的实验室条件做本地化调整,基本都能顺利走完整个毕业设计流程。文章底部可以扫码获取这套资料包,里面附带一个讲解视频,会把编程和组态的关键步骤操作一遍,适合那些需要边看边操作的同学。如果看完还有疑问,也支持定制修改,比如增加多路传感器、远程监控等功能扩展,根据自己的需求来调整即可。