学西门子PLC,很多人第一反应是找个视频从头看到尾,结果看了两三天梯形图,真到了设备面前还是不知道从哪里下手。这篇内容不是教程复读,而是把我实际学习过程中认为最该先懂的西门子PLC基础知识做了个骨架梳理,正好作为这个系列的第一篇。
我要讲的东西包括:PLC在工业现场到底扮演什么角色、西门子各个系列的PLC怎么选、硬件上哪些细节最容易翻车、编程软件和第一个梯形图程序怎么跑通,以及后面自学时最容易卡住的地址和数据类型问题。适合完全没有基础、准备入行或者刚接触西门子平台的朋友,哪怕你现在连PLC和单片机都分不清,也可以放心往下看。
1. 先搞清楚PLC和继电器柜的关系
很多人学PLC是被“自动化”三个字吸引来的,但真到了现场,面对的却是接线柜里密密麻麻的中间继电器、时间继电器、接触器,一时半会儿根本理不清逻辑。我建议你换个思路看待这个问题:PLC本身就不是凭空冒出来的,它就是为了替代继电器控制系统而生的。
1.1 从继电器控制逻辑说起
早年的机械设备控制,逻辑全靠硬接线实现。比如一个简单的电机启停,就要用到启动按钮、停止按钮、接触器,然后接触器的一个常开触点并联在启动按钮两端做自锁。这套方案本身很成熟,但问题在于:一旦工艺调整、需要修改逻辑,就得重新改线;设备用久了,触点氧化、接触不良、线圈烧毁,故障排查全靠万用表一段一段量线,效率极低。你想想,一个有几十个继电器的控制柜,想要从一堆线里理出一条回路的来龙去脉,那是相当头疼的事。
PLC的核心思路就是把“逻辑”从硬件线路上搬到CPU程序里面。按钮按下、传感器触发,这些信号通过输入端子进入PLC,CPU按照你写的程序做判断,再把结果通过输出端子送到接触器、电磁阀、指示灯上。需要改逻辑?改程序重新下载就行,硬件一根线都不用动。
1.2 扫描周期:理解PLC工作原理的钥匙
PLC干活儿的节奏是循环扫描,实际大部分主流PLC的工作过程都差不多:先读取输入信号,刷新输入映像区;然后CPU逐条执行用户程序;程序执行完毕后再把结果统一写到输出端子;期间还要做系统自诊断和通讯处理,然后再回到第一步。
这个扫描周期通常只有几毫秒到几十毫秒,但理解它非常重要,因为程序不是“实时并行”执行,而是“顺序扫描”执行。你就不用再奇怪为什么程序里明明线圈在上面已经接通了,下面读取同一个位却还是“旧值”了。一个典型的坑:自锁回路里,如果停止按钮接的是常闭触点,程序里又写成常开,那按停止时输出根本断不掉,这种问题后面我会专门讲。
1.3 为什么学习首选西门子
工业自动化领域品牌很多,我建议入门还是从西门子学起,理由很实在:市场占有率大,遇到问题能搜到的资料多;从S7-200 SMART到S7-1200/1500,软件和编程思路一脉相承,学会一个平台就能迁移;西门子的官方手册和例程做得很规范,英文中文资料都齐全,碰到怪异问题至少有官方文档可以查。
我说的“一脉相承”不是白说的。举个例子,你在S7-200 SMART上熟悉的位逻辑指令、定时器、计数器,换到TIA Portal里写S7-1200/1500,绝大部分概念都能直接平移,只是存储区和组态方式变了。这就是选对平台带来的长期学习收益。
2. 西门子PLC家族怎么选,别在第一步就纠结
打开西门子的选型手册,你会看到一大串系列:S7-200 SMART、S7-1200、S7-1500,还有老一代的S7-300/400。新手经常在选型这一步就懵了,我建议你先别管那些高端参数,只抓住一个核心问题:你要解决什么规模的设备?机型选型是PLC学习之路的第一步,选错了后面学起来事倍功半。
2.1 三个主流系列的定位对比
我直接把最常用的三个系列放在一张表里,方便你对照。
| 系列 | 编程软件 | 定位 | 常见应用场景 |
|---|---|---|---|
| S7-200 SMART | STEP 7-MicroWIN SMART | 小型经济型 | 点数少的小型单机设备、简单输送线 |
| S7-1200 | TIA Portal(博途) | 中小型通用型 | 中小型自动化设备、分布式IO、以太网通讯 |
| S7-1500 | TIA Portal(博途) | 中大型高端型 | 高速生产线、多轴运动控制、复杂数据运算 |
S7-200 SMART价格低、上手快、资料多,学校实训和很多小设备都在用。S7-1200是目前主流项目的主力,虽然组态要用博途,界面一开始觉得繁琐,但熟悉以后会发现它才是真正的“通用平台”。S7-1500性能强很多,但新手没必要一上来就碰,你以后做大型项目自然会接触到。
2.2 选型三步法真的没那么玄
我的习惯是先算IO点数,再数模拟量通道,最后看通讯需求。数字量输入输出点好统计,按钮、传感器、接触器、电磁阀逐个加;模拟量通道就是温度、压力、流量、变频器反馈这类信号,4到20毫安和0到10伏是最常见的。
点数算完之后,我会再往后预留百分之二十左右的余量,一是防止后期增加点位,二是CPU扩展能力要留足。比如你算了40个数字量输入、20个数字量输出,那S7-1200系列可以选择CPU 1214C自带14DI/10DO,这是内置的,再加上一个信号板或扩展模块基本就够了。真实做项目的时候,我见过不少因为点数差三个被迫换大 CPU 的情况,预留真的很重要。通讯需求主要看要不要连触摸屏、上位机、变频器或者伺服,如果设备要联网、要采集数据,那就直接锁足以太网接口为主的系列。
2.3 新手最容易犯的选型心态错误
有一种心态我见得很多:先花大量时间研究高端CPU的性能参数,觉得以后迟早要用。实际上你学PLC的任务是把逻辑、程序、接线这一套框架建立起来,CPU型号不对一点也不影响你理解位逻辑和循环扫描。我的建议是:做练习用S7-200 SMART,预算允许就上S7-1200加博途,跟着一个平台学完整,别今天换一款明天换一版,那才是最浪费时间的。
3. 硬件构成和接线细节,这里翻车最多
软件再熟,接线出问题照样白搭。PLC硬件基础这部分我建议你当成“现场交学费最少”的知识来学,因为很多故障现象你摸不清规律,本质上还是硬件环节理解不到位。
3.1 一套PLC最小系统包含什么
不管哪个系列,一套能跑起来的PLC系统都离不开五样:电源、CPU模块、输入电路、输出电路、编程下载工具。以S7-200 SMART为例,CPU本体上已经带了数字量输入输出点,还留了信号板插槽和扩展模块接口,网线口直接用来下载程序。S7-1200类似,但组态更灵活,扩展模块种类更多。
电源这块我要多提醒一句:PLC本体通常用24V直流,很多项目直接用开关电源给CPU供电,但千万不要把给传感器供电的开关电源和给PLC供电的电源混在一个出口上不加保护地乱接,电压跌落容易导致CPU无故重启。最好遵守“CPU电源独立、传感器电源独立”或者至少选用容量充足的品牌电源,并做好隔离。
3.2 数字量输入和PNP/NPN传感器配接
这是新手最迷糊的地方。传感器输出信号线要接到PLC输入端,但PNP和NPN传感器触发时输出的电平正好相反:PNP触发时输出高电平24V,NPN触发时输出低电平0V。PLC输入端电气上需要的是一个相对公共端M的电压差,所以就要求输入端公共端接法跟着传感器类型走。有一个常见配置是:用PNP传感器时,公共端M接24V负极,信号触发就是24V对COM产生压差;用NPN传感器时,公共端M接24V正极,信号触发就是0V对COM产生压差。
提示:不同品牌甚至不同型号的PLC,输入公共端叫法可能不同,有的是“1M/2M”,有的是“DI COM”。接法是否支持源型/漏型、可不可以切换,一定以对应硬件手册为准。我见过有人不看手册,把PNP传感器接到只支持漏型输入的模块上,结果信号灯常灭,查了半天才反应过来。
3.3 数字量输出:继电器输出和晶体管输出的区别
继电器输出和晶体管输出,从点位上根本看不出来,但选错会很麻烦。继电器输出的内部是小型继电器触点,优点是可以用作交直流负载切换,带载能力强,缺点是开关频率低,不适合发高速脉冲。晶体管输出开关速度快,能输出高速脉冲去控制步进和伺服,但是只能接直流负载,而且要根据是源型还是漏型选择接线方向。
所以,如果你要控制伺服或步进驱动器,必须用晶体管输出类型的CPU或模块;如果只是控制接触器、继电器、指示灯,继电器输出就够用了。另外,输出端接感性负载时,比如继电器线圈、接触器线圈,建议在负载两端反向并联一个续流二极管,否则断电瞬间产生的反向电动势对输出触点冲击很大,久了必坏。
3.4 模拟量信号接线要防干扰
模拟量信号比数字量娇贵得多。温度变送器输出的4到20毫安电流信号、变频器反馈的0到10伏电压信号,只要线缆一长,或者跟动力电缆走同一个线槽,读数跳来跳去就很正常。我实际用的原则是:模拟量信号线用屏蔽双绞线,屏蔽层单端接地;模拟量线尽可能远离变频器输出线、接触器控制线等大电流线路;模拟量信号负端和PLC的M端子连接要按模块说明书要求接,不要自作聪明乱并。
4. 编程软件和第一个梯形图程序,从下载成功开始
软件装好了,程序写进去、设备动起来,这时候才能真正感觉到PLC“上线”了。这个环节我也会讲一些别人教程里容易一笔带过的细节。
4.1 用博途还是MicroWIN SMART建项目
S7-200 SMART用的是STEP 7-MicroWIN SMART,界面相对轻量,特别适合入门。S7-1200/1500要用TIA Portal,即博途。博途功能非常强大,集成了PLC编程、触摸屏组态、驱动器配置,我第一次打开时也被那种“大而全”的界面吓到了,但你只需要用到“新建项目→添加设备→编写程序→编译下载”这一条主线路,其他先当不存在。
建议你跟着选定的硬件来定软件:手上是S7-200 SMART就学MicroWIN SMART;如果你想走主流招聘和项目方向,那就直接开始学博途,硬件用S7-1200或S7-1500的仿真环境甚至真机,别两个软件同时学,语言和快捷键都不一样,容易记混。
4.2 第一个项目:启保停回路
一个布尔量程序的入门代表作就是启保停。我建议你在软件里新建一个项目,写上下面的梯形图逻辑:按下启动按钮I0.0,输出Q0.0得电;同时Q0.0的常开触点并联在启动按钮上,靠它保持Q0.0继续输出;按下停止按钮I0.1,输出断开。这就是最基本的“自锁”回路,和继电器控制里的接触器自锁一模一样。
这里有一个细节值得反复琢磨:停止按钮现场常闭触点,程序里用常开还是常闭?两种做法都存在。如果硬件接的是常闭触点,程序里用常开指令,PLC读到的是真实状态的取反,这种做法的好处是停止线断了,PLC反而认为停止被触发,设备更安全;如果硬件接常开触点,程序里用常闭指令,那断线时PLC会认为停止没有按下,反而有隐患。我在学习时强烈建议你把两种接法都在脑子里过一遍,并亲手验证一遍,这能帮你建立起“硬件电气安全”和“程序逻辑安全”的区分。
写完程序之后记得编译,然后下载到CPU。下载之前要确保编程软件和PLC能通信:MicroWIN SMART走以太网的话,要把电脑IP和PLC IP设成同一网段;博途下载前要先正确选择了设备和接口,编译通过且组态正确,下载后把CPU切到RUN模式。第一次下载失败是非常正常的事,不用慌,百分之八十都是IP地址或者接口选错了。
4.3 用仿真软件练习,但要知道仿真到不了现场
如果你手头还没有真机,可以先在电脑上装仿真器练逻辑,博途自带S7-PLCSIM,S7-200 SMART也有仿真方式。仿真能帮你快速验证梯形图逻辑对不对,省去买硬件的成本。但你要清醒认识到:模拟量漂移、通讯干扰、接线错误、输出触点烧毁这些问题,仿真一概体现不出来。仿真最大的作用是练程序结构和调试思维,真正的动手能力一定要在实物上练。我见过有人仿真玩得特别溜,一到真机下载完后设备动起来就手足无措,就是因为没接触过硬件的“脾气”。
5. 地址、数据格式和常用指令,绕不开的底层知识
程序能跑通之后,你就会开始接触一个让很多新手头疼的概念:寻址和数据类型。同样一个地址,为什么有时是I0.0、有时是IW0、有时是ID0?字节、字、双字到底什么关系?这块基础不打牢,后面写模拟量处理和通讯程序就是无底洞。
5.1 存储区I、Q、M、DB到底分别存什么
西门子PLC把存储器按功能划分成不同区域。I区专门存放输入信号,Q区存放输出信号,M区是中间位存储区,相当于程序里的全局变量区,DB数据块则用来存放有组织的数据,比如设备参数、配方数据、统计值。以常见的S7-1200为例,I0.0表示第0个字节的第0位,IB0表示第0个字节,IW0表示从第0字节开始的16位数据,ID0表示从第0字节开始的32位数据。
这里有个很关键的规则:字和双字访问必须注意地址对齐。IW0占用了IB0和IB1,IW2占用了IB2和IB3,如果你同时使用IW0和IB1,就会发生重叠,程序里面很难查。我在给一个项目做地址规划时,习惯把所有字的起始地址都习惯性排在偶数位,这样天然避免重叠问题。
5.2 常用数据类型的取值范围
BOOL就是一位,TRUE或者FALSE;BYTE是8位,取值0到255;WORD是16位无符号,取值0到65535;INT是16位有符号,取值-32768到32767;REAL是32位浮点数,带小数。你不要觉得记范围很枯燥,数范围不清真的会出事故。比如模拟量采集值经过运算后直接送给了显示仪表,结果仪表显示一个完全错乱的数,大概率就是REAL和INT搞混了,或者直接把原始0到27648的数值当成了工程量去显示,忘了做量程变换。
5.3 定时器、计数器、比较指令,三个常用指令先吃透
定时器TON是入门第一个必学的指令。举个我常用的场景:气缸伸出到位后,希望停顿2秒再让夹爪动作,这时候就用TON指令,输入条件为气缸到位信号,定时预设值为2秒的毫秒数PT,定时时间到,TON的Q输出接通,再触发夹爪动作。这里要注意很多系统的定时器单位是毫秒,但不同软件和模块有差异,不要想当然认为填2就是2秒。
计数器CTU也非常常见。产品经过光电传感器,每遮挡一次计一个数,计数到设定值,输出一个信号让包装机暂停。比较指令则用来做条件判断,比如温度大于80度就报警,电机电流超过阈值就降频。这三个指令加上位逻辑的与或非,已经能覆盖大量设备逻辑了,先把它们练熟,再上复杂功能块心里才踏实。
6. 学习路线和现场避坑建议,少走弯路
最后这部分是写给正在自学或者刚入行朋友的经验沉淀,不是官方文档能直接查到的内容,更像是踩了坑之后总结出来的实战心得。
6.1 几个新手反复踩的坑
我整理了一个快速对照表,方便你排查。
| 故障现象 | 可能原因 | 排查思路 |
|---|---|---|
| 程序下载不进去 | 电脑和PLC不在同一IP网段、接口选错、CPU处于STOP外的异常状态 | 先Ping测试,再查看软件连接参数 |
| 输入信号灯不亮 | 传感器类型与输入公共端接法不匹配、24V电源掉了、接线端子松 | 先查电源,再查传感器输出,最后核对公共端 |
| 输出动作后设备不动 | 输出点或接线端子虚接、负载电压不对、继电器触点烧坏 | 用万用表测输出点电压,确认不带负载时是否有输出 |
| 模拟量读数乱跳 | 信号线未屏蔽、与动力线同槽、电源纹波大 | 缩短信号线距离,屏蔽层单端接地,分开线槽 |
| CPU运行灯正常但程序没反应 | 程序下载后没有切到RUN模式、某个位被程序其他位置复位 | 在线监控程序,看是卡在哪个位置 |
这些坑我几乎都踩过一遍。特别是第一个,下载失败的时候先别急着怀疑软件,先Ping一下PLC的IP,90%的问题都在这一层。
6.2 一门深入,项目驱动式学习
我个人的学习建议非常明确:不要囤几十个G的视频,要找一套完整的官方手册和一个软件,然后按照“点动→启保停→电机正反转→定时计数→模拟量采集→变频器通讯”这样的小项目顺序,一个一个亲手实现。每天写一小段程序、跑通一个功能,比周末看十个小时视频管用十倍。
学第三个项目之后,可以试着找一个现成的简单程序,逐条分析每一行为什么这样写。看别人写的程序,你学到的不是某个指令怎么用,而是整个程序的架构思路,比如报警逻辑为什么要集中在一块、手动自动切换为什么要做互锁,这些光靠琢磨自己是很难想到的。
6.3 基础知识和现场经验缺一不可
我学到后面发现一个道理:PLC基础知识和普通编程学习最大的不同,在于它始终要跟现场物理设备打交道。你可以不会写复杂算法,但你必须看得懂接线图,必须知道接触器的辅助触点和主触点的区别,必须明白急停回路应该单独硬接线而不是只靠程序。这不是学不学的问题,是安全意识问题。千万不要在程序里写个“软件急停”就觉得安全了,硬件急停回路该接还是要接。
最后再分享一个我自己的习惯:每学一个新的知识点,我都会把它写下来贴在一个在线笔记里,专门记“当时为什么卡壳”和“最后怎么解决”。因为很多坑不是靠逻辑推出来的,而是靠现场一次一次试出来的。这个习惯看着笨,但我后来带人学PLC时,发现能最快速把新手带上手的,往往不是最聪明的那个,而是最善于记录“自己踩过的坑”的那个。
学西门子PLC基础知识,前面这一大段就是完整的第一站。你把硬件构成、选型逻辑、接线规矩、循环扫描、地址格式和三个常用指令都摸清了,后面的进阶内容比如模拟量处理、通讯配置、运动控制,才有往下走的底气。下一篇文章我打算从模拟量信号处理和常见传感变送器的选型讲起,咱们到时候见。