ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PLC练法实战:状态机、掉电保持与Modbus通讯联调技巧

PLC练法实战:状态机、掉电保持与Modbus通讯联调技巧 《PLC练法》写到第三篇我越来越清楚一件事PLC练的不是背地址不是抄程序而是“把现场问题翻译成逻辑再翻译回动作”的能力。这系列前面聊过硬件的选型和基本工具接线这篇集中讲练内功——从梯形图符号背后的状态机思维到D0~D8掉电保持、时间锁这类寄存器细节再到Modbus、OPC UA这些通讯协议在现场到底怎么连、怎么读、怎么调最后把STEP7 Micro/WIN SMART搜不到CPU、汇川AM763认不到IO模块、伺服电机复位后不动这些真问题一个个拆开。无论你是做PLC毕业设计还是第一次接非标项目调试PLC都建议按这个顺序把项目过一遍。1. 练法总纲先会拆需求再谈写程序1.1 把红绿灯需求拆成状态比记梯形图符号更值钱很多初学者拿到十字路口红绿灯PLC程序第一反应是找现成梯形图抄过来改几个定时器模拟通过就算完。这样练完换个工艺还是不会。我的练法是反过来先不碰软件拿纸笔把需求拆成“状态”。南北红灯35秒、东西绿灯30秒绿灯最后5秒闪3次然后东西黄灯3秒四个方向全红1秒再切到下一周期。这个流程的本质是一个状态机每个状态持续时间由T37、T38这类定时器驱动到点后通过常闭触点切断当前输出、常开触点激活下一状态。等你把状态图画出来梯形图不过是状态机的元件化表达。你看梯形图符号常开常闭线圈不是死记的它对应的是“条件满足就导通”。红绿灯就是一个很典型的启动、保持、转换、复位循环。有个技巧我一直推荐练习时把状态转移条件做成表格列当前状态、离开条件、进入状态、对应输出。之后写程序时只需按表填触点不容易漏。我试过用这个方法带几个新手基本一晚上就能把四方向红绿灯写得像样。相比之下不少人盯着别人的梯形图抄半天改一个时间参数都要找三处地方原因就是没理解状态和时间的依赖关系。拿到任何时序类需求第一件事永远是画状态流而不是打开编程软件。1.2 抢答器、电机顺启逆停定时器互锁和时序是同一件事8人抢答PLC编程图是另一个练手利器。8个按钮谁先按谁亮之后其他按钮无效主持人复位后重新开始。核心逻辑不在定时器而在“先到先锁定”。实现上可以用置位SET和复位RST每个选手一个输出点。但如果不加互锁两个按钮同时按下时输出可能同时亮。最简单的做法是用第一触发信号锁定中间继电器然后所有选手的常闭触点串在公共回路里一旦有人抢到公共回路断开后续置位全部失效。这个思路在电机顺启逆停定时器里也用得上正转和反转绝对不能同时接通接触器互锁之外程序里也要串对方常闭触点这叫软互锁启动和停止之间还要考虑定时器延时比如星三角启动的转换时间就是靠定时器来实现的。很多事故不是发生在正常流程恰恰是切换瞬间没有时序保护。练习建议把抢答器程序加一个违规抢答检测——主持人允许信号没到时按下按钮先亮报警。这比单纯8路抢答高一个层次也是很多竞赛题的变体。三菱PLC项目案例实例有很多我建议新手不要一上来就做机械手六轴联动那类复杂工艺先把红绿灯、抢答器、顺启逆停三个项目练透。这三个项目覆盖了定时器、计数器、置位复位、互锁、顺序控制五种基本功。再挑战施耐德PLC循环灯这类多路循环输出时你会发现其实就是一个移位过程用步进指令或移位寄存器都能实现只是实现方式不同底层时序都一样。2. 寄存器与掉电保持的实战配置2.1 三菱FX3U的D0~D8为什么断电就丢怎么改成保持热词里有一条问得很实在“FX3U的D0~D8属于普通寄存器默认断电不保持但可以通过PLC参数设置”。不少人在项目里用D0存产量一断电就清零以为是PLC坏了。其实FX3U的数据寄存器分成两类普通寄存器D0~D199随着CPU断电就回到0锁存寄存器也叫停电保持寄存器D200~D511由内置EEPROM保持。默认范围之外比如D0~D8能不能保持可以修改参数上的软元件保持范围就行。操作路径是GX Works2或GX Works3里打开PLC参数找到软元件设置把D0设置为保持属性即设定保持范围从D0开始。注意不是只勾选D0而是设定连续范围PLC靠这个起点识别哪些寄存器需要锁存。填好之后要把参数写入PLC并执行“PLC存储器初始化”或“全删除”然后再下载程序。我踩过的一个坑是改了参数直接下载程序结果断电还是丢。原因是旧参数已经被CPU缓存必须用初始化把那一段存储区清掉新参数才生效。还有一种常见做法是干脆用D200以后的保持区完全不改参数这样最省事适合电量统计这类必须掉电不丢的关键数据。但D0~D8这种默认普通寄存器往往被很多例程当临时变量用如果全部改成保持程序里有些启动逻辑可能在重启后直接跳到中间状态反而容易出事。所以练这个知识点时要刻意区分“真正需要保持的数据”和“工程内部中间变量”不是所有寄存器都改成保持就万事大吉。我记得有个朋友做设备计数功能把D0~D100全设成保持结果每次断电重启设备都以为断电前正在生产中直接重复动作差点撞机。这就是没做启动初始化。2.2 西门子时间锁程序与施耐德循环灯背后都是“时序”西门子PLC时间锁程序案例也是很多人搜的。实际设备被锁定到某个时间才允许运行常用在设备分期付款、授权管理场景。西门子S7-200 SMART可以用READ_RTC读实时时钟或读取系统时钟把年、月、日、时、分、秒读到字节缓存然后与设定时间做比较满足条件才置位运行标志。S7-1200/1500更简单用RD_SYS_T或读取OB1的日期时间。关键不是指令而是判断逻辑一般要比较BCD码注意PLC返回的时间是BCD格式如果你直接把“2025年5月”和一个整数比较永远不成立。要先转换或者直接用比较指令处理BCD。这个案例练的是数据处理不是单纯开关量。做时间锁还要考虑时钟源PLC是否带电池、每次上电是否重置能否支持断电后时间保持。如果现场没有实时时钟模块时间锁一断电就失效授权自然崩了。我见过有人用累加定时器做简单的时间限制但那只适用于不常断电的设备。顺带提一句西门子PLC里EN和ENO这两个引脚不是摆设很多功能块的EN为1时块执行ENO为0说明块执行出错。练习时间锁和通讯指令时务必盯着ENO如果ENO为0先查前置条件或硬件状态别急着怀疑逻辑。施耐德PLC循环灯则是练习定时器链的好例子。三盏灯依次点亮每盏灯亮2秒循环。用三个定时器互相触发T1开始计时2秒后停同时启动T2T2到点启动T3T3到点复位T1。也可以用一个定时器加计数器循环。这两种方案的区别在于程序可读性和修改扩展性互触式直观单定时器加计数器省地址。做非标项目时我更推荐前者因为现场要看梯形图的人不止你一个直观比省几个字重要。3. 通讯协议联调把变频器和触摸屏拉进一个网3.1 S7-200 SMART与森兰变频器的Modbus RTU怎么读怎么写搜索词里有一长串“西门子S7-200 SMART系列PLC与森兰变频器SB200系列高性能通用型变频器通讯”这个组合在中小型设备里非常典型。S7-200 SMART本体自带的RS485口支持Modbus RTU主站通过库指令里的MBUS_CTRL初始化端口然后每条读写操作调用MBUS_MSG。森兰SB200变频器侧需要设站号比如1、波特率9600或19200和PLC一致、数据格式8数据位、无校验、1停止位常见并检查变频器手册中命令字、频率设定值、实际输出频率对应的寄存器地址。一般运行命令和频率设定写到一个保持寄存器状态字和反馈频率从保持寄存器读。ABB变频器与西门子PLC的通讯思路也完全一样ABB ACS580支持Modbus RTU、PROFIBUS、EtherNet/IP西门子S7-1200如果只有PROFINET口需要加CM1241 RS485模块做Modbus如果选带RS485卡的型号继续用Modbus。别被品牌组合唬住通讯的本质就是“主站发请求、从站回数据”。实操中最容易错的是地址映射。Modbus协议里协议地址从0开始但PLC库指令里的Modbus地址往往从40001开始算两者差一。例如变频器把“启动/停止命令”放在40001库指令里写40001还是40000取决于从站厂商的偏移定义。三菱PLC通讯协议详解里也遇到过类似问题不要相信网上抄来的地址一定要看说明书里的“寄存器映射表”。记得用MBUS_MSG的Done位做轮询条件电机运行频率反馈和运行状态要分多条MSG处理不能一条指令连读多个变量否则容易超时。西门子PLC与三菱变频器通讯同理比如三菱E700变频器配合FR-E700通信卡设置站号、波特率、校验位按三菱变频器手册中的通信寄存器地址来读写不需要额外扩展模块。练过一次Modbus其它变频器基本就是换地址表的事。3.2 一个PLC接两个触摸屏、汇川组网和倍福TwinCAT3的协同“一个PLC可以接两个触摸屏吗”这个问题几乎每次线下培训都有人问。答案是可以但分情况。S7-200 SMART本身有两个通信端口本体RS485扩展或以太网两台触摸屏可以分别接到不同端口各自与PLC通信。三菱FX3U如果只有编程口一个可以通过连接一个带两个通讯口的触摸屏做“桥接/穿透”第二台触摸屏通过第一台的串行口访问PLC或者加装一块485BD扩展板组成RS485总线两台触摸屏设不同站号。关键限制是两台屏同时访问PLC时触摸屏的刷新周期会变慢尤其都做数据归档和画面切换时PLC的通讯负载会增加。所以项目里要么减少配方下载、报警历史这类批量操作要么改用以太网口。汇川PLC组网更简单AM系列自带EtherCAT和以太网多个PLC、触摸屏、伺服都挂在一个网段内用工业交换机做星型连接只要IP不冲突变量表能互相访问。汇川PLC程序案例和Codesys的关系也值得一提。汇川AM系列基于Codesys内核这意味着从Codesys转过来的工程师几乎不需要重新学指令编辑器界面、任务配置、库管理都是通的。练习汇川PLC组网时可以像玩Codesys一样先添加EtherCAT主站再扫描从站设备把轴使能、回原点、速度控制映射到PLC变量上。倍福PLC第三方伺服驱动器更是把这个流程用到极致。倍福PLC软件运行流程TwinCAT3将PLC程序、运动控制、OPC UA都放在XAE环境中首次使用需要把实时网卡驱动替换成TwinCAT驱动然后在Solution里添加PLC项目编译后登录并激活配置。第三方伺服驱动器能不能接取决于驱动器是否有EtherCAT从站能力有的话把厂商提供的ESI文件装进TwinCAT扫描后映射PDO再把映射后的地址关联到PLC变量。这个过程和S7-200 SMART加变频器没有本质区别只是把Modbus报文换成了EtherCAT帧。练过一个品牌的伺服换第三方也就半天。3.3 OPC UA通道、WinCC仿真与数字孪生抢答器的数据链路OPC UA协议读取PLC的传感器、数控机床等设备运行状态数据已经是数字化项目的基本功。西门子S7-1500/1200自建OPC UA服务器在PLC侧启用后上位机通过OPC UA客户端读变量。Process Simulate通过OPC UA与西门子PLC通讯也是同一套路Process Simulate作为客户端配置好服务器地址、端口、安全策略浏览到PLC变量比如抢答器中某选手的按钮输入和灯输出再绑定到三维模型动作。做数字孪生PLC抢答器程序时我的练法是先用一个支持仿真的PLC比如S7-1215C配合PLCSIM Advanced或者汇川AM系列配合Codesys仿真把抢答器逻辑跑通然后通过OPC UA把“当前抢到选手号”这个变量输出到数字孪生软件由孪生场景里的三个角色模型做对应动作。注意OPC UA变量可以按UA节点浏览但不同PLC的节点结构不一样有些变量名是地址名有些是符号名配置时要成对检查。WinCC8.0与PLC仿真同样可行用TIA Portal的WinCC Professional直接连接S7-PLCSIM仿真HMI的按钮、指示灯、报警不用真实PLC就能测试程序。这对练PLC是巨大的便利因为你能从“别人看不见的数据”里看到每一拍的变化。实际联调时我习惯先用WinCC把按钮和指示灯画好启动仿真后手点按钮去触发PLC里对应的输入点再看输出定时器是不是按预想动作。这样在没有实物IO的情况下也能验证梯形图的逻辑分支。这里多说一句OPC UA不是只能点对点。你可以拿PLC监控小工具同时把西门子和汇川接进来几个品牌数据统一交给上位机解决“PLC牌子多、数据格式乱”的问题。练到这里你对通讯的理解就脱离某个品牌了。4. 现场调试监控小工具、搜不到CPU和IO模块的坑4.1 用在线监控和采样跟踪追一个隐形变量PLC监控小工具通常是软件自带的在线监控、软元件监视、时序图采样。台达PLC怎么下载程序这类问题其实也离不开监控。WPLSoft或ISPSoft里设置好COM口或以太网IP和PLC站号、波特率连接成功后从菜单点“程序/文件读取”才能把源程序上载下载则反过来。如果下载后PLC运行和你想的不一样不要急着改程序先打开在线监控看关键定时器当前值T0是不是停在预设值D0是不是被别的程序改写过。我处理过一个“某设备PLC已重置伺服电机不工作”的案例。客户说PLC被重置后伺服不转其实是重置把轴参数和原点坐标清掉了程序虽然还在但伺服使能信号没有输出因为PLC里“回原点完成”标志是0。用PLC监控软件逐条看PLC的输出点、特殊标志位很快发现伺服使能条件断在“零点回归完成”那个中间继电器上。重新下载备份工程、手动回原点后就好了。这种问题最怕上来就换伺服驱动器一换反而更乱。监控这类问题不一定要高端工具很多PLC软件自带的元件监控表就够了。把关键变量扔进监控表设成二进制显示然后让设备跑起来定时刷新。有时候还能用触发采样功能把某个条件上升沿前后的数据抓下来这一招在查“偶发报警”时特别管用。我接过一个包装线项目一天就几次报夹爪不到位怀疑是传感器抖动但普通监控看不出来。后来用三菱的采样跟踪把X00信号的前后50个扫描周期拉出来发现确实有几十毫秒的脉冲丢失换了传感器座子就好了。所以练PLC不能光练程序监控工具的触发条件、采样周期设置也要熟这是现场救火的基本功。4.2 STEP7 Micro/WIN SMART搜不到CPU、AM763不认IO模块、R035.1到底是什么STEP7 Micro/WIN SMART连接PLC后搜索找不到CPU但通过添加IP地址可以连接上。这个现象我遇到好几次根本不是CPU坏了。根本原因是软件搜索功能依赖广播而电脑的防火墙、无线网卡隔离或交换机VLAN会挡掉广播。解决办法就是直接在软件里“添加CPU”输入PLC的IP地址前提是电脑网卡和PLC在同一个网段比如PLC是192.168.0.1电脑设192.168.0.2。如果IP都不在同一网段先改电脑IP或者用PLC的恢复出厂功能重设IP。这个技巧新手不知道往往卡一两个小时。汇川AM763 PLC无法识别本地IO模块这类问题在Codesys系品牌上常见。排查顺序是先看IO模块指示灯是否正常如果电源模块供电不够所有IO会集体闪异常再查模块背后的接线端子是不是松了特别是终端电阻或跳线然后在程序里重新扫描硬件确认模块固件与CPU固件兼容。AM763是AM系列的中型控制器本地IO总线如果只识别到CPU、认不到后面第一块模块十有八九是硬件配置下载时版本不匹配把整个工程重新全编译再下载就能解决。如果还不行把那块IO模块拨码地址恢复默认再断电重启。注意是断电重启不是拉一下软件复位。Fanuc CNC PLC中R035.1代表什么意思这个问法很典型。在Fanuc的CNC里R是系统RAM区地址R035.1指第35号字节的第1个位即字节地址R035的位1。R地址一般用于梯形图程序中传递报警、M代码完成信号、用户宏程序中间状态断电后数据不保持。现场如果看到R035.1被置1需要去PLC梯形图里搜索接点“R035.1”看它是哪段逻辑的输出再结合PMC信号地址表判断。我建议初学者把这类地址当成“中间变量名”而不是纠结它本身是什么含义因为同一个R位在每台机床的程序里用法不同。机床厂的不同PLC程序对R地址的定义经常不一样所以查梯图比背地址表可靠。4.3 PLC毕业设计选题冷库监控、风扇设计与数字孪生抢答器的落地练法PLC毕设选题每年都有人问我个人觉得冷库监控系统设计是性价比很高的方向。它包含了温度传感器输入模拟量或PT100、压缩机启停控制、除霜计时、报警输出、触摸屏显示覆盖面宽但难度适中。基于PLC冷库监控系统设计的框架是温度变送器把库温变成4~20mA进模拟量通道程序比较上限值和下限值高于上限启动压缩机和风机低于下限停止除霜定时器独立运行除霜时压机强制停。最后用触摸屏组态一个主画面显示当前温度、机组状态、故障记录。这样的项目放到毕业设计答辩里无论导师问硬件选型、PID还是通讯你都有得讲。PLC风扇设计则更适合自动化或机电专业练手比如根据温度分三档启停风扇需要模拟量处理比较指令接触器控制再组合一个能耗统计的累计时间寄存器。这个题目看起来小实际上把模拟量、数字量、定时器、通讯都串起来了。想要更出彩把“数字孪生PLC抢答器程序”做成毕业设计也可以PLC侧做抢答逻辑OPC UA把变量送出去3D模型响应能体现数字化能力但是工作量较大需要提前确认学校机房有没有相应软件以及PLC是否支持作为OPC UA服务器。选题别贪大不然答辩前你会发现程序永远差一块吃大亏。这里收个尾用个人体会练PLC没有捷径但可以高效。先把红绿灯、抢答器、电机顺启逆停这三个小逻辑项目练透再练寄存器掉电保持和时间锁接着把变频器、触摸屏、OPC UA都拉进来最后回到现场排查“搜不到CPU、IO不识别、伺服不转”这类实际问题。每一步都会踩坑但坑踩在前面到了项目上就能救命。如果你也正在学PLC最好每个练法都自己按着配置一遍光看我这篇还是别人的。PLC这行手指头扳过的接点才算数。
返回列表