程序分块扫描,降低循环负载
把程序划分为高速实时任务、常规逻辑、后台计算三段:
高速任务(伺服定位、脉冲采集、急停安全)放主 OB,扫描周期≤1~5ms;
阀门、指示灯、报警等普通逻辑放常规 OB;
报表统计、曲线计算、参数读写、上位交互放入周期触发 OB(如 100ms/500ms),不占用主循环。
禁止在主循环中做浮点数运算、大量字符串处理、频繁读写存储卡。
避免重复运算,复用中间变量
同一公式、传感器滤波、量程转换只计算一次,存入 DB 变量,多处调用直接读取,减少 CPU 运算负荷。中断按需启用,杜绝无效中断
高速计数、脉冲捕捉用硬件中断;模拟量超限、故障信号用边沿中断;无高频信号时关闭多余中断,减少 CPU 抢占开销。选型匹配,不性能过剩也不瓶颈
小型单机设备:经济型 PLC(晶体管 / 继电器输出按需选);
多轴、多模拟量、大量通讯站点:选用高性能 CPU,预留 30% 以上 CPU 负载余量;
运行监控 CPU 使用率,长期>80% 说明资源不足,扩容或优化程序。
IO 点位集约分配,减少模块数量
同工位输入 / 输出集中在同一模块,缩短布线;
共用公共端:NPN/PNP 统一规格,避免同一控制柜混用两种类型增加模块;
预留 10%~15% 备用点,不单独新增完整模块,优先利用现有空余端子。
区分输出负载类型,合理选型
高频动作(电磁阀、步进脉冲):晶体管输出模块;
低频接触器、指示灯:继电器输出,降低晶体管损耗;
大功率负载外部加中间继电器,不占用 PLC 大功率输出点。
复用 IO 逻辑,减少点位浪费
多设备模式切换:用选择开关分时复用输入点;
故障报警汇总:多路故障信号并联输入,程序内区分地址,节省输入端子。
IO 诊断充分利用
开启断线、短路诊断,利用硬件自带诊断资源,不用额外增加检测回路。量程统一,减少转换程序冗余
同类传感器统一 4~20mA 或 0~10V,批量标准化转换公式,复用 FB 功能块。多点滤波复用,节省运算资源
编写通用模拟量滤波 FB,所有 AI 通道调用同一功能块,不用单独编写滤波逻辑。分时采集降低模块负荷
非关键温度、液位信号采用周期轮询读取,不实时刷新,减少 AD 转换占用总线资源。空余通道处理
未使用 AI 通道短接或屏蔽,关闭通道使能,避免模块漂移、占用诊断资源。通讯负载均衡,防止总线拥堵
上位机、触摸屏、变频器、仪表分网段 / 分轮询周期:仪表 500ms 轮询,伺服实时通讯;
减少单条报文数据长度,分包传输;
闲置从站离线屏蔽,不再循环访问。
硬件通讯口充分利用
自带 RS485 接变频器、仪表;以太网接触摸屏、上位;
不额外加装通讯扩展板,优先使用 CPU 集成接口,节约扩展槽资源。
数据分区交互
过程数据、设定参数、报警数据分块传输,只刷新变化数据,不用全量读写。电源容量精准匹配
计算 CPU、IO 模块、传感器总功耗,预留 20% 余量,不盲目选用大功率电源;分回路供电,故障互不影响。存储卡 / 内存(DB 块)合理分配
工艺参数、配方存入保持 DB,避免断电丢失;临时计算用非保持区;
日志、曲线循环覆盖存储,限制最大文件大小,防止存储卡占满。
扩展槽规划
按 “数字量→模拟量→通讯” 顺序排布,预留 1~2 个扩展槽用于后期改造,不一次性占满所有槽位。封装通用功能块,杜绝重复代码
电机启停、阀门控制、模拟量转换、报警、配方、通讯读写全部封装 FB:FB 带背景 DB,多台设备独立调用,不重复占用程序存储;
FC 用于无状态简单计算(量程换算、逻辑判断),轻量化无背景数据。
结构化分层编程,减少扫描冗余
分层架构:底层:IO 映射、硬件诊断;
中层:设备通用 FB;
顶层:设备工位逻辑、联动逻辑;
交互层:HMI、报警、数据上传。
不用线性长程序,避免每周期全段扫描无效逻辑。条件调用程序块
设备停机时,关闭该工位 FB 调用;只有设备运行时才执行控制逻辑,大幅降低 CPU 负载。分区管理,避免地址冲突与浪费
I/Q 区:严格对应硬件端子,统一注释,不随意占用空余 IO 地址做内部逻辑;
M 存储区:仅用于少量临时标志、启停信号,大容量数据全部放入 DB 块;
DB 块分类:设备工艺 DB、参数配方 DB、报警 DB、通讯交互 DB、临时计算 DB。
变量类型匹配,节省内存
开关量用 Bool,计数用 Int,温度压力用 Real,不全部统一为 DWord 浪费空间;
数组批量管理同类型数据(多通道温度、多电机参数),简化地址分配。
保持区按需分配
仅配方、设备运行计数、故障记录设为保持;临时中间变量不保持,节省保持存储资源。简化逻辑,减少冗余判断
多条件并联 / 串联合并,消除重复触点;边沿指令 EU/ED 仅在信号变化时执行,替代长期导通判断。数学运算优化
乘除优先使用整数运算,控制浮点数使用范围;复杂曲线、PID 运算限定周期执行。PID、定位等工艺指令复用
使用标准工艺库指令,不自行编写复杂调节算法;多轴共用同一 PID FB,通过背景 DB 区分。事件触发报警,非实时循环判断
超限、故障使用边沿触发报警上传,不每个扫描周期上传全部报警信息。数据记录按需采样
正常工况长周期采样,异常工况自动加密采样,平衡存储与通讯压力。报警缓冲区循环覆盖
设置最大报警条数,先进先出循环刷新,避免存储无限占用。统计全部 IO 点数、模拟量通道、通讯从站数量、轴数量,预留 15% 扩容余量;
根据设备循环周期、运算量选择 CPU 等级,避免小 CPU 带复杂工艺;
统一传感器、执行器规格,减少模块种类,简化硬件资源。
IO 地址提前规划,硬件端子与软件变量一一对应,无空置浪费;
通讯点位、模拟量通道数量匹配软件 FB 接口,不预留大量未使用变量;
硬件中断、高速计数通道对应软件中断 OB,一一匹配,不闲置硬件功能。
在线监控资源负载
定期查看:CPU 扫描周期、内存占用、通讯负载、模块诊断;长期负载过高:拆分程序、增加周期任务、升级 CPU;清理闲置资源
删除未调用 FB/FC、未使用 DB 变量、无效通讯轮询、屏蔽闲置中断;备用资源预留规范
硬件预留 IO、扩展槽;软件预留备用 DB、备用通讯通道,后期改造无需新增硬件,最大化现有资源利用率。匹配原则:硬件选型与设备控制需求匹配,不低配瓶颈、不高配闲置;
复用原则:软件功能块、IO 点位、通讯通道最大化复用,消除重复开发;
分时分区原则:实时任务、后台计算、通讯交互分时段、分区域执行,均衡 CPU、总线、存储负载。