一、PLC面试编程序核心要点
企业最关注的5大能力维度解析
1.1 编程规范性:工业控制的“第一印象”
在工业控制系统中,PLC编程序的规范性直接关系到设备运行的稳定性与后期维护效率。招聘方通常通过以下维度考察规范性:
- 变量命名是否符合行业惯例(如:
Motor_Start而非M1) - 注释是否完整(功能说明、关键逻辑说明、作者/日期)
- 程序结构是否模块化(子程序调用、功能块封装)
- 线圈/触点是否避免重复使用(防止“双线圈”错误)
⚠️ 真实案例:某产线因工程师在不同程序块中重复使用
Q0.0输出线圈,导致设备启动时电机正反转冲突,造成机械臂卡死。规范命名(如CW_Rotate、CCW_Rotate)可避免此类风险。
1.2 逻辑严密性:避免“纸上谈兵”陷阱
面试中常见错误:仅实现基本功能,却忽略边界条件与异常处理。例如:
| 场景 | 基础实现 | 生产级实现 |
|---|---|---|
| 急停按钮逻辑 | Q0.0 := NOT I0.0 |
Q0.0 := NOT (I0.0 OR I0.1 OR I0.2)(三重冗余急停输入) |
| 电机启停 | 简单自锁电路 | 加延时互锁、过载保护、故障复位确认 |
建议在面试中主动说明:
- 故障安全机制(如:断电保持状态、故障自诊断)
- 人机交互逻辑(HMI报警联动、操作权限分级)
- 扩展性设计(预留I/O点、模块化结构)
1.3 效率优化:从“能用”到“好用”
以S7-1200为例,优化技巧包括:
- 避免嵌套过深的
IF-ELSE结构,改用SELECT或查表法 - 用
TON替代循环计时(节省扫描周期) - 将频繁调用的逻辑封装为
FC或SFC - 使用
Bitwise Operations(位运算)替代字符串处理
// 优化前:10个条件判断
IF I0.0 THEN Q0.0 := TRUE;
ELSIF I0.1 THEN Q0.1 := TRUE;
...
END_IF;
// 优化后:用字节位映射
// 假设I0.0~I0.7映射到输入字节IB0
QW0 := SHL(BIN_TO_BCD(IB0), 8);
💡 面试加分项:提及“扫描周期测试”——用
TCK_CYC指令监控程序执行时间,确保低于200ms(安全关键系统需低于50ms)。
西门子PLC面试高频考点(S7-1200/1500)
- 硬件组态:如何配置ET200SP分布式I/O?需设置模块地址、诊断中断OB
- 数据块使用:创建背景数据块(Instance DB)时,需注意“共享性”与“实例性”区别
- 通信协议:
- S7协议:用于PLC间通信(S7-1200作为服务器时,需配置
PUT/GET指令) - Modbus TCP:主站需设置
MB_CLIENT参数(如MODE=1) - Profinet:IO设备地址分配错误会导致“绿色LED常亮”故障
- S7协议:用于PLC间通信(S7-1200作为服务器时,需配置
📌 真实考题:某产线HMI显示“通信超时”,排查发现Profinet交换机端口未启用
LLDP协议,导致PLC无法识别设备拓扑。解决方案:在TIA Portal中启用“拓扑发现”功能。
三菱PLC面试高频考点(FX5U/Q系列)
- 指令差异:FX5U支持
MR(移动右)指令,用于循环移位 - 软元件分配:特殊继电器
M8000(运行监控)、M8002(初始脉冲) - 定位控制:使用
DRVI指令时需设置:- 脉冲输出端口(Y0/Y1)
- 脉冲数(如10000)
- 速度(如1000Hz)
- 加减速时间(如100ms)
// 三菱定位控制示例(FX5U)
DRVI D100 Y0 Y1; // D100=脉冲数,Y0=脉冲输出,Y1=方向输出
MOV K1000 D101; // 设置速度1000Hz
MOV K100 D102; // 加减速时间100ms
SET M0; // 启动定位
欧姆龙PLC面试高频考点(CP1E/N20系列)
- 指令格式:采用“助记符+操作数”结构(如
LD 0.00、AND 100.00) - 定时器/计数器:
TMR 00 100(定时器00,设定值100×0.1s) - 高速计数:使用
HSC指令时需配置:- 计数模式(增计数/增减计数)
- 预设值(如9999)
- 复位源(如
CIO 200.00)
⚠️ 易错点:欧姆龙PLC默认使用
BCD编码,直接写入K100会被识别为“100”而非“64”(十进制)。需用D100(二进制)或加'前缀(如'100)。
二、PLC编程序实战:从入门到精通
真实项目逻辑拆解与调试技巧
2.1 传送带控制系统(含故障自恢复)
需求:三段传送带联动控制,要求:
- 启动顺序:第三段 → 第二段 → 第一段(避免堆料)
- 停止顺序:第一段 → 第二段 → 第三段(清空物料)
- 故障时:立即停机,HMI显示故障位置,故障排除后需手动复位
// 西门子S7-1200 逻辑(TIA Portal V17)
// 启动逻辑
IF I0.0 AND NOT M0.0 THEN // 启动按钮 + 未启动状态
M0.0 := TRUE; // 标记启动中
T3 := TON(PT:=T#2S); // 延时2秒启动第三段
IF T3.Q THEN
Q0.2 := TRUE; // 启动第三段电机
T4 := TON(PT:=T#2S);
IF T4.Q THEN
Q0.1 := TRUE; // 启动第二段
T5 := TON(PT:=T#2S);
IF T5.Q THEN
Q0.0 := TRUE; // 启动第一段
END_IF;
END_IF;
END_IF;
END_IF;
// 故障检测
IF Q0.0 AND I0.3 THEN // 第一段电机过载
Q0.0 := FALSE; // 立即停机
Q0.1 := FALSE;
Q0.2 := FALSE;
M0.1 := TRUE; // 标记故障
MW20 := 101; // 故障代码:第一段过载
END_IF;
// 故障复位
IF I0.1 AND M0.1 THEN // 复位按钮 + 故障状态
M0.1 := FALSE;
MW20 := 0; // 清除故障代码
M0.0 := FALSE; // 允许重新启动
🔍 调试技巧:用
MONITOR表实时观察MW20值,结合SCADA系统生成故障日志(时间+代码+操作员)。
2.2 温控系统(PID闭环控制)
案例:烘箱温度控制(设定200℃,偏差±2℃)
- 传感器:PT100热电阻(0~500℃对应0~10V)
- 执行器:固态继电器(SSR)控制加热丝
- 控制器:
S7-1200内置PID指令
| 参数 | 设定值 | 说明 |
|---|---|---|
PV(过程值) |
AIW0 |
温度传感器输入 |
SP_INT(设定值) |
KW100 |
目标温度200℃(需转换为0~27648对应0~10V) |
MAN(手动模式) |
I0.2 |
HMI切换自动/手动 |
OUT(输出) |
AQW0 |
0~10V控制SSR |
⚙️ PID整定经验:先设
P=10, I=0.5s, D=0,观察响应;若超调大则减小P值,若响应慢则增大I值。推荐使用PID_TUNE功能块自动整定。
2.3 多轴同步控制(机械臂协同)
需求:两台FX5U通过CC-Link IE实现同步定位
- 主站:FX5U-60MT(控制X轴)
- 从站:FX5U-40MT(控制Y轴)
- 同步方式:时间戳同步(每10ms广播一次坐标)
// 主站程序(FX5U)
// 发送坐标数据
MOV D100 D200; // X轴当前位置
MOV D101 D201; // Y轴目标位置(同步用)
MOV D200 M8000; // 通过CC-Link发送
// 从站接收后执行定位
// 从站程序
// 接收主站数据
RECV K1 D300; // D300=X轴位置, D301=Y轴目标
// 执行两轴联动
DRVI D301 Y0 Y1; // Y轴定位
// X轴跟随
IF ABS(D300 - D302) > 5 THEN // 位置偏差>5
DRVI D300 Y2 Y3; // X轴定位
END_IF
📌 同步精度保障:使用
SYNC指令确保两轴启动时刻一致(误差<1ms),避免机械臂抖动。
三、主流PLC品牌对比与选型指南
2025年工程师最常搜索的6大品牌横向分析
3.1 市场占有率与适用场景
| 品牌 | 代表机型 | 适用场景 | 面试高频程度 |
|---|---|---|---|
| 西门子 | S7-1200 / S7-1500 | 中大型产线、过程控制 | ★★★★★ |
| 三菱 | FX5U / Q系列 | 中小型设备、包装机械 | ★★★★☆ |
| 欧姆龙 | CP1E / CJ2M | 食品医药、洁净环境 | ★★★☆☆ |
| 台达 | DVP系列 | 低成本设备、教育实训 | ★★★☆☆ |
| 汇川 | IS620P | 国产替代、电梯控制 | ★★★☆☆ |
| 罗克韦尔 | ControlLogix | 北美市场、复杂系统 | ★★☆☆☆ |
3.2 编程软件生态对比
- 西门子TIA Portal:
- 优点:一体化开发、诊断功能强大
- 缺点:占用资源高(建议16GB内存)
- 三菱GX Works3:
- 优点:支持多语言(梯形图/FBD/ST/SFC)
- 缺点:旧机型兼容性差(FX3U需用GX Works2)
- 欧姆龙Sysmac Studio:
- 优点:HMI/PLC/驱动统一配置
- 缺点:学习曲线陡峭
💡 软技能建议:掌握至少2种品牌PLC,面试时可强调“快速迁移能力”——例如从FX5U转S7-1200,只需1周熟悉指令差异。
3.3 I/O扩展能力对比
| 品牌/机型 | 最大I/O点数 | 扩展模块类型 | 通信接口 |
|---|---|---|---|
| S7-1212C | 14DI/10DO | 信号板(SB)+模块(BM) | 2×PROFINET, 1×RS485 |
| FX5U-60MT | 60I/O | 单元扩展(最多16台) | 1×以太网, 2×RS485 |
| CP1E-N20DR-A | 20I/O | 扩展单元(最多10台) | 1×RS232C, 1×RS485 |
四、PLC故障诊断:从现象到根因
工程师最常遇到的10大故障及解决方案
4.1 常见故障代码速查表
| 故障现象 | 可能原因 | 诊断方法 | 解决方案 |
|---|---|---|---|
| PLC红灯闪烁 | 硬件故障/EEPROM错误 | 查看LED状态码 | 断电重启;更换电源模块 |
| 程序执行中断 | 扫描周期超时 | 用TCK_CYC监控 |
优化程序结构;禁用冗余逻辑 |
| 通信中断 | IP地址冲突 | Ping测试+交换机日志 | 重新分配IP;启用DHCP |
| 输出无响应 | 负载短路 | 用万用表测输出端电压 | 更换保险丝;检查接线 |
| 数据丢失 | 电池电量不足 | 读取M8005(电池低) |
更换锂电池;下载备份程序 |
4.2 故障诊断流程图
1. 收集信息
询问操作员:故障发生时间、操作动作、报警代码
2. 初步判断
区分电气故障(如短路)与程序故障(如逻辑死锁)
3. 工具检测
用万用表测I/O模块电压;用编程软件强制输出测试
4. 验证假设
替换法:更换模块;隔离法:断开可疑负载
5. 根因修复
更新固件;修改程序;更换损坏元件
4.3 真实案例复盘:包装机停机事故
现象:灌装线每2小时自动停机,重启后正常运行30分钟再次停机
排查过程:
- 检查报警记录:无故障代码 → 排除硬件问题
- 监控扫描周期:从15ms升至280ms → 定位程序瓶颈
- 逐步注释:发现
FOR循环中调用MOV指令1000次/周期 - 优化方案:将循环次数降至100次,增加
MOV条件判断
📌 经验总结:生产环境必须部署“扫描周期监控”功能,建议设置阈值(如200ms),超限时触发HMI预警。
五、PLC编程序项目案例库
真实产线项目全流程解析(需求→设计→调试→交付)
5.1 自动化立体仓库(AS/RS)
客户:某电商物流中心
需求:4层货架,支持200托盘/小时出入库
- 系统架构:
- PLC:S7-1511-1PN(主控)
- 变频器:G120C驱动堆垛机
- HMI:KTP700 Basic
- 核心逻辑:
- 路径规划:基于
二维数组存储托盘位置 - 防撞设计:激光扫描仪+软件限位双重保护
- 同步控制:堆垛机与输送线速度匹配(误差<0.5%)
- 路径规划:基于
- 交付成果:
- 系统可用性:99.8%
- 平均故障修复时间(MTTR):<25分钟
5.2 CNC机床改造项目
改造前:老式继电器控制,故障率高
改造后:FX5U + 伺服驱动器 + 触摸屏
- 关键改进:
- 自动对刀:用
近接开关检测刀具长度 - 程序保护:HMI权限分级(操作员/工程师/管理员)
- 数据追溯:记录每件产品的加工参数
- 自动对刀:用
- 经济效益:
- 设备停机时间减少70%
- 良品率从89%提升至97%
5.3 智能水处理系统
特色功能:
- 水质实时监测:pH/浊度/余氯三参数联动
- 自动加药:根据水质数据计算药剂投加量
- 远程运维:4G模块上传数据至云平台
🌊 案例亮点:采用
模糊PID算法处理非线性对象(pH调节),比传统PID响应速度提升30%。
六、PLC编程序学习资源推荐
从入门到精通的必备工具与资料
6.1 免费学习平台
| 平台 | 推荐课程 | 特色 |
|---|---|---|
| B站 | 《西门子S7-1200从入门到精通》 | 免费视频教程,含真实项目演示 |
| PLCdev | Free PLC Programming Tutorials | 英文资料,指令详解+案例代码 |
| 三菱电机官网 | FX5U编程手册 | 官方文档,含通信协议详解 |
6.2 必备工具软件
- TIA Portal V18:西门子全集成自动化开发平台
- GX Works3:三菱新一代编程软件(支持FX5U)
- WinCC Runtime Advanced:HMI组态工具
- Wireshark:网络协议分析(排查通信故障)
📥 下载建议:优先从官网获取正版软件,避免使用破解版本导致功能缺失(如西门子V18需激活才能使用S7-1500功能)。
6.3 推荐书籍
| 书名 | 作者 | 特点 |
|---|---|---|
| 《S7-1200 PLC编程与应用》 | 刘国林 | 案例驱动,适合零基础读者 |
| 《三菱FX系列PLC从入门到精通》 | 柴瑞娟 | 含通信与运动控制专项 |
| 《工业自动化系统集成原理》 | 王建 | 深入讲解系统级设计思想 |
七、PLC面试编程序高频问答(FAQ)
网友最关心的15个问题深度解答
Q1:零基础如何快速入门PLC编程?
A:按此路径学习:
- 学习电气基础(继电器电路、安全规范)
- 选择1种PLC品牌(推荐西门子S7-1200)
- 安装免费版编程软件(TIA Portal V17 Community)
- 完成5个基础实验(启停电路、定时器、计数器)
- 仿真调试:用
S7-PLCSIM模拟输入输出
📌 30天计划:第1周学基础语法,第2周练通信,第3周做简单项目,第4周模拟面试。
Q2:PLC和单片机有什么区别?
A:核心差异如下:
| 维度 | PLC | 单片机 |
|---|---|---|
| 开发难度 | 低(图形化编程) | 高(需C语言/汇编) |
| 抗干扰性 | 强(工业级设计) | 弱(需额外设计电路) |
| 扩展能力 | 模块化,即插即用 | 需自行设计PCB |
| 应用场景 | 产线控制 | 嵌入式设备 |
Q3:面试时如何展示PLC项目经验?
A:用STAR法则描述:
- S(Situation):某食品厂包装线故障率高
- T(Task):负责PLC程序优化与HMI改造
- A(Action):重构逻辑结构;增加故障自诊断
- R(Result):MTTR从45分钟降至8分钟
💡 真实建议:携带U盘备份项目代码(含注释),面试时展示调试过程。
Q4:PLC编程语言有哪些?怎么选?
A:IEC 61131-3标准定义5种语言:
| 语言 | 适用场景 | 面试建议 |
|---|---|---|
| 梯形图(LAD) | 传统逻辑控制 | 最常用,必须掌握 |
| 功能块图(FBD) | 复杂算法(如PID) | 中高级岗位需熟悉 |
| 结构化文本(ST) | 数据处理/数学运算 | 展示高级技能 |
| 指令表(IL) | 内存受限场景 | 较少使用 |
| 顺序功能图(SFC) | 状态机控制 | 机械臂/流水线必备 |
Q5:PLC工程师未来会被AI取代吗?
A:不会,但需转型:
- 基础编程(如启停电路)可自动化
- 复杂系统集成(跨品牌通信)仍需人工
- AI辅助方向:预测性维护、故障诊断推荐
🚀 未来技能树:PLC + 工业物联网(IIoT)+ 数据分析(Python基础)