
1. 项目需求与整体方案设计1.1 空调自动控制系统到底要控制什么空调自动控制系统说白了就是让一套空调设备在没有人工干预或者少量人工干预的情况下自己去完成温度调节、湿度控制、风机启停、新风比例切换这些事情。平时我们见到的商场、办公楼、厂房的中央空调背后都是一套这样的逻辑在做支撑。我这边的项目是用 S7-200 PLC 组态王 来搭一套典型的风机盘管或组合式空调箱控制系统。控制对象一般包括送风机、回风机、冷热水电动阀、加湿阀、新风阀、回风阀再加上温度、湿度传感器。系统需要做的事情拆开来看并不复杂回风温度高了开大冷水阀把送风温度压下去。回风温度低了切换或开大热水阀。湿度高了关加湿阀湿度低了开加湿阀。冬季或者夏季根据季节模式切换风阀开度调整新风比。风机停止时联动关闭水阀防止冷盘管冻裂或者结露。这套方案非常适合改造项目。很多老空调控制柜用的是仪表单机控制或者继电器二次回路改造成 PLC 控制后不仅逻辑清楚还能把数据传给上位机做集中监控。组态王在这里的作用就是当“人机界面”负责显示实时温度、画面积状态、运行报表、报警记录。而 PLC 是真正干活的采数据、算逻辑、输出开关量和模拟量。两者各司其职配合得很顺。1.2 为什么选择 S7-200 PLC 组态王选型这两个我是有私心的。主要原因就三个设备成熟、资料多、后期的调试工具大家都熟悉。先说 S7-200。它是一代经典虽然官方已经停产多年但市面上海量项目还在运行二手市场和备件渠道也非常成熟。它的编程软件 STEP 7-Micro/WIN 只需要一台 Windows 电脑就能跑梯形图编辑器非常友好适合刚接触 PLC 的工程师快速上手。另外一个很大的优点是 S7-200 的定时器、计数器、PID 指令都内置了做空调这种温度控制场景足够用不需要额外买功能块。再说组态王。它是国内做上位机监控的老牌软件版本从 6.55、6.60 一路用过来。组态王做空调控制系统的最大优势在于它对西门子 S7-200 的驱动支持非常完善通过 PPI 协议或者 MPI 协议都可以直接通信不需要自己写通信程序配置一下设备信息就能连上。这样一来项目重心就能放在控制逻辑和画面设计上而不是卡在通信底层。从实际成本来看一套 S7-200 CPU 224XP 加上几个模拟量模块再配组态王开发版总费用比进口高端 PLC 加国外组态软件要低不少。尤其在中小型空调机房项目里这套组合性价比非常突出。如果你还在犹豫选型我给一个建议先看项目的 I/O 点数规模。点数不超过 50 点、通信要求不高、预算有限的项目S7-200 组态王是首选。1.3 系统架构与控制逻辑梳理整套系统的架构可以分成三层第一层是现场设备层包括温度传感器、湿度传感器、压差开关、风机接触器、电动调节阀、变频器等。这些设备直接与 PLC 模块相连传感器接模拟量模块接触器和电动阀接数字量输出或模拟量输出。第二层是控制层也就是 S7-200 PLC。PLC 负责循环扫描程序逻辑读取输入状态执行 PID 运算输出控制指令。第三层是监控层通过 PPI 电缆或通信模块将 PLC 和上位机连接组态王实现画面监控、数据记录和报警。控制逻辑的总体思路是以回风温度作为主控制点用 PID 计算冷/热水阀开度以送风温度作为辅助监测点限制最低送风温度防止冷风直吹或凝露以回风湿度作为加湿控制的依据用开关量或阀值控制加湿阀。整个程序用梯形图写出来按“模式判断 → 手动/自动切换 → 风机启停 → 温度 PID → 阀位输出 → 联锁保护”的顺序排列。这个顺序其实也是 PLC 程序从上到下扫描的顺序先把模式定下来再执行控制动作不容易乱。2. 硬件选型与地址分配2.1 PLC 本体与扩展模块选择S7-200 家族里我常用的是 CPU 224XP因为这款自带 2 路模拟量输入和 1 路模拟量输出对于小系统来说能省一个模块。如果只是做一台组合式空调箱大概需要 4 路温度输入、2 路湿度输入、1 路阀位输出、1 路变频器频率给定输出。这样的话CPU 224XP 自带 2 路 AI 再加一个 EM231 四通道模拟量输入模块资源就非常宽松了。数字量方面CPU 224XP 自带 14 路输入和 10 路输出。空调系统中数字量输入一般是手自动旋钮、启动/停止按钮、风机运行反馈、故障反馈、压差开关状态差不多 6 个点。数字量输出是送风机启停、回风机启停、加湿阀开关、电加热开关如果有的话差不多 5 个点。所以 CPU 224XP 本体已经能满足不需要额外扩展数字量模块。需要提醒一下此处选择设备时要注意 CPU 型号后缀带不带 DC/DC/DC。如果是纯粹的 220V 供电项目就选 AC/DC/RLY 型号继电器输出对后级接触器线圈驱动友好不容易被感性负载反电动势烧坏。电源模块我习惯用开关电源 24V 5A 给传感器供电与 PLC 内部 24V 分开避免温湿度传感器的电源被 PID 输出负载影响。2.2 传感器与执行器选型温度传感器我建议用 PT100 铂电阻。它的线性度好、稳定性高接线用三线制可以抵消导线电阻影响。这块在项目里很重要特别是机房现场传感器到 PLC 的距离有时候超过 20 米两线制接法误差明显三线制能最大程度保证采准。湿度传感器用 4-20mA 输出的变送器两线制。这种变送器抗干扰能力比电压型的强长线传输电压降小。注意变送器供电和 PLC 模拟量模块的电源要做共地处理否则信号会有飘移。电动调节阀选型要看几个参数口径、流量系数 Kvs、电动执行器的行程、输入信号类型。我们控制冷热水阀通常选 0-10V 或 4-20mA 输入的比例调节阀90 秒全行程的电动阀足够用了。如果阀门材质不过关空调冷冻水阀门最容易出现的问题是关不死所以选阀体时尽量用球阀或 V 型调节阀不要用普通的闸阀。变频器主要是给送风机调速用的。选功率时按风机铭牌电流的 1.2 倍选型。控制信号接变频器 AI 端子反馈信号接 AO 端子PLC 通过 0-10V 信号给定频率。这部分特别注意的是变频器接地要和 PLC 接地分开一点否则高频谐波很容易串到模拟量通道里面去到时候温度波动会让你调一天都调不干净。2.3 I/O 点表与地址分配表做 PLC 项目第一件事就是把 I/O 点表列出来后面写程序、做画面全都要靠它。下面是一台标准组合式空调箱的数据分配可以参考设备/信号类型PLC 地址说明回风温度 PT100模拟量输入AIW0从 EM231 的第 1 通道接入送风温度 PT100模拟量输入AIW2从 EM231 的第 2 通道接入回风湿度变送器模拟量输入AIW44-20mA 信号送风湿度变送器模拟量输入AIW64-20mA 信号手自动切换旋钮数字量输入I0.0闭合为自动断开为手动启动按钮数字量输入I0.1手动运行启动停止按钮数字量输入I0.2手动运行停止风机运行反馈数字量输入I0.3接触器辅助触点风机故障输入数字量输入I0.4热继电器或电机保护器送风机接触器数字量输出Q0.0控制风机通断加湿阀开关数字量输出Q0.1开关型加湿电磁阀冷水阀开度给定模拟量输出AQW00-10V 信号给电动阀热水阀开度给定模拟量输出AQW20-10V 信号给电动阀变频器频率给定模拟量输出AQW4接风机变频器地址分配的原则有几条模拟量输入按模块物理通道顺序排列保证后续工程读取方便数字量输入把启动、停止这类常用信号放在低地址因为接端子时一般也顺手排在前排模拟量输出要与执行器一一对应千万不要把一个通道拆给两个执行器共用。地址表做完后直接在 STEP 7-Micro/WIN 里新建符号表把每个地址的符号名写清楚。这一步偷懒的话后面写梯形图会非常痛苦满屏幕都是 I0.3、VW200没注释跟看天书一样。3. 梯形图编程与关键逻辑实现3.1 梯形图基础与常用指令S7-200 的梯形图虽说是图形化编程但本质还是一个一个的网络Network扫描执行的。每个网络有一个确定的功能比如“手动启动”做一段网络 2 做“自动联锁”网络 3 做“PID 使能”。这种一个网络一个功能的写法是我比较推荐的项目组织方式。上一手做这套系统时我吃过“一个大程序里堆了 50 个网络但每个网络都是各种触点交叉”的亏。到后面调试的时候找一个信号要翻半天。后来我干脆规定自己每个新功能必须从新网络开始网络内只放下相关的线圈和条件所有中间变量放到 V 区或者 M 区。梯形图的好坏不在于网络多少而在于别人能不能半小时内看懂你的逻辑。常用指令方面空调控制主要用到常开触点LD、常闭触点LDN做未启动、故障判断。输出驱动线圈。置位/复位S、R做模式锁存比如故障锁定需要人工复位。比较指令I、I和设定值比较控制加湿启停。定时器TON做启动延时、停止延时防止风机和水阀同时动作产生水锤。整数转浮点I_DI、DI_R以及 PID 运算控制PID。不推荐新手一上来就用 S 和 R 置位复位指令因为置位容易忘掉复位条件有些故障状态会在错误的时间被切除。能用普通线圈和常开常闭组合写的逻辑就不折腾了除非确实需要锁存。3.2 温度采集与模拟量处理温度采集这块第一步要把 PT100 的电阻值变成 PLC 能读到的数字量。如果用的是 EM231 模块接了 PT100 信号模块内部会把电阻信号转换成 16 位数字值。但这时候数字量还只是模块的原始转换值不是真正的温度。需要做量程换算。以 4-20mA 湿度变送器为例PLC 读取 AIW4 的数值范围是 6400 到 32000这是 S7-200 的典型转换范围对应 0-20mA需要先把 AIW4 里的整数转换为实数然后把数字量范围映射到湿度 0 到 100% RH。梯形图写法大致是这样Network 1 转换AIW4为实数湿度值 LD SM0.0 MOVW AIW4, VW100 // 原始值存入 I_DI VW100, VD104 // 转成双整数 DI_R VD104, VD108 // 转成实数 MOVR 0.0, VD112 // 量程下限数字量 MOVR 32000.0, VD116 // 量程上限数字量 MOVR 0.0, VD120 // 湿度量程下限 MOVR 100.0, VD124 // 湿度量程上限 // 使用量程转换公式实际值 (原始值-下限数字量)/(上限数字-下限数字) * (物理量程上限-下限) 物理下限如果是两线制 4-20mA 变送器当回路电流为 4mA 时AIW4 约等于 6400所以量程下限要填 6400 而不是 0。很多新手直接拿 0-32000 去算最后湿度高压 20% 左右就是这么坑出来的。温度的处理类似但 PT100 的换算建议直接用 EM231 模块的 DIP 开关配置送给 PLC 的值为对应温度整数这样在程序里做量程换算时下限和上限直接用数字量标定即可。注意每次改了 DIP 开关必须断电重启否则模块不会生效。3.3 风机联锁与启动逻辑风机的启停逻辑是空调控制系统里最基本的逻辑但也最容易出错。我要求现场先确认一个底线风机不启动水阀不能开。为什么冬天供热的时候如果风机停了热水阀继续开着盘管里的水不流动容易造成局部过热或冻裂这是一个非常典型的冬季空调事故原因。所以梯形图里做联锁的思路是用风机的运行反馈 Q0.0 的常开触点串在冷水阀和热水阀的输出条件上。也就是阀门输出满足温度条件和风机运行反馈同时为真才允许输出。手动启动逻辑很简单按下启动按钮 I0.1输出 Q0.0。但要注意必须加自锁用 Q0.0 常开并联在 I0.1 常开上。停止按钮 I0.2 串成常闭。如果还要做远程自动启动那就并联一个 M0.1 自动允许中间变量。风机启动后需要在程序里加一个 5 秒延时等到风机反馈确认已经建立才把“允许水阀调节”信号置位。这个延时是给风机稳定用的不然启动瞬间压差还没建立反馈触点抖动会导致水阀开开停停。一个典型的联锁梯形图可以用这种逻辑表达Network 2 风机启动 LD I0.1 // 手动启动按钮 O M0.1 // 远程自动启动 O Q0.0 // 自锁 AN I0.2 // 停止按钮 AN M0.5 // 故障锁存 Q0.0 // 输出风机接触器上面用AN M0.5做故障锁存意思是只要故障锁存变量已经建立风机就禁止重启动。这种方式比单纯在程序里删除启动条件更可靠因为故障需要人工复位才能解除。3.4 PID 调节与阀位输出温度 PID 是整套系统里最核心的算法部分也是最容易调崩的部分。S7-200 的 PID 指令需要配合 PID 向导使用向导会把参数存在 V 区我们只需要在循环中断里调用 PID 指令。实际编程时把 PID 参数表放到 V 区建立好以下变量VD 设定值比如回风温度 24.0°VD 过程变量刚才算出来的实际回风温度VD 输出变量计算输出的阀位百分比 0~100%调节参数比例增益、积分时间、微分时间调用时在 SBR_0定时中断子程序里写一行类似这样LD SM0.0 PID VB200, 1 // VB200是PID参数表起始地址1 是回路号但 PID 指令不能直接用整数所以前面必须做好浮点转换把回风温度和设定值都变成实数同时确保 PID 表中的增益值、积分时间都已经是实的数值。如果不按浮点规则填运行结果大概率是输出乱跳。关于 PID 参数的经验我用在空调这类惯性大、纯滞后的对象上比例增益通常从 1 到 3 开始试积分时间设在 120 到 300 秒之间。系统有延迟调积分不能太小不然会震荡。现场调参建议先纯比例等温度稳定在设定值附近不大幅波动了再加积分消除静差。微分对温度系统基本用不上特别是测量信号本身有噪声时加了微分反而把阀门抖得嗡嗡响。阀位输出那一侧S7-200 的模拟量输出 AQW0 数值范围 0~32000 对应 0~10V。PID 算出来的输出是 0~1.0 的实数需要映射成 32000 范围内的整数再传给 AQW0。这一步经常有人漏掉。那个 “先乘 32000再取整再移动” 的顺序错了的话阀门只会开满或者全关根本停不到中间值。Network 6 PID输出映射到AQW0 LD SM0.0 MOVR VD400, VD420 // PID输出结果实数0~1 MULR VD420, 32000.0, VD424 // 缩放 ROUND VD424, VD428 // 浮点转双整数 MOVW VD428, VW432 MOVW VW432, AQW0 // 输出给冷水阀3.5 梯形图注释规范“带解释的梯形图”说白了就是项目交付的时候别人不能只看你程序要看你每个网络里的注释。S7-200 项目文件中每个网络都有自己的标题和注释栏强烈建议养成习惯开始写网络之前先把网络标题写好比如“送风机启动联锁”“回风温度PID计算”然后在网络注释里写清楚本网络的输入条件、输出结果、作用对象。如果交付的是可下载的.mwp工程文件可以在符号表里把所有 I/O 和中间变量都起英文或拼音符号名例如FAN_START、WATER_VALVE_OUT这样拿到程序的人打开符号表就能看懂。要是只交付一份 PDF 截图版梯形图那更应该在旁边用文字标清楚每个网络对应的现场设备和控制功能。我给一个自己用的注释模板每次写网络前先填空网络编号: N 网络标题: 手自动切换 网络功能: 选择系统运行模式自动模式下启动受远程信号控制手动模式下由柜面按钮控制 输入条件: I0.0手动启动按钮、M0.1远程允许 输出结果: M0.2自动模式允许信号 联锁关系: 故障M0.5为1时强制切回手动有了这个规范后期组态王里做变量的关联时也能快很多。因为组态王里定义的 I/O 变量名如果和 PLC 符号名对应上了整条链路就很清楚不会出现组态王里绑了一个 VW 地址但根本不知道控制的什么。4. 组态王画面设计与通信配置4.1 组态王项目创建与设备配置组态王 6.60 SP4 是目前比较常见的版本安装时建议关掉杀毒软件安装路径不要带中文或空格。开发过程中如果弹出 “找不到加密狗” 的提示检查开发版授权是否正确这个和后面的通信没直接关系但会让很多人误以为是通信故障。新建项目之后第一步要做的是配置设备而不是急着画画面。点击“设备驱动→PLC→西门子→S7-200 系列”选好后会弹出通信参数窗口。S7-200 默认通信方式一般是 PPI波特率 9600站号默认 2接口选 COM 口。如果你的 PLC 程序和组态王都在同一台电脑上且用 USB-PPI 电缆连接那么 COM 口就选 USB-PPI 线映射出来的虚拟串口。这里有个非常关键的点组态王里配置的 PLC 站号必须和 STEP 7-Micro/WIN 项目里的系统块设置的站号一致。S7-200 的默认站号是 2如果你在软件里没改过组态王也填 2 就行。假如 PLC 里站号被改成了 5组态王还是 2那通信一定连不上。通信测试建议在组态王设备配置完成后使用“设备测试”按钮读取 PLC 的某个 VW 值或者 Q 区状态。能读出来说明底层通信通了后面变量绑定才有意义。不要等画面做完了再来测通信那样一旦有问题你还要在画面、变量、设备三层里翻问题效率会低很多。4.2 数据词典定义与变量连接组态王的变量分内存变量和 I/O 变量。内存变量只在组态王内部计算用I/O 变量则要和 PLC 地址建立关联。空调控制系统中需要建立的 I/O 变量一般有KS_回风温度关联 PLC 的 VW200这个 VW 里存放的是我们在梯形图里转换好的温度值KS_回风湿度关联 PLC 的 VW210KS_冷水阀开度关联 PLC 的 VW220KS_风机状态关联 PLC 的 Q0.0KM_启动命令关联 PLC 的 M0.1变量类型要注意整数型对应 VW实型对应 VD开关型对应 M/Q。如果你在 PLC 里做好了温度转换并放到 VW 里组态王就直接读整数。不要在组态王里再去做换算除非你很有把握。很多人把原始 AIW 直接关联给组态王结果组态王画面上显示一个 10000 多的数字毫无意义。所以最好是 PLC 负责物理量换算组态王只负责展示换算后的温度值。关于读取周期组态王默认采集频率是 1000ms温度变化本来也不快1000ms 足够。但风机状态、故障信号这种开关量建议把采集频率设成 500ms 甚至更低因为操作人员按了启动按钮画面响应太慢会显得系统很“呆”。定义完变量后在画面上绑定变量时要注意“读写属性”。比如追求显示的就只读按钮按钮要能写入就选择可读可写。如果同时把同一个地址定义成两个变量组态王会提示冲突尽量避免。4.3 画面组态与动画连接画面设计部分我习惯先在 PPT 或纸上把系统流程图摆出来再照着图画。最上面画送风机、新风阀、混合段中间画表冷段、加热段、加湿段最下面画回风口、回风机。每个设备图元旁边放一个数值显示框实时显示温度、湿度、阀位开度、风机状态。一个标准空调系统的组态画面通常包括系统总貌流程图用管道线条把送风、回风、冷却水、热水管连接起来。动态填充效果冷却盘管上用颜色变化表示冷水阀开度阀门开大时盘管区域填充蓝色关小时填充无色或灰色。风机运行状态风机图标旋转或颜色变绿停止时变红。实时报警窗口显示温度越限、风机故障、通信断开等报警。历史趋势曲线显示回风温度、送风温度、湿度变化趋势方便分析控制效果。组态王里做动态填充其实不复杂。以阀门开度为例新建一个矩形图元作为动画对象绑定变量KS_冷水阀开度在“动画连接”里选择“水平填充”或“垂直填充”设置填充方向从左到右最大填充时画面全蓝最小填充时为背景色。就这样客户一看就知道当前水阀大概开在什么位置。风机旋转动画稍微麻烦一点因为是循环动画。组态王支持按变量变化切换画面我通常做 4 张风机叶片的图片轮流显示模拟旋转。如果嫌麻烦也可以用颜色变化代替旋转效果只要状态清楚一样满足需求。切忌追求花哨动画组态王里大量快速循环动画会拖慢画面刷新特别是老工控机卡顿是常事。4.4 报警与历史趋势报警功能一定要做否则调试期远程看站非常痛苦。组态王的报警设置很简单在变量定义时就能配置报警限值。比如回风温度上限 26°、下限 18°超限后触发黄色报警超过 30° 用红色紧急报警。报警文本尽量写得具体“回风温度过高” 比 “变量超限” 有价值得多。报警触发后组态王会在实时报警窗口显示同时可以设置画面弹窗提示。空调系统值班人员不一定时刻盯着画面所以最好加声音报警用系统蜂鸣声就可以。不要用 MP3现场环境噪声大了根本听不清。历史趋势是事后排查的好帮手。空调温度控制有没有震荡、机组有没有频繁启停看趋势一目了然。组态王提供了“历史趋势曲线”控件配置时选择需要记录的变量设置记录周期 10 秒或 30 秒数据库自动存储。我强烈建议在画面上同时放两组趋势近 1 小时趋势用于调参观察近 24 小时趋势给运维人员做日分析。刷新频率也不要太高10 秒记录一次对空调系统足够了频率太高数据文件膨胀快磁盘会很快写满。4.5 组态王与 PLC 通信的链路调试当画面全部做完变量全部绑定后最终一步就是通信联调。步骤如下检查物理线路USB-PPI 电缆插牢确认驱动已安装设备管理器里能看到虚拟 COM 口。确认 PLC 已经处于 RUN 状态并且编程口没有和 STEP 7-Micro/WIN 的在线窗口冲突。如果 Micro/WIN 一直开着在线监控组态王经常会抢不到通信口。在组态王的“设备测试”里填一个已经定义好的变量地址点击采集。能读到数值说明通信正常开始画面刷新。如果不能读到依次排查组态王设备站号、波特率、PLC 系统块设置、串口是否被占用、通信线是否支持 PPI。这里给一个排错经验如果在设备测试里报错先去 STEP 7-Micro/WIN 里检查 PLC 的系统块确认地址和波特率。很多时候不是组态王的问题而是 PLC 的通信口被锁死或者波特率已经被人改过。遇到这种情况把 CPU 拨到 STOP断开其他程序对通信口的占用把系统块重新下载一遍基本都能解决。5. 调试上线与常见问题排查5.1 通信连不上的典型场景调试 S7-200 与组态王通信最容易遇到的现象就是组态王画面显示“设备通信超时”或者变量值不变。重点排查方向有四个第一串口被占用。STEP 7-Micro/WIN 的“通信”窗口如果打开着或者编程电缆的驱动被某个后台程序占着组态王就连接不上。这种情况把 Micro/WIN 完全关掉甚至重启电脑再试。第二波特率不匹配。S7-200 的通信口速率在系统块里设置如果 PLC 里是 187.5kbps组态王里填 9600那必然是通信失败的。除非你用的是 PC-Access 或以太网模块否则常规 PPI 模式就老老实实 9600。第三站号错误。S7-200 的站号可以在 Micro/WIN 里查看 CPU 信息时看到组态王设备参数里也必须填同一个值。第四用的是普通 USB 转串口线而不是西门子原装 PPI 线。很多第三方 USB-PPI 电缆需要有特定的驱动芯片而且不是所有线都支持编程和监控同时做。最好选带“PPI/MPI 协议自适应”功能的线只支持编程下载的线不一定能和组态王通信。5.2 温度波动大与 PID 调节经验被问得最多的问题是“为什么我的温度始终在震荡一会 23 度一会 28 度”。这种问题十有八九是调节参数没匹配系统特性。空调温度系统是一个大滞后对象从水阀动作到回风温度变化中间要经历盘管换热、空气混合、回风管道传输整个纯滞后时间可能达一两分钟。PID 的输出如果比例太大阀门频繁大幅动作系统就持续震荡。第一时间不是改程序而是先看趋势曲线打开 1 小时的历史趋势观察温度变化的周期。如果曲线呈规则的波浪形周期比较长两三分钟一次多半是比例增益太大把增益从 3 降到 1.5 再观察。如果温度离设定值长期差着 1 度多就很可能是积分时间太长需要把 Ti 从 300 秒收到 150 秒试试。微分在空调系统里我一般直接设 0因为温度传感器信号噪声大微分项会放大噪声造成阀门频繁抖动。有时候阀门本身选大了也会造成温度非线性。比如一台 10kW 制冷量的空调盘管配了一个 DN25 的电动阀最小开度流量已经超过了所需负荷那无论 PI 怎么调都会震荡。这种情况只能改阀或者加一个最小开度限幅。我常在 PID 输出后面做一个线性限幅比如限制阀位输出在 10% 到 95% 之间低于 10% 直接输出 0避免小开度下流量不均匀的问题。5.3 梯形图下载与运行注意下载时的常见坑有两个。第一是程序里有重复线圈比如 Q0.0 在两个网络里分别被赋值了两次编译虽然能通过但运行时结果完全取决于网络扫描顺序很容易出现奇怪的现象。第二是模拟量地址重叠比如用了 VW200 又在另一个网络里用了 VD200S7-200 的变量区不区分类型用法不同就会互相覆盖数据。下载前一定先做“编译”把所有错误清零再下载。在线调试的时候用 Micro/WIN 的“状态图表”功能监控关键变量比自己在组态王里看数值方便得多。把 PID 输出、阀门反馈、温度变量都放到状态图表里一屏就能看到整个闭环的动态。梯形图运行时还要注意 CPU 的扫描周期。S7-200 的扫描周期一般是十几毫秒到几十毫秒PID 的运算不能放在主程序的每个扫描周期里执行需要放到定时中断中。用向导里默认的 PID 回路它会自动用 100ms 定时中断。不要手动把 PID 指令放在 MAIN 程序里否则执行频率太高阀门会疯狂抖动。5.4 常见问题速查表这里整理一个我在多个空调项目里打磨出来的速查表可以直接拿去现场对照排查现象可能原因解决办法组态王读不到任何变量串口占用 / 站号错误 / 波特率不匹配关闭 Micro/WIN 在线窗口核对系统块站号改用 9600温度显示为 32000量程换算没做在 PLC 里把原始 AIW 换算成实际物理量再传到 VW温度值跳变很大模拟量信号线干扰用屏蔽双绞线屏蔽层单端接地远离变频器输出电缆风机停了水阀还在开联锁逻辑没写用风机运行反馈串入水阀输出条件增加 5 秒延时温度震荡PID 参数不匹配降低比例增益增加积分时间微分设 0阀门开度一直 0 或 100PID 输出映射溢出检查浮点转整数、AQW 输出范围画面颜色不变化动画连接变量没绑定上查看组态王画面“动画连接”确认变量名一致报警一会有会没有报警死区设置太小设置 0.5° 报警死区通讯时好时坏通信线接触不良 / 干扰检查 DB9 接头压接用原装 PPI 线电缆远离变频器这张表看着不长但现场八成问题都集中在里面。大多数情况不是技术深奥而是接线不规范、地址不统一、参数没对好这三类问题。调试过程中还有一个经验就是要养成“做完一步测一步”的习惯。写完一段梯形图下载一段用状态表验证组态王画完一个设备马上绑定变量刷新一下不要等全部做完再一起测试。空调系统调试最怕就是一股脑做个大系统最后里面任何一层出错都无从下手。我个人在实际操作中的体会是做这套系统花的时间最多不是程序本身而是现场的传感器校准和参数整定。温度不准、阀门选大、风道漏风这些机械和传感器层面的问题都会在 PID 调节时以“控制效果差”的面目冒出来。所以做 PLC 空调控制别光盯着梯形图和组态王把现场仪表检修好、把风道憋压测一下、把电动阀全行程手动开一遍这些“笨功夫”缺一不可。等你把这些底层问题都清干净了梯形图里那几行 PID 指令和组态王画面里的动画连接自然就稳稳跑起来了。