ARTICLE DETAIL

资讯详情

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

新手学PLC首选S7-200 SMART:从选型编程到通讯实战全解析

新手学PLC首选S7-200 SMART:从选型编程到通讯实战全解析 1. 为什么新手入门PLC我先推荐S7-200 SMART两年前有个刚转行的朋友问我想学PLC编程到底从哪个品牌、哪个型号入手市面上有三菱FX系列、西门子S7-200 SMART、S7-1200、国产汇川和台达价格差不太多但学习曲线的差别非常大。我的回答一直是如果目标是快速建立整套PLC编程思维S7-200 SMART是性价比最高的一块跳板。原因很简单。第一STEP 7-MicroWIN SMART这个编程软件免费不需要破解官方直接下载对新手极度友好。第二S7-200 SMART继承了老款S7-200的指令体系同时增加了以太网口这意味着你可以直接用网线连接调试不用买专门的编程电缆。第三市面上这类入门级设备存量巨大无论是工控维修、设备改造还是毕业设计需求都非常旺盛学完不会出现学了没地方用的问题。这篇内容适合三类人完全零基础、想转行做自动化调试的新人已经在用其他品牌PLC、想补西门子知识面的电气工程师以及学生党做课程设计或竞赛项目。我会从硬件选型、软件操作、基础编程逻辑、模拟量处理、通讯实战和避坑经验几个角度把整个入门路径捋一遍。2. 硬件选型CPU型号后缀的含义与选型思路2.1 读懂CPU型号先别急着下单S7-200 SMART的CPU型号命名规律很好记比如CPU SR20、CPU ST40、CPU CR40。第一个字母S代表标准型C代表经济型第二个字母R代表继电器输出T代表晶体管输出后面的数字代表本体自带的IO点数。这串命名里藏着几个关键决策。首先是选择标准型还是经济型。经济型CR系列不支持扩展模块没有以太网口只能通过编程电缆调试这基本就失去了S7-200 SMART最大的优势我在实际项目中很少用CR系列除非只是做一个极其简单的独立小控制。其次是继电器输出和晶体管输出的选择继电器输出可以直接驱动220V交流负载触点容量大但响应速度慢寿命有限晶体管输出只能接直流负载通断频率可以很高适合接步进驱动器、伺服脉冲信号这类需要高速输出的场景。2.2 选型号还要看IO点数和扩展能力IO点数的估算口诀是先统计实际输入输出信号数量再预留20%~30%的余量。一台小型设备通常需要启动按钮、停止按钮、急停、限位开关再加上几个传感器输入输出侧是接触器、电磁阀、指示灯算下来大概10到20个点左右。SR20这种20点的小型CPU就够用了。如果后期确定要加模拟量采集、称重传感器或者更多IO就选带扩展接口的型号然后配EM DR08、EM AE04这类扩展模块。第一次买设备练手我建议直接上一台CPU SR20或者ST20再加一个EM AE04模拟量输入模块这样数字量控制和模拟量采集都能练到。总成本控制在一千出头比报培训班划算得多。2.3 实际接线里容易被忽略的细节很多人拿到PLC第一步就卡在接线。S7-200 SMART的输入端子是漏型输入也就是公共端M接0V传感器或者按钮的另一端接24V正极信号从正极流入输入点。这一点和很多日系PLC习惯把公共端接24V不一样接线前务必看清楚端子标识。输入点接线还有一个常见的坑如果按钮和传感器距离比较远布线时一定要把信号线和动力线分开走否则变频器启动瞬间的干扰足以让输入信号误动作。我在现场处理过不下十次这类PLC莫名乱跳的问题最后查下来全是布线干扰不是程序问题。3. 软件环境搭建与第一次连接调试3.1 STEP 7-MicroWIN SMART的安装要点软件可以直接到西门子官网下载最新版注册一个账号就行。安装过程基本是下一步下一步但有两个注意点。第一尽量用Windows 10 64位系统老版本软件挑系统新版本兼容性没问题了第二安装路径和项目保存路径都别用中文否则偶尔会出现编译报错或者无法打开项目的诡异问题。装完软件之后新手最容易卡在找不到PLC这一步。打开软件右上角的通讯设置双击刷新图标正常情况下能扫到CPU。如果扫不到最直接的排查方式是拔掉网线重新插一次再看电脑网卡的IP地址是否设置为自动获取。S7-200 SMART出厂默认IP是192.168.2.1电脑Net接口的IP要设成同一个网段比如192.168.2.10。这里有个细节如果电脑连了无线网有时候网卡优先级会把有线网卡的通讯挤掉建议在控制面板的适配器设置里把有线网卡的跃点数改小强制优先走有线连接。3.2 三种通讯方式的选择S7-200 SMART支持三种调试方式网线连接、USB-PPI编程电缆、以及通过CP卡连接。对新手来说无脑选网线就对了。网线连接不仅速度快还能在线监控程序状态而且没有驱动问题。USB-PPI编程电缆是老款S7-200遗留下来的方案只有在CPU不带以太网口或者现场网口被占用时才需要。现在很多第三方USB-PPI电缆驱动不太稳定装上之后在设备管理器里能看到COM口但软件里就是连不上这种情况八成是驱动版本不对换一条官方正品线或者改用网线最省心。3.3 程序下载的正确流程第一次下载程序前建议先做一个动作在软件里把CPU类型选对。点击项目树里的CPU图标右键选择类型在弹出的对话框里输入你手里的实际型号。型号选错会导致部分指令无法编译比如ST40里能用的脉冲输出指令在CR40里根本不存在。下载流程其实很简单编译通过后点击下载按钮软件会弹出一个勾选列表默认勾选程序块和数据块一般不用改。下载完成后一定要把CPU切到RUN状态可以在软件工具栏直接点RUN按钮也可以把CPU面板上的状态拨码拨到RUN。很多新手下了程序发现设备没反应第一反应是程序错了实际上只是CPU还在STOP状态。4. 必须搞懂的编程底层逻辑扫描周期与IO映射4.1 扫描周期PLC为什么是顺序执行的思维PLC最核心的执行机制是循环扫描。CPU上电后会一直重复做三件事读输入、执行用户程序、刷新输出。这个循环一次的时间就叫扫描周期S7-200 SMART的扫描周期大概在几毫秒到十几毫秒之间取决于程序量大小。理解扫描周期对排查故障至关重要。比如你写了一个自锁电路按下启动按钮程序里读到的输入状态还是上一轮扫描周期采样结果经过程序运算后输出点Q0.0导通但Q0.0的物理输出要到输出刷新阶段才会真正动作。这个过程虽然短暂但在一些高速计数、脉冲输出或者和上位机通讯的场合扫描周期造成的延迟就不可忽略了。4.2 IO映射到底映射的是什么搜索结果里有人问200smart plc io映射是把输入和输出点都映射吗这是个好问题。IO映射这个概念在不同的语境下含义不同。在基础编程语境里IO映射指的是物理输入点I0.0、I0.1和输出点Q0.0、Q0.1与PLC存储区中地址的对应关系输入输出全部要映射这是PLC硬件层面已经定义好的。但在实际工程项目中IO映射通常指的是程序里的软中间变量映射。就是说你会先在变量表里定义一些符号名比如启动按钮对应I0.0水泵接触器对应Q0.0然后在程序里用符号名编程而不是直接用物理地址。这样做的最大好处是程序可读性高后期改线时只需要改映射表不用动程序逻辑。我在做设备改造项目时IO映射做得越规范后期维护成本越低。一个比较实用的做法是在程序开头单独建一个网络把每个输入点先赋值给一个中间变量M点比如LD I0.0 M0.0后面所有逻辑都用M点。这样一旦现场接线调整只需要改第一段映射程序而且避免了同一物理点被程序多处引用时容易出错的问题。4.3 存储区划分I、Q、M、V、T、C别搞混S7-200 SMART的存储区要记清楚I区是输入映像区Q区是输出映像区M区是内部辅助继电器V区是变量存储区T是定时器C是计数器。新手最常混淆的是M区和V区。M区相当于程序内部的中间继电器掉电会丢失容量有限一般用于程序逻辑的临时标志位。V区是可以掉电保持的变量存储区也是和触摸屏、上位机交换数据最常用的区域。触摸屏上组态一个数值显示控件地址填写VW100然后PLC程序里把计算结果传送到VW100屏幕上就能看到数据了。数据类型的规则是I、Q、M、V都支持按位、字节、字、双字访问。比如V0是字节地址VW0是字地址VD0是双字地址。这里有一个高频踩坑点VB0、VW0、VD0的起始地址都是0如果程序中既用了VW0又用了VD0数据会互相覆盖。写程序时一定要做好地址规划避免重叠。5. 第一个实战程序启保停、定时器与计数器5.1 从继电器电路图到梯形图的思维转换很多电气工程师转PLC编程时最大的障碍是继电器控制思维。继电器电路里的自锁触点和互锁触点到了梯形图里要换成位逻辑指令。以最经典的电机启保停电路为例用梯形图写就是三行网络1启动、保持、停止 LD I0.0 O Q0.0 AN I0.1 Q0.0这段逻辑的意思是按下启动按钮I0.0或者Q0.0本身处于导通状态同时停止按钮I0.1没有按下那么Q0.0就输出导通。第二行的O指令实现了自锁第三行的AN指令实现了停止优先。这个程序虽然简单但包含了位逻辑编程的全部核心要素读输入、逻辑运算、写输出。5.2 定时器三种类型的选择逻辑S7-200 SMART的定时器有三类TON接通延时定时器、TONR保持型接通延时定时器、TOF断开延时定时器。新手只需要重点掌握TON它也是最常用的。TON的使用逻辑是使能端IN为ON时开始计时计时值达到预设值PT后定时器输出位变为ON使能端变为OFF后定时器复位。比如控制一个风机启动后需要延迟5秒再启动另一台设备就是用TON的典型场景网络1启动信号 LD I0.0 TON T37, 500 网络2输出控制 LD T37 Q0.0500是定时器的预设值单位是0.1秒所以500就是50秒。这个单位问题坑过很多人不同指令的时基不一样T37是0.1秒时基但有些定时器是0.01秒或者1秒时基编程前先看指令帮助确认时基。TONR和TON的区别是TONR掉电或使能断开后计时值保持常用于设备运行总时长的累计TOF则刚好和TON相反用于延时断开场景。5.3 计数器与启保停联动计数器CTU的使用也很直观。比如一个传送带上要计数20个工件后停止网络1计数 LD I0.2 LD I0.3 CTU C0, 20 网络2计数到20停止传送带 LD C0 R Q0.0, 1这段程序里第一行是计数输入第二行是复位输入当I0.3为ON时计数器清零。CTU的用法要记住一点计数到达预设值后即使计数输入再变化计数器输出位会保持ON直到复位信号到来。这个特性在做批量控制时很有用但也会造成生产完一批后不手动复位下一批没法启动的情况。我的习惯是在程序里加一个自动复位逻辑设备停机时自动把计数器清零。5.4 下载试运行的步骤要点写完程序不要急着下载。先点击编译按钮看输出窗口里有没有红色报错然后点击全部编译。编译通过后再下载下载完切换RUN用软件里的状态图表监控I0.0和Q0.0的状态按一下实际按钮看输入点是否亮起。这里有一个非常重要的习惯在线监控时务必确认CPU面板上I0.0对应的LED灯是否点亮如果按钮接线没问题但输入指示灯不亮问题一定在外部回路不用怀疑程序。6. 模拟量采集与工程换算别让0~27648把你绕晕6.1 模拟量信号类型与接线工业现场最常见的模拟量信号是4~20mA电流和0~10V电压。S7-200 SMART的模拟量输入模块EM AE04支持量程切换通过模块上的跳线或者软件组态切换。电流信号比电压信号抗干扰能力强得多能传更远距离现场传感器在10米以上的我建议一律用4~20mA。接线时注意两线制和三线制传感器的区别。两线制传感器只有两根线电源线和信号线共用正极接24V信号线进模拟量输入端子三线制传感器电源正、电源负、信号线分开。接错线轻则读数不准重则烧毁模拟量输入通道这个没有捷径每个传感器接线前先看铭牌。6.2 模拟量数值与工程量的换算公式S7-200 SMART的模拟量输入模块会把4~20mA信号线性映射到0~27648这个整数范围。如果传感器量程是0~100摄氏度那么模拟量读数为0时对应4mA读数为27648时对应20mA读数值AIW0和实际温度之间的换算公式是工程量 (AIW0 / 27648) × 量程上限这里有个坑4mA对应的是0工程量但输入读数和工程量的关系不是从零开始而是线性插值。更严谨的公式是工程量 (AIW0 - 量程下限对应读数) × (量程上限 - 量程下限) / (量程上限对应读数 - 量程下限对应读数) 量程下限以4~20mA对应0~100度为例下限读数0对应0度上限读数27648对应100度公式简化为上面那个样子。但如果传感器输出信号是0~10V对应读数范围也是0~27648公式不变。如果传感器量程是-50~150度就套用完整公式把量程下限代入计算。6.3 使用缩放指令让程序更简洁STEP 7-MicroWIN SMART提供了SCALE指令做模拟量换算但我觉得新手最好先用标准公式写一遍理解换算逻辑后再用指令这样出了偏差知道怎么排查。我习惯的做法是在程序中用浮点运算网络1读取模拟量并转换为浮点 LD SM0.0 MOVW AIW0, VW100 ITD VW100, VD104 DTR VD104, VD108 网络2乘以量程上限再除以27648 LD SM0.0 MOVR VD108, VD112 *R 100.0, VD112 /R 27648.0, VD112VD108里存的是转换后的浮点读数值VD112是最终的工程量结果。这里要注意AIW0的读取地址第一个模拟量输入通道是AIW0第二个是AIW2通道地址是偶数递增不是AIW1。这个和数字量输入点从I0.0开始的命名方式不一样写程序时最容易看漏。6.4 模拟量读数异常的处理经验如果触摸屏上显示的数值乱跳或者明显不对按这个顺序排查先用万用表量传感器的实际输出电流是否在4~20mA范围内确认信号源没问题然后看软件在线监控里AIW0的原始值是否稳定如果原始值不稳定大概率是线缆屏蔽层没有单端接地如果原始值固定是27648或者0检查量程跳线是否拨对。我遇到过最隐蔽的一个问题模拟量输入模块的通道指示灯不亮但AIW0读数正常排查了半天发现模块供电端子L和M接反了。模拟量模块需要外部24V供电很多人只关注信号线忽略了供电端子。7. 进阶实战CRC16校验与S7-1200/1500访问200smart7.1 什么场景需要自己写CRC校验有朋友搜到200smart crc校验码程序说明已经在做上位机通讯或者仪表通讯了。很多串口仪表和PLC通讯时报文末尾都带两位CRC16校验码用来检测数据在传输过程中有没有出错。比如和某些称重仪表、温控表通讯时第三方设备会要求PLC计算CRC值。CRC16的计算原理并不复杂把报文中每个字节和当前CRC寄存器异或再逐位移位判断。S7-200 SMART没有专门的CRC指令需要自己用循环移位和异或逻辑去实现。这里给一段常用的Modbus CRC16计算子程序思路新建一个子程序输入参数为数据区首地址和长度输出参数为CRC结果// 子程序 CRC16 // 输入LD0 数据区首地址LW4 数据长度 // 输出LW6 CRC结果 网络1初始化CRC 0xFFFF LD SM0.0 MOVW 16#FFFF, LW6 网络2变量初始化 LD SM0.0 MOVW 0, LW8 // 循环计数变量 // 循环体核心逻辑 // 1. 取一个字节与CRC低字节异或 // 2. 右移一位若移出位为1则与0xA001异或 // 3. 重复8次完成一个字节的处理限于篇幅这里不展开完整梯形图实际写的时候用FOR/NEXT循环指令配合异或、移位指令大约20多行网络就能完成。写完一定要用Modbus Poll或者串口助手配合验证用已知报文测试。7.2 S7-1200/1500访问200smart的两种方式搜1500访问200smart的人多半是遇到了两个PLC之间要交换数据的问题。S7-1200/1500作为主站访问200smart有两种主流方案。第一种是使用PUT/GET指令这是S7协议家族自带的通讯方式。在S7-1200/1500的OB1里调用PUT/GET指令块填写200smart的IP地址、数据区地址和数据长度就能直接读写200smart的V区。这里的配置细节200smart侧不需要写通讯程序只需要在CPU属性里勾选允许来自远程对象的PUT/GET通讯访问这个选项默认关闭很多人发现通讯建立不了就是这个复选框没勾。S7-1200/1500侧需要在组态里允许跨网段通讯如果双方IP在不同网段连接会失败。第二种方案是走Modbus TCP。200smart通过MB_SERVER指令映射数据区S7-1200侧通过MB_CLIENT指令做客户端请求。这个方案的优点是跨品牌通用性好缺点是程序量比PUT/GET大一个从站指令就要配置几十个参数新手不建议首选。7.3 通讯调试的通用排查思路通讯问题排查记住一个铁律先查物理层再查配置最后才查程序。先用电脑ping对方的IP地址通了再说协议层的事。很多PUT/GET连不上的案例最后查出来是PLC和电脑都接到了路由器上路由器开启了AP隔离设备之间互相不通。另外要注意S7协议对连接资源有限制。S7-200 SMART最多支持同时建立一定数量的主动连接如果触摸屏、上位机、PLC之间把连接占满了新连接的设备就会超时报错。这种问题只能在组态层面减少无用的连接或者给上位机设置较长的超时时间。8. 入门期最常见的五个坑我帮你提前踩了8.1 位、字节、字、双字地址重叠前面提到VW0和VD0地址重叠的问题这是新手程序里最常见的隐性错误。一条程序里VW0用作温度值VD0用作累加结果数值一变化两边数据全乱。规划变量表时建议从大往小分配先分双字VD再分字VW最后分字节VB并在变量表里做好注释。8.2 常开常闭搞反按停止按钮反而启动梯形图里的常闭触点对应物理按钮的常闭触点这两者很容易绕晕。现场急停按钮一般用常闭触点程序里就要用常开触点指令来读因为按钮被按下时输入断开程序逻辑取反转换成有效信号。我的记忆方法是急停按下要动作所以程序里要让左边条件在按钮未按下时有输出按下后断开。很多设备调试时一按急停设备反而启动了大概率就是这个逻辑反了。8.3 在线修改程序后忘记下载调试时直接在软件里改了程序CPU面板还在RUN状态改完发现设备还是老逻辑然后就怀疑人生。STEP 7-MicroWIN SMART下载新程序时CPU会自动停机再启动如果你点了下载却没确认弹窗程序并不会真的写入。顺手在软件底部状态栏看一眼下载成功的提示这个习惯能省很多时间。8.4 程序里用SM0.0当总是接通SM0.0是S7-200 SMART的特殊存储器位永远为ON常用来作为需要一直执行的程序段的使能条件。但新手容易把SM0.0当成普通中间继电器去取反或者用它做互锁结果发现取反后永远为OFF程序逻辑完全失效。SM0.1是首次扫描脉冲只在CPU从STOP切换到RUN后的第一个扫描周期内为ON做初始化复位最合适这两个特殊位搞清楚了程序就赢了一半。8.5 忽略模块供电模拟量模块完全不工作前面提到的模拟量模块供电问题再强调一次。EM AE04这类模块侧面有L和M端子需要外部接24V电源没有单独供电视觉上也能插上但模块不工作AIW读数始终为0或者极大值。扩展模块安装后还要在软件里组态模块型号不组态的话软件根本认不出这个模块下载程序时也会报错。模块组态完成后记得把CPU重新上电一次很多新模块上电后需要初始化才能被识别。9. 我个人实操中的一些收尾建议最后聊几个我在实际项目中一直在用的习惯也许能帮新手少走几个月弯路。第一每个程序开头都写一段版本注释用网络注释标明程序功能、编写日期、修改人这个习惯在项目交接时特别有用。第二变量表一定要写完整注释不要觉得这个地址我现在记得很清楚三个月后再打开项目没有注释的地址根本读不懂。第三调试时把CPU面板的RUN开关拨到RUN位置别依赖软件里的RUN按钮现场断电重启后设备能自动运行这一点在客户现场非常重要。学习PLC没有捷径但我认为有一条最高效的路径先把手头的设备控制逻辑用梯形图复现一遍再尝试增加定时器、计数器和模拟量功能最后给自己的程序加上通讯功能做完这一步入门阶段就基本收官了。遇到指令不会用的时候多按一下软件里的F1帮助西门子的在线帮助写得非常详细比到处找视频教程高效得多。
返回列表