YAOTU INSIGHTS

PLC控制中央空调实战:打造工业级智能家居系统

PLC控制中央空调实战:打造工业级智能家居系统
我前段时间干了一件挺折腾的事在自家客厅里挂了一个PLC把中央空调的室内机、室外机和家里的温湿度传感器全部接了进去。朋友来串门看着控制柜里那一排绿色指示灯问我这东西是不是工厂电柜里拆下来的。我说对就是工业上经常拿来控制流水线那种可编程逻辑控制器现在拿来管你家空调。他愣了半天然后说了一句让我印象很深的话原来智能家居还能这么玩。PLC这套东西在工厂里早就被验证过几十年了。抗干扰能力强、七乘二十四小时长时间运行不宕机、逻辑执行到微秒级这些特性搬回家用恰好能补上很多民用智能家居方案的短板。尤其是有中央空调或者多联机系统的家庭用PLC去做联动控制、定时策略、温度精度调节稳定性完全是另一个量级。这篇文章就从我的实际折腾经历出发把选型、接线、逻辑编程、调试排错这些环节从头到尾讲一遍给想试试这条路的读者一个可以直接抄作业的参考。1. 为什么突然想用PLC玩空调1.1 传统智能家居方案的短板先说说我之前的状态。家里原来也装过一套带云平台的智能家居系统空调用的是配套的智能模块手机上可以开关、调温度、设定时。表面看很方便但用久了问题就出来了。最明显的两个痛点一个是响应慢从手机App点到空调动作有时候等好几秒遇到路由器偶尔抽风指令干脆石沉大海另一个是联动逻辑死板想实现“湿度超过多少就切除湿模式”“室温接近设定值就降低风机转速”这种条件组合在场景编辑器里拼来拼去最后还是拼得七零八落。这里插一句实话民用智能家居产品不是不好它们强在生态和体验App界面好看、语音控制方便、设备互联种类多。但它们的核心定位是“消费级”追求的是大多数人能用、够用这跟“在给定条件下严格按逻辑执行”本来就是两个方向。如果家里只是控制一两台普通空调那是完全够用的。但如果你想让空调系统跟随传感器、时间表、用电策略自动调整还要保证几年不出幺蛾子消费级的链路就开始吃力了。1.2 PLC在家居场景里能解决什么PLC的好处说白了就是两个字确定。运行逻辑一旦写进去并且能扫描通过它的执行过程就是固定的、不依赖外部网络、不依赖手机、不依赖云平台。它的实时性不是“尽量快”而是“约定周期内必须完成”。拿我那个项目来说温度传感器数据大概每五十毫秒采集一次逻辑扫描周期设在二十毫秒全部在本地完成压根不存在云端中转这回事。另一个优势是抗干扰。家里的市电环境其实不干净变频空调、冰箱压缩机、开关电源都会往电网里注入乱七八糟的谐波干扰。工厂里的PLC常年在这种环境里工作设计上对各种浪涌、群脉冲、静电放电都有针对性防护民用的WiFi模块和嵌入式芯片基本没有同类设计。我的实际感受是之前那套智能模块偶尔失联、死机需要重启的问题换了PLC之后再也没出现过。还有一点常被忽略就是寿命。工业级设备的元器件选型标准、PCB设计、散热余量都是按长期连续运行来做的。空调这种设备本来就是从夏天用到冬天一年能开好几千个小时控制设备跟着常年通电普通民用板子顶不顶得住真不好说。PLC做的是干活用的设备用户默认它得上电好几年不关机这个取向天然适合长时间在线的家居控制场景。1.3 这个方案适合谁、不适合谁PLC方案的优缺点都明显先说适合谁。第一类是家里有中央空调、多联机、新风系统联动需求的用户这类系统用自带的控制器往往功能有限PLC刚好能补齐联动逻辑第二类是喜欢折腾、享受自己写控制逻辑的技术型玩家PLC的梯形图、结构化文本虽然反直觉但一旦上手就容易上头第三类是对稳定性有执念的人比如经常出差一个多月不在家不想哪天智能盒子死机导致家里空调开不了或者关不上。不适合的人也有几类。第一类就是图省事的PLC没法用手机App即点即用所有逻辑都要自己搭第二类是预算特别敏感的入门级别的套装加传感器模块大几百块钱起步比买智能插座贵不少第三类是对颜值有要求的虽然可以把PLC放进电器柜里但它的工业外观跟极简风格家居摆在一起确实违和。我当时给自己定的目标很简单先把一台客厅空调的本地自动控制跑通再逐步扩大到全屋。跑通之后才发现很多东西根本不是云平台能给的。2. 硬件选型别急着买先搞懂要哪几样2.1 核心PLC本体选型思路PLC型号特别多选起来其实没那么玄乎关键看需求。我的选型原则列一下至少有两个模拟量输入通道用来接温度传感器或者湿度传感器至少有两个继电器输出通道用来控制空调的开关和模式切换带RS485通信接口方便接Modbus协议的外设和空调网关支持自锁逻辑和定时器指令这是写控制逻辑的基本盘最好是DC24V供电的机型跟家里的开关电源、传感器可以直接共用电源市面上某日系品牌的微型PLC、某欧系品牌的入门级紧凑型PLC都能胜任。我选的是某款国产高性价比小型PLC因为它的模拟量通道多一点以后想扩展还能少买模块。选型的时候别贪大求全被几十个IO点数吸引实际用下来只用六个点位纯粹浪费钱。家用场景IO点数在八到十二个以内基本就够用了。2.2 空调侧怎么让PLC跟空调“说上话”这是整个方案里最容易走弯路的地方。空调这个设备几乎不会直接暴露控制接口给第三方所以PLC不能像控制继电器那样直接给空调一个干接点信号就能搞定一切。这里分三种情况说如果空调是支持Modbus通信的商用机型或者某些高端家用机型直接在PLC里写Modbus RTU主站程序读温度状态、写开关机、设运行模式这是最标准、最干净的方式。如果空调没有Modbus但原厂提供了红外遥控可以加一个红外发射模块接到PLC的数字量输出上把遥控码发给空调。这种方式实现起来灵活但需要做码库匹配而且对摆放位置有要求。如果空调机型比较新、支持自家的局域网通信协议那可以加一个协议转换网关把空调的私有协议转换成Modbus或者干接点再让PLC来对接。很多第三方网关专门干这个事选那种口碑比较好、兼容性做得比较稳的即可。我自己的情况是选了第三种方式客厅空调正好有一台现成的协议转换网关接上RS485就能把空调的开关机、温度设定、模式切换这些指令变成标准的Modbus寄存器PLC这边编程就舒服多了。这一步是整个项目的分水岭空调节能落地多少套取决于通信这一层打通没打通。2.3 温度采集与环境传感控制空调的核心是温度的闭环控制传感器选型很重要。家用场景推荐PT100热电阻或者数字温度传感器精度在正负零点五摄氏度以内就够用了。这里有个坑很多人图方便直接用空调自带的回风温度传感器来做控制但回风位置的温度跟人体活动区域的温度差异很大容易出现“房间冷得不行空调还没停”的情况。我最后用了两个温度传感器一个放在客厅沙发附近的茶几上一个挂在卧室床头侧面墙面都避开空调出风口直吹的位置。接线的时候传感器线缆走弱电管和电源线拉开距离。多路温度信号的接入方式是这样的传感器接到PLC的模拟量输入模块PLC的模拟量输入通道会自动把电阻或电流信号转换成数字量程序里再通过量程换算算出实际温度值。如果选的是四到二毫安电流型传感器还得考虑PLC侧加取样电阻的细节不过现在很多模拟量模块直接支持多种输入模式配置里选对类型就行。安装温湿度传感器时还有一个容易被忽略的问题尽量别装在朝西的墙面上下午阳光晒墙会带来额外的热辐射测出来的温度会明显偏高。我一开始没在意后来数据曲线老觉得怪排查了半天才发现是西晒墙面的锅。2.4 执行机构与安全继电器PLC的数字量输出通常有两种形式一种是晶体管输出响应快但负载能力弱适合驱动信号类负载另一种是继电器输出驱动能力强但寿命相对有限适合直接控制阀、灯、接触器这些东西。控制空调的启停信号用继电器输出是足够了。空调侧的强电控制部分我的建议是外加一个中间继电器做隔离。PLC自己的继电器触点容量一般没那么大直接控制大功率设备可能发热、拉弧。我把PLC的输出接到中间继电器的线圈中间继电器的常开触点去控制空调供电回路相当于隔了两层控制侧和强电侧物理隔离安全性上更靠谱。加一个带熔断器的开关电源给PLC供电也是必要操作别省这个钱一次短路事故就够你折腾半天。执行这条链路的时候我把每一个继电器和端子都贴了标签标注设备名和线号。这套习惯在工厂是标准操作但在家里改造时很容易被忽略等到调试时查线就发现有多痛。后期维护时一张清晰的接线表比什么记忆都管用。3. 接线与逻辑把工业控制思维搬进家里3.1 从接线图说起动手接线之前我先把接线图画在了纸上画完了再动手。这个习惯是从工程现场带回来的不是形式主义是真能避免接线错乱。整个系统的拓扑大概是这样的电源侧二百二十伏市电先经过带漏保的断路器出来分成两路一路给空调供电一路给开关电源。开关电源输出二十四伏直流给PLC、继电器、传感器供电。控制侧PLC的电源端接二十四伏正负极两个模拟量输入通道分别接客厅和卧室的温度传感器RS485的A、B端子接到空调协议转换网关的对应端子上。PLC的继电器输出点Y0、Y1、Y2分别接中间继电器的线圈中间继电器的触点再去控制空调供电接触器或者直接控制协议网关的启动信号。接线的时候有几件事必须注意。RS485是差分信号A和B千万别接反接反的后果是通信完全不通但设备不会烧。传感器线缆注意区分正负极和屏蔽层屏蔽层单端接地别两边都接否则反而会形成地环路引入干扰。所有强电端子必须做绝缘防护裸露的继电器端子如果小孩碰到后果不敢想。我特意把控制柜里所有端子的防护罩都装好了这个细节别省。3.2 温度PID控制的核心逻辑这部分是整个项目的灵魂。空调控制如果只做简单的“温度高了就开机低了就关机”那会有一个很糟糕的体验空调频繁启停压缩机寿命受影响室内温度像锯齿一样来回震荡体感极差。工业上处理这类问题的标准办法是PID控制比例、积分、微分三个环节配合让控制量平滑地跟随设定值。但PLC控制空调说到底输出的是开关量不能像模拟量那样连续调节功率没法直接套标准PID。这不是说PID用不上而是要转换一下思路用一个“温度偏差趋势区间判定”的策略来模拟变工况调节。我是这样做的。在PLC程序里把设定温度设为一个目标值比如二十六摄氏度。然后设定两个阈值带宽加热档和冷却档。当温度与目标值的偏差超过正负零点八摄氏度时执行强冷或者强热模式偏差回到正负零点三摄氏度以内时切换为微风模式或者关掉压缩机只保留循环风在这个中间地带空调输出基本不做大动作让温度自然回落。配合一个积分型定时器如果温度连续十分钟仍然停留在偏差带之外再加大一个档位。这样做的效果是室内温度曲线基本稳定在设定值正负零点五摄氏度以内空调压缩机也不会频繁启停。程序里还加了一组变速扫描逻辑平时PLC按正常周期运行当检测到温度快速上升时把扫描周期缩短到十毫秒让输出响应更快。这套思路来源于工业现场中“优先处理紧急任务”的分级思想在智能家居场景里同样适用。3.3 定时策略与手动自动切换家庭场景跟工厂最大的不一样是人的存在感太强。我星期一到星期五的作息和周末完全不同工作日白天家里没人不需要保持恒温周末宅家一整天对舒适度又是另一种要求。所以逻辑里必须有时段策略而且需要有覆盖例外情况的手段。我的方案是给PLC里加了一个内置时钟模块在程序里写好一周七天、每天多个时间段的温度设定表。比如工作日八点到十八点设定温度二十八摄氏度空调处于待机节能模式十八点到二十二点设定温度二十六摄氏度全速运行晚上睡觉之后设定温度二十七摄氏度并切换到静音低速风。周末则统一全天按居家模式执行。为了兼顾突发情况我在门口玄关位置并了一个三位转换开关。打到自动档位时PLC按时间表执行打到手动档位时直接通过PLC编程端或者本地面板强制开关空调打到关闭档位时PLC输出全部禁止空调彻底处于物理断电状态。这套三档切换我强烈建议每个入坑的人都做因为它能保证出问题时有一只手可以随时接管。3.4 通信配置与点位映射PLC和空调网关之间的通信我走的是标准Modbus RTU协议。配置串口参数时要注意PLC侧和网关侧的波特率、数据位、停止位、校验位必须完全一致。我当时用的配置是九千六百波特率、八个数据位、一个停止位、无校验。这个参数组合兼容性最好很多设备默认就是这一套。点位映射这一步需要细看网关和空调说明书。拿我的那个网关举例里面维护了一张寄存器表大致是这样的地址功能对照逻辑寄存器地址功能说明读写方向0x0001空调开关机状态读写0x0002设定温度浮点数转换后读写0x0003运行模式制冷、制热、通风读写0x0004当前室内温度只读0x0005故障代码只读我在PLC程序里建了一组数据寄存器专门用来缓存这些点位。每次扫描周期开始PLC先向网关发起读请求拉回当前温度、状态、故障码然后跑一遍控制逻辑得出新的输出状态再向网关写开关机、设定温度、模式。读写只在需要发生变化时才发起避免一直占着通信链路导致网关那边来不及响应。这里有个强制经验别给空调频繁写设定温度。有些空调的控制器对连续快速写入特别反感轻则拒绝响应重则直接死机。我在程序里做了个防抖逻辑设定温度只有在目标值和当前值相差大于零点五摄氏度时才写入同一寄存器地址的写入间隔至少三十秒。这个约束看起来不起眼但实际运行中省了九成的通信故障。4. 调试实录踩过的坑和排查技巧4.1 干扰问题变频空调的“魔咒”第一次通电调试我本来以为很快就能跑通结果一开空调压缩机PLC和网关之间的通信就开始偶发超时。查了半天最终定位到干扰上。变频空调的逆变电路在运行时会产生很强的电磁干扰RS485通信线如果离空调的强电线路太近干扰就会耦合进去。解决办法有几个我从重到轻陆续做了第一把RS485通信线换成带屏蔽层的双绞线第二让通信线缆和中途的强电电缆分开布线至少保持二十厘米以上间距第三在PLC通信端口的A、B线上并联了一对终端匹配电阻一百二十欧姆。处理完之后通信超时次数从一天几十次降到了几乎为零。这个坑在工厂里也常见只不过家里空间小强弱电经常穿同一个管盒问题更容易暴露。顺手分享一个判断干扰源的经验把空调关掉只开传感器采集和通信如果通信稳定没有问题说明是空调运行时才产生的干扰如果关掉空调仍然有问题那就要怀疑线路连接、波特率或者网关本身有问题。这种“变量隔离”的方法是我在调试现场最常用的手段。4.2 通信超时的处理通信偶尔超时其实不可避免关键是要让PLC的处理策略足够健壮。我一开始在程序里直接写了“读超时则继续等待下次扫描”结果后来发现一旦超时次数多了状态数据长时间不更新控制逻辑就会拿旧数据做决策温度控制就乱套了。后来我加了三道保险。第一层是超时计数连续读失败三次就判定通信故障第二层是状态切换发生通信故障后立刻把系统切换到安全模式空调输出恢复到手动旁路的默认状态保证空调不会因此疯狂开关第三层是故障报警在本地用指示灯加蜂鸣器提示我处理。这套故障处理机制参考了工业安全PLC里的“故障安全”思路虽然看起来小题大做但确保出了问题不会影响设备的底线。正常调试期间我还把通信数据打印到工程软件里的监控表一条一条对比寄存器读回来的数值。比如网关显示室温是二十六点三摄氏度PLC里读回来的整数经过换算后应该也对得上二十六点三摄氏度。对不上的时候优先检查数据的大小端顺序、浮点数换算系数、通道量程配置。这一类的点位核对问题占了通信调试期的六成时间。4.3 温度失控的排查有几天我观察温度曲线发现客厅温度比设定值高了接近三摄氏度但空调压缩机始终不启动。翻看程序逻辑设定的偏差阈值是零点八摄氏度高了三度按理说应该早切到强冷模式了。再仔细检查发现空调网关反馈的温度数据类型被初始化成了错误码导致读上来的数值被程序当成一个负数来处理实际计算出来的偏差居然是在控制区间以内。这个问题的根子在于“数据有效性判断”没有做。工业程序里有个常识任何外部通信读回来的数据都要先做合法性检查不急着拿来算控制量。我后来在温度数据读入后加了一个范围判断只有在五摄氏度到四十摄氏度之间的数值才被采信超出范围的直接丢弃并保持上一次有效值。加了这个逻辑之后这种温度失控的奇葩情况再也没出现过。顺便提一下调试期间用趋势图监控温度变化是个好习惯。我把客厅温度、卧室温度、空调运行状态都记录成了曲线设定值、实际值、输出值三条线放在一起看逻辑哪里不对一目了然。别对着几百行梯形图硬猜趋势图能省很多时间。4.4 常见问题速查表把这段时间遇到的小问题整理成一张速查表给后面想玩的人做个参考现象可能原因处理办法PLC和网关通信完全不通RS485线接反、波特率不匹配检查A/B线调换核对通信参数通信时好时坏线缆走线靠近强电干扰大换屏蔽双绞线强弱电分线槽温度读取值不变传感器接线松动、模块通道配置错误检查接线和模拟量输入类型重新上电空调频繁启停控制逻辑死区太窄扩大偏差阈值启用风机循环模式网关写了没反应写入间隔太短控制器拒绝响应加写入防抖间隔至少三十秒PLC输出有但中间继电器不动线圈电压不匹配核对中间继电器额定电压设定温度半夜偏移时钟模块未同步时间基准漂移定期同步PLC时钟或安装带自动校时的外置时钟模块家里断电后PLC不恢复没有配置掉电保持寄存器将关键数据写入掉电保持区上电后自动恢复5. 长期运行经验与扩展方向5.1 稳定运行的小细节这个系统已经在我家连续运行了快半年稳定性确实没话说。总结几个长期运行才看得出来的小细节。第一定期看PLC的实时时钟。有一段时间我发现时间表的执行总是慢了几分钟检查之后发现PLC内部时钟有漂移。工业场景经常用校时服务器或者外部授时模块家里条件没这么讲究但也要保证每隔一两周手动校一次。后来我在逻辑里加了每个星期天自动把时钟校准到预设基准值的功能虽然精确度一般但至少不会偏出一个小时。第二PLC的备用电池要留意。多数PLC内部有时钟和RAM的掉电保持电池电池耗尽后掉电保持失效时间表会重置到初始状态。我给自己定了每半年换一次电池的提醒这个成本很低但一旦忘了后果是整个控制系统打回原形。第三继电器触点的磨损。PLC里的继电器输出虽然寿命不短但频繁动作会导致触点电阻增大甚至粘连。我在空调控制逻辑里故意加了一个最小动作间隔限制同一输出通道的切换频率就算需要频繁调温也尽量通过风机模式来缓冲而不是反复通断压缩机。第四现场线缆的紧固。家里偶尔有人走动、小孩碰柜子难免会造成端子松动。我每隔三个月会用绝缘螺丝刀把PLC接线端子的螺丝全部紧一遍尤其是传感器和RS485那几排端子一个微小的接触不良就可能带来通信闪烁或温度跳变。5.2 把PLC接入家庭网络/可视化PLC本身不依赖网络但如果只有现场指示灯和蜂鸣器人不在家时就看不到状态。所以我加了一个串口转以太网的模块把PLC的数据映射成局域网里的Modbus TCP服务再用一个简单的前端页面把关键数据显示出来。这个页面能做到的东西包括实时显示客厅和卧室温度、空调当前模式、设定温度、运行功率估算值以及故障状态。其实我可以直接在页面上改写设定温度但我刻意没有加这个功能。原因很简单PLC的逻辑才是控制决策的核心页面只是辅助监控什么都不如本地按钮更可靠。偶尔远程看一下状态、确认空调有没有在运行这对出差来说已经很够用了。这块我做得很朴素就是一个局域网里的静态页面用JS定时轮询Modbus数据显示在几个仪表盘样式的卡片上。想往外面访问的话可以考虑端到端加密方案但涉及公网暴露我不太推荐风险大于收益家用完全没必要为了一个空调监控把自己的局域网暴露出来。5.3 进一步扩展场景系统跑通之后扩展起来其实很顺手。我目前已经规划了一个第二期工程把新风系统的开关控制、加湿器联动、窗帘的定时开关全部纳入PLC管理。逻辑也不复杂比如冬季室内湿度低于百分之四十时开启加湿器同时把空调的制热风速调小避免空气加速干燥。这样跨设备的联动如果靠消费级场景引擎去拼做起来很别扭但在PLC里就是几行逻辑的事。PLC的扩展能力还为以后接入光伏发电留了口子。光伏逆变器通常也有Modbus接口PLC可以读取发电量、实时功率再结合家里的用电策略决定空调的启动条件。比如夏天下午两点光伏出力大空调可以提前开启给房间预冷相当于把用电曲线往光伏输出上靠。这个思路在工业上叫“需求响应”搬到家里一样适用。如果你入门之后玩得顺手建议买一个二手的工业触摸屏HMI接在PLC上做个简单的人机界面直接在屏上点按钮换模式、看曲线。HMI在工业上非常成熟调试时拿来放监控变量也特别方便。我用了一个老款触摸屏把温度曲线和控制参数放上去之后整个控制柜终于有了一点“工业级智能家居”的味道。我个人在这套项目中最大的体会是把工业控制设备搬到家里不只是一次技术的跨界更重要的是一种思考方式的转变。PLC不会给你一个漂亮App不会主动学习你的习惯但它能严格按你写下的逻辑稳定执行不偷懒、不闹情绪这反而让人安心。以后不管智能家居方案怎么迭代这套基础的自动控制能力都依然可靠值得投入时间。最后再分享一个小技巧做这种跨界改造一定要把每一步的文档写好接线表、点位映射表、逻辑说明一个都别落下。过了几个月再回头看很多当时的灵感和决策细节都会模糊这时候文档就是唯一靠谱的记忆。好记性不如烂笔头这句话在工业自动化领域从来没有过时过。