1. 为什么我敢用S7-200 SMART直接带V90 PN
先交代一下背景。之前做过一台小型贴标设备,原来是用S7-200 SMART配步进电机,跑低速和小行程还行,一旦提速到每分钟两三百件,步进就开始丢步,最后只能停下来等机械调整。老板不想换大型PLC,也不想引入太复杂的TIA架构,但伺服是非上不可了。当时摆在面前的选择有三个:换S7-1200、用S7-200 SMART加脉冲伺服、或者让S7-200 SMART直接通过PROFINET带V90 PN。前两个方案要么贵要么浪费,第三个方案当时网上资料稀碎,很多人说不行,理由是“200 SMART就是个经济型PLC,跟PN伺服扯不上关系”。
结果我实测下来,S7-200 SMART通过PROFINET控制V90 PN完全可行,而且整体开发效率比我预想的高很多。这篇文章就把我整个项目从评估、选型、组态、写程序到调试踩坑的过程完整讲一遍,内容包括S7-200 SMART的PROFINET能力边界、V90 PN的报文配置、控制字和状态字的逻辑、STEP 7 Micro/WIN SMART里的组态步骤,以及几处非常容易翻车的地方。
1.1 这套组合最适合哪类项目
先说清楚适用范围,免得有人拿着这篇文章去干完全不匹配的活。
S7-200 SMART通过PROFINET带V90 PN,最适合的是单轴、双轴的小型设备,比如贴标机、点胶机、小型装配线、切割平台、往复输送定位,以及那种原来用步进但精度和响应跟不上、又不想推翻整台设备控制方案的改造项目。
这类项目有几个共同点:轴数少,一般不超过两个同步轴;运动逻辑简单,不需要复杂插补;PLC程序量不大,不需要分布式IO和大量功能块;预算敏感,老板希望把伺服的钱花在机械上而不是控制器上。我做的贴标设备就是典型——主轴送料、副轴贴标,两个V90 PN,一个S7-200 SMART CPU SR40,组态完事。
如果你的项目涉及多轴插补、电子凸轮、高速同步追赶,那这套方案就不合适了。虽然S7-200 SMART支持连接多个PROFINET从站,但它的运动控制能力和CPU算力摆在那里,别硬上。后面第7部分我会说清楚哪些情况不建议用。
1.2 S7-200 SMART对PROFINET支持的真实边界
很多人一听说“S7-200 SMART支持PROFINET”就以为它和S7-1200/1500的PROFINET完全一样,这是个容易踩的认知坑。我从固件和功能两个层面说。
第一,固件门槛。S7-200 SMART必须使用V2.5及以上固件的CPU,才支持PROFINET IO控制器功能。老设备如果固件是V2.3或V2.4,先得升级固件。升级方式一般是通过Micro SD卡做固件更新,去西门子官网下载对应的固件版本文件,拷到SD卡根目录,插入CPU的卡槽上电,等待面板指示灯闪烁完成更新。别嫌麻烦,这一步不搞定后面全白搭。
第二,角色定位。S7-200 SMART在PROFINET网络里只能作为IO控制器,也就是“主站”,去连接各种IO设备和驱动设备,不能像S7-1200那样在某些场景下做IO设备被别人控制。对于带V90 PN来说这完全够用,我们本来就是要让PLC去指挥驱动器的。
第三,实时性和周期。S7-200 SMART的PROFINET只支持RT(实时通信),不支持IRT(等时同步实时)。这意味着它跟V90 PN之间能够稳定交换过程数据,但无法保证像高端伺服系统那样的等时同步和纳秒级抖动指标。需要说明的是,V90 PN本身支持RT模式,在Startdrive里配置时只要把通信模式选为RT,就不会出兼容性问题。实际跑下来,4ms到16ms的循环周期对小型设备完全没问题。
第四,带宽和地址区。S7-200 SMART的PROFINET IO功能可以连接多个从站,但每个从站占用的IO地址空间有限。拿V90 PN标准报文1来说,PLC到驱动器是4个字节(2个字),驱动器到PLC也是4个字节。如果你用标准报文3或报文5,数据量会翻倍。在Micro/WIN SMART的PROFINET向导里分配IO起始地址时,要注意别把地址空间占得太靠后,后面还要留给本机IO和扩展模块。
1.3 为什么不绕道S7-1200
很多同行问我,既然要上伺服,为什么不干脆换成S7-1200搭Startdrive,那套组合更顺。我给的理由很简单:成本、时间、存量逻辑。
S7-1200加上PROFINET伺服方案确实强大,但整条链路的软件门槛和工程成本高不少。设备里原本就是S7-200 SMART的梯形图程序,包含大量设备逻辑、互锁和触摸屏变量地址,直接换1200意味着整套程序重写、变量表重新映射、触摸屏通讯协议也要处理。而S7-200 SMART通过PROFINET带V90 PN,只增加了一段通信组态,原有程序逻辑基本保留,只是在程序里多了“往QW0写控制字、向QW2写速度值”这几个动作。相比之下,利润和工期都不会失控。
另外必须说一句公道话:S7-200 SMART在Micro/WIN SMART里的PROFINET向导做得挺友好,添加GSDML文件、拖入IO设备、分配地址,基本是填空式的,不需要写底层的硬件描述文件,也不需要懂复杂的GSD语法。对于长期在小型设备上干活的电气工程师来说,这不折腾人。
2. 硬件清单、供电接线和通信前置条件
这一部分看起来基础,但恰恰是很多人在现场卡住的地方。我不打算罗列一堆型号,只讲我实际用过的组合,以及接线时必须注意的几个点。
2.1 我用的硬件配置单
项目实际配置如下:
- PLC:S7-200 SMART CPU SR40,固件升级到V2.6,自带以太网口和RS485口。选SR40是因为设备上有不少继电器输出点,和原有模块兼容。
- 伺服驱动器:西门子V90 PN,400W规格。
- 伺服电机:和V90 PN配套的1FL6022电机,带抱闸。带抱闸很重要,因为竖直方向的负载断电时需要锁住。
- 编码器电缆、动力电缆:都是V90原装电缆,带抱闸的那根动力电缆多两根抱闸线。
- 交换机:设备旁边需要接HMI和编程电脑,PLC和两个V90的网口都接到一台普通工业交换机上。
这里我要多说一句,如果你只有一台V90和一台S7-200 SMART,理论上PLC的以太网口和V90的PROFINET口直连就可以通。但S7-200 SMART的以太网口同时还负担编程下载、HMI通讯、Modbus TCP通讯等功能,单网口设备上我强烈建议加一台普通交换机再组网。直连虽然也能通,但后续调试时要么拔线插电脑,要么改IP,非常折腾。
2.2 V90的STO回路、抱闸和电源处理
V90 PN在接线上有两个非常容易忽略的关口,一个是安全转矩关闭端子STO,一个是抱闸控制。
先说STO。V90驱动器上有X10端子排,其中带有STO回路,如果这个回路没有闭合,驱动器上电后就会报安全相关的报警,电机根本无法使能。正确做法是把X10端子排上对应的STO+和STO-插针短接,具体插针号以用户手册为准,我用的400W驱动器是把1/2和3/4分别短接。这不是可有可无的安全措施,而是“不短接就别想动”的硬门槛。有些设备在最终交付时会把STO接到外部安全继电器上,但调试初期最常见的做法就是短接。
再说抱闸。电机带抱闸时,抱闸电源和控制逻辑必须处理好。V90本身没有直接驱动抱闸的输出口,一般是通过控制单元的输出点控制一个中间继电器,再让继电器触点为抱闸线圈供电。在很多改造项目里,大家会把“电机抱闸松开”和“伺服使能”绑在一起处理。我的建议是:抱闸松开信号一定要在驱动器使能之后再去置位,否则电机会出现“闸还没完全打开就收到运行指令”的情况,轻则异响,重则过载报警。
最后是供电。V90 PN常见的供电是220V单相或三相,如果设备只有单相220V,选型时就要确认驱动器型号支持单相输入。千万别把380V直接怼上去,那一下就炸了。电源侧的滤波、接触器、断路器按常规设计即可,但建议在驱动器主回路前加一个接触器,做急停断主电的控制,这样比单纯发停止指令更安全。
2.3 PROFINET对IP地址和设备名称的硬性要求
PROFINET和普通以太网最大的一点不同是,它除了IP地址,还有一个“设备名称”(Device Name)的概念。IP地址负责网络寻址,设备名称才是PROFINET IO控制器识别从站的真正依据。S7-200 SMART在组态里指定了“我连接的V90叫什么名字”,V90那边也必须配置成这个名字,两者完全一致,通信才能建立。注意,这个名字是大小写敏感的,而且一般不允许使用特殊字符和空格。我习惯用简单的小写名称,比如v90-pn1、v90-pn2,全小写下划线结构,免得在大小写上出问题。
IP地址方面,PLC和V90要在同一个网段。S7-200 SMART固定IP,比如192.168.0.10,两个V90分192.168.0.20和192.168.0.21,掩码统一255.255.255.0。V90默认IP可能是出厂值,必须通过调试工具改成和PLC同一网段。名字和IP不一致,是最典型的通信失败原因。
3. PROFIdrive协议是通信的入场券:报文、控制字、标定
如果你从来没有接触过PROFIdrive协议,第一次打开报文配置界面时大概率会懵。一堆英文缩写,STW1、ZSW1、NSOLL_B、NIST_A,不知道谁该发给谁。这里我用最直白的方式把它讲明白,这也是整篇文章里我认为最重要的理论部分。
3.1 报文到底传什么:控制字/状态字/速度字的映射
V90 PN和S7-200 SMART之间的PROFINET通信,说白了就是周期性地、以固定长度交换若干个16位字。PLC发给V90的是“控制命令”,V90发回给PLC的是“运行状态”。
以最常用的标准报文1为例,PLC发给V90的数据区包含两个16位字:
- 第1个字:控制字1,英文简称STW1。里面的每一位都是一个开关量,比如“上电”“允许运行”“故障复位”。
- 第2个字:速度设定值,英文简称NSOLL_B,是一个带符号的16位整数,正数正转,负数反转,大小代表速度高低。
V90发回给PLC的数据区同样包含两个16位字:
- 第1个字:状态字1,简称ZSW1。里面的每一位表示驱动器当前状态,比如“已就绪”“正在运行”“有故障”。
- 第2个字:速度实际值,简称NIST_B,是当前电机实际转速的反馈。
用一张表格表示就是:
| 数据方向 | 第1个字 | 第2个字 | 含义 |
|---|---|---|---|
| PLC → V90 | STW1 | NSOLL_B | 控制字 + 速度设定 |
| V90 → PLC | ZSW1 | NIST_B | 状态字 + 速度反馈 |
3.2 标准报文1和报文3怎么选
在V90的Startdrive配置中,你会看到很多报文类型,比如标准报文1、标准报文3、标准报文5、标准报文7。很多人一上来就选标准报文3,觉得“数字越大越高级”,这是误区。
标准报文1是纯速度控制,数据最短,响应最快,也是最容易调试的。如果你的项目只需要给驱动器一个速度值,让它转起来,然后用PLC做定位逻辑或位置闭环,那就选标准报文1。
标准报文3比报文1多了位置相关数据,比如位置实际值、位置误差等,适合让PLC读取电机的位置反馈,或者实现一些简单的位置控制。但数据字多了一倍,程序处理也复杂一些。
我建议首次调通通信的读者先选标准报文1。先把控制字和速度值跑通,确认通信正常、电机能转、方向正确、状态字能读到,然后再根据实际需要换更大的报文。很多人一上来就想把位置、速度、扭矩全塞进一组报文里,最后自己都分不清QW0、QW2、QW4各是什么,调试时非常痛苦。
3.3 速度设定值和实际值怎么换算
这是我最想强调的一点。V90收到的速度设定值和“每分钟多少转”不是直接相等的,它遵循PROFIdrive的标准标定规则:
- 数值16#4000,也就是十进制的16384,代表“100%参考速度”。
- 参考速度的大小由驱动器参数P2000定义,常见设置为电机的额定转速,比如1500rpm或3000rpm。
所以实际速度的计算公式是:
实际设定值(十进制)= 目标转速 ÷ P2000参考转速 × 16384
举个例子,P2000设为1500rpm,想让电机以1200rpm的转速正转,那么:
1200 ÷ 1500 × 16384 = 13107
PLC里写入QW2的值就是13107,对应十六进制约0x3333。如果想反转,写入负值即可,比如-13107。
反向换算也一样,当V90反馈回来一个速度实际值时,如果IW2读到的数受是16384,那就代表当前转速为参考转速。如果你的触摸屏要显示实际转速,就需要在PLC里做一次乘除法运算,把16384对应的值还原成rpm。
这里要特别提醒一点:PLC里处理有符号数时要注意数据类型。S7-200 SMART的V存储区里同一个字你可以按有符号数或无符号数来理解,取决于你怎么做运算。速度值肯定是有符号的,所以所有参与速度计算的变量都应该按INT类型处理,避免把一个转负数的二进制码当成正数。
4. 组态全流程:从V90参数到Micro/WIN SMART的PROFINET
理论讲完,开始实际操作。我们先把V90的参数准备好,再进S7-200 SMART侧做组态,最后验证通信握手。整个过程正常顺利的话,一个小时左右就能完成第一次数据交换。
4.1 用Startdrive把V90先“喂饱”参数
V90的调试我习惯用SINAMICS Startdrive,这个是TIA Portal的驱动组态插件。如果你的电脑里没有TIA Portal,也可以使用西门子官方的V-ASSISTANT调试软件,功能类似。我这里以Startdrive为例说明。
第1步,新建一个项目,把V90 PN设备添加到网络视图里。在离线状态下双击V90设备,进入驱动调试图。
第2步,设置驱动运行模式。我们要做的是速度控制,所以把运行模式选为“速度控制”或“转速控制”,不要选“基本定位”。如果选了基本定位,V90会自己接管很多位置逻辑,和PLC程序会产生一堆权限冲突。
第3步,配置“设定值通道”和“通信报文”。在PROFINET通信设置中选择标准报文1,注意把报文类型记录下来,稍后在Micro/WIN SMART里必须选同一类型。
第4步,设置参考速度P2000。这里建议设成伺服电机的额定转速,我测试时用的电机是3000rpm,所以P2000设为3000。如果设成1500,那么16#4000对应的就是1500rpm,按这个比例跑,计算公式就根据3.3节的公式来。
第5步,设置设备名称和IP地址。设备名称写成和PLC组态一致的名称,比如v90-pn1,IP设为192.168.0.20。这里有个细节,下载参数到V90时,设备名称和IP会随参数一起写入。
第6步,一键下载参数,完成。下载后V90会重新启动,启动后面板应该显示正常状态,不会出现通信类报警。
4.2 在Micro/WIN SMART中导入GSDML并添加V90
S7-200 SMART的工程软件是STEP 7 Micro/WIN SMART。注意版本要跟上,我用的是V2.5以上版本,否则PROFINET向导选项可能都看不到。
第1步,打开项目,在左侧向导区域找到“PROFINET”功能,点击进入。第一次使用时,向导会提示添加GSDML文件。V90对应的GSDML文件一般在V90调试软件的安装目录里,或者从西门子官网下载。添加时要注意文件版本,和你V90固件版本匹配,否则后面组态时可能识别不出正确的报文。
第2步,在PROFINET组态界面中添加一个IO设备,类型里找到SINAMICS V90,拖入网络视图。此时组态软件会让你填写设备名称,必须填写刚才V90里下载进去的那个名字,比如v90-pn1,一个字符都不能差。
第3步,配置从站的报文类型。在V90设备的报文槽位里,选择“标准报文1”。此时Micro/WIN SMART会自动分配一组IO地址,默认从I0.0开始。我习惯把IO起始地址往后挪一点,比如IW100开始,避免和CPU本机输入输出地址冲突。
第4步,点击保存编译,下载到PLC。这里要特别注意,S7-200 SMART的PROFINET组态下载到PLC后,PLC会重启,这是正常现象,等一下就行。
4.3 通信地址、报文槽和设备名称的对齐
前面第三步里Micro/WIN SMART分配的IO地址,就是你在梯形图里直接使用的硬地址。它遵循一个简单的规则:
- 第一个输出字,也就是PLC写到V90的控制字,对应QW100(如果起始地址是100)。
- 第二个输出字,也就是速度设定值,对应QW102。
- 第一个输入字,也就是V90的状态字,对应IW100。
- 第二个输入字,也就是速度反馈,对应IW102。
这个映射关系不是猜的,是报文槽的数量和Micro/WIN SMART的地址分配算法决定的。标准报文1有两个输出字两个输入字,所以起始地址加0、加2就是每个字的地址。如果你用了标准报文3,输出会增加一个位置字,那速度值就可能落到QW104而不是QW102。所以哪怕只多一个报文字,地址也会变。记地址之前先数清楚报文槽。
4.4 下载后如何确认握手成功
组态下载完之后,怎么确认通信真的通了?
首先看V90面板。V90的六段数码管上如果显示正常的驱动器状态,并且没有“通讯中断”类的报警,一般说明PROFINET周期性通信已经建立了。部分固件版本下,面板会直接显示出“当前控制字/状态字”相关信息,或者在Startdrive在线诊断界面能看到PROFINET通信状态为“Good”。
然后看PLC侧。在Micro/WIN SMART的PROFINET诊断页面里,可以查看“IO设备状态”,如果显示“存在”且“良好”,说明握手成功。如果状态是“不可用”或“检查未通过”,大概率是设备名称不匹配,或者IP不在同一网段。
更粗暴有效的验证办法是,直接在程序里写一小段测试逻辑:往QW100写16#047F,给QW102写一个固定速度值,比如16384,如果电机转起来了,说明整条链路是通的。再读一下IW100,看看状态字第二位是不是变成了1,表示驱动器正在运行。
5. 控制程序怎么写:启停、速度设定和故障复位
组态通了,只是万里长征第一步。真正的控制逻辑,是让S7-200 SMART像指挥官一样,准确控制V90的启停、方向和速度,并且在出故障时能够复位和报警。
5.1 控制字的基础流程:047E/047F和状态字判断
我前面说过,控制字STW1的每一位都对应一个功能。实际调试时,我们不用每次按位去拼,直接用两个固定值即可:
- 16#047E:表示“允许运行但未给启动命令”,可以理解为待机状态。
- 16#047F:表示“全面使能并启动”,电机可以通电运行。
如果把16#047E的二进制展开,它的含义是:无OFF2、无OFF3、允许运行、斜坡发生器使能、设定值输入使能、过程数据使能,只有0号位(启动运行)为0。改成16#047F就是最后一位也置1,发出运行命令。
我之前就是从这两个值开始,在两台设备上都没出现意外。程序逻辑可以这样写:
// 默认输出控制字为待机状态 LD SM0.0 MOVW 16#047E, MW10 // 启动按钮I0.0,停止按钮I0.1 LD I0.0 O M0.0 AN I0.1 = M0.0 // 运行状态时输出运行命令 LD M0.0 MOVW 16#047F, MW10 // 将控制字传递到PROFINET输出 LD SM0.0 MOVW MW10, QW100写入QW100的数值,会以每个扫描周期一次的频率通过PROFINET发到V90。如果停止按钮按下,M0.0被复位,MW10重新变成16#047E,V90按OFF1斜坡停车。
状态字ZSW1也要读回来判断。我习惯把IW100的值传到一个中间变量MW20,然后按位检查:
// 读状态字 LD SM0.0 MOVW IW100, MW20 // 第0位为1表示准备好接通 LD SM0.0 LDW= MW20, 16#0231 S M1.0, 1 // 第2位为1表示正在运行 LD SM0.0 LDW= MW20, 16#0233 S M1.1, 1 // 第3位为1表示有故障 LD SM0.0 ANDW MW20, 16#0008 MOVW MW20, MW22 ANDB 16#08 = M1.2这里说一句,状态字不是只有两种值,实际运行中可能会有各种报警位和运行位组合。更稳妥的判断方法是“位测试”而不是“等于某个固定值”。我上面的示例用了等于判断只是为了展示清晰,实际项目里建议用ANDW做位与,单独取出某一位来用,这样即使其他位有变化也不影响判断。
5.2 从模拟量或HMI数值换算速度设定值
速度设定值在PLC里怎么来,决定了这台上位机的控制方式。我遇到两种常见场景,一种是从触摸屏直接输入转速,另一种是PLC读取外部模拟量调速。
先说触摸屏方案。触摸屏输入的目标转速是整数,单位rpm,存到VD300里,然后换算成PLC发到QW102的PROFIdrive标定值:
// VD300中为触摸屏输入的目标转速,如1500 LD SM0.0 MOVR VD300, VD100 *R 16384.0, VD100 /R 3000.0, VD100 // 这里3000是P2000 ROUND VD100, VD104 DTI VD104, VW108 // 反转时速度值可能是负数,程序里确保VW108按INT处理 MOVW VW108, QW102如果触摸屏输入的不是转速而是百分比,比如0到100%,那公式更简单,直接用16384乘以百分比。
再说模拟量方案。S7-200 SMART的模拟量输入AIW0采集0到20mA或者0到10V信号,数值范围一般是0到27648。要把它映射到速度值,就按线性比例计算:
// 把AIW0的0~27648映射成0~16384 LD SM0.0 ITD AIW0, VD110 DTR VD110, VD110 MOVR VD110, VD114 /R 27648.0, VD114 MOVR VD114, VD118 *R 16384.0, VD118 ROUND VD118, VD122 DTI VD122, VW116 MOVW VW116, QW102注意这种情况下的速度方向是单向的,如果模拟量要控制正反转,可能需要在中点加一个偏置,或者用两个模拟量通道做方向切换。项目里如果需要正反转同时调速度,建议直接上触摸屏或上位机发带符号的速度值,别用模拟量绕弯子。
5.3 带斜坡和限位的正反转
V90本身有斜坡发生器,在Startdrive里可以设置加减速时间。但如果你需要在PLC侧做更灵活的速度曲线,比如不同段位用不同加减速时间,也可以在PLC里写斜坡功能块。
我项目里的做法是:把斜坡时间交给V90,PLC只负责把速度设定值按需求改变。因为V90的斜坡是专门为伺服调校的,平滑度比PLC里做的那种几个扫描周期加定值的斜坡要好很多。
正反转的切换通过速度设定值的正负号实现。有一点要注意,切换方向前最好先把速度给定为0,并等待状态字里“速度已到零”或至少等待一个较短的斜坡建立时间,再给反向速度。如果直接从一个正速度跳到负速度,V90内部会做一个快速穿越零点的处理,冲击感会比较强,某些机械结构可能受不了。
限位信号方面,正负限位开关接入PLC输入点,程序中做硬连锁,一旦限位动作立即把QW102清零,输出控制字切换到16#047E,让驱动器在当前斜坡下停车。复位限位后,操作员需要按启动按钮重新给运行指令,不允许自动恢复。
5.4 硬件和软件双重联锁
伺服设备的安全逻辑永远是第一位的。我在程序中做了几层连锁:
第一层是急停回路。急停按钮带常闭触点接入PLC的输入点,急停释放时该点为ON,急停按下时为OFF。控制字的待机状态16#047E只在急停释放时才被写入,急停按下时直接把QW100写成16#0000,也就是所有控制位清零。
第二层是抱闸控制。抱闸继电器线圈接入PLC输出点,程序里只有在M0.0运行标志为ON,且状态字第2位为1(正在运行)之后,才允许置位抱闸输出。停车时,先撤掉运行命令,等状态字显示驱动器停止或转速反馈低于某个阈值,再断开抱闸输出。这个顺序在垂直轴上特别重要,顺序反了轻则撞车重则坠落。
第三层是限位和超速保护。除了硬件限位,我还在软件里做速度上限判断,防止触摸屏误写了超大的速度值。一旦设定值绝对值超过P2000对应的最大转速,就钳位到最大值,并给出HMI上的报警提示。别小看这一条,实际调试时手误把速度值多打个0,电机直接窜到最高转速的事,我见得不只一次。
5.5 故障复位与报警记录
V90报故障后,要复位才能再运行。复位方式可以通过控制字的第7位实现,也就是故障复位位。正确做法是给一个“低电平到高电平的跳变”,不能一直置位。
示例逻辑:
// I0.2为复位按钮 LD I0.2 EU // 上升沿脉冲 S M2.0, 1 // 故障复位标志置位 // 在下一个扫描周期把复位标志写入控制字的第7位 LD M2.0 MOVW 16#047F, MW10 OW MW10, 16#0080, MW10 // 置位第7位 NOP // 保持一两个扫描周期 R M2.0, 1实际使用中,故障复位信号保持的时间不宜过短,也要确保前面的使能条件都满足,复位后驱动器能马上接受运行命令。如果复位信号发出后,故障依然存在,程序里要做个超时判断,比如2秒后故障位仍为1,就在触摸屏上提示“复位失败,请检查驱动器故障码”。
V90的面板会显示故障代码,这也是我保存报警信息的第一来源。PLC里可以顺便把状态字保存到掉电保持区,历史报警时能复盘一下当时的控制字和速度值,排查问题效率高很多。
6. 我调试中实际踩过的坑和对应解法
这部分是最值钱的。理论再多,不如现场一个坑一个坑地蹚过来。我挑了七个最具代表性的问题,按从接线到通信再到运动的顺序说。
6.1 V90一上电就报警,STO端子没短接
第一次通电时,V90面板直接跳出一个报警代码,查手册才知道是STO安全回路断开。我记得很清楚,当时还把几个端子来回查了一遍,最后发现X10端子排上的短接片松了。这个问题看起来小,但非常容易迷惑第一次用V90的人。只要STO回路没闭合,V90会认为安全功能触发,拒绝一切运行命令。所以通电之前,先把X10端子对照手册检查一遍,短接片压紧,然后给驱动器通电,面板应该进入正常待机状态。
6.2 PROFINET连上后反复掉线,状态一会有一下没
有一次调试,PLC组态下载完,电机能转,但转不到一分钟通信就断了,V90面板报通讯故障,然后过几秒又自动重连。查了半天,发现是交换机上还挂着调试电脑的无线网卡,这个无线网卡时不时广播一些组播数据,把PROFINET的实时数据包给挤出去了。换了个工业交换机,并且把调试电脑的无线网卡禁用之后,问题消失。
所以我的建议是:PROFINET网络里尽量不要混入普通办公网络设备,尤其是带WiFi的笔记本连接。调试电脑要用有线网口,网卡的电源管理里的“允许计算机关闭此设备以节约电源”选项也关掉,否则电脑休眠时网卡掉线,也会把交换机端口搞出异常。
6.3 电机低速抖动、速度跟随滞后
程序都写完了,0到3000rpm的加减速看起来也平顺,但低速运行时电机明显有抖动。一开始怀疑机械问题,拆开传动部分检查了一遍没有异常。后来在Startdrive里查看速度反馈波形,发现低速时的速度波动比较大。
解决办法是:把V90的速度环比例积分参数稍微调软一点,同时PLC侧的速度设定值加了斜坡滤波。低速抖动很大程度是速度环响应太激进,和机械形成共振。另外检查一下编码器电缆的屏蔽层是不是单端接地,我那次是编码器电缆屏蔽层两端都接地了,形成地环路,把编码器信号污染了。改成一端接地后,波形干净很多。
6.4 位置不准到底是PLC算还是V90算
设备要做定长定位,我一开始想用PLC的位置闭环,让PLC读取V90反馈的位置信息,实测发现精度总是差一点。原因在于S7-200 SMART的扫描周期和PROFINET通信周期叠加后,位置采样的延迟是在不断抖动的,你很难靠一个固定补偿值去消除。
最后我的方案是:定位任务下放到V90内部做。V90在基本定位模式下可以自己接收位置设定值、控制加减速、完成回零和定位。PLC的角色变成“发定位命令、监测状态、处理故障和逻辑互锁”,这样位置环闭在V90内部,和PLC扫描周期无关,精度直接上了一个台阶。
这也是我在第3.2节强调标准报文1和报文3差异的原因。如果你要做定位,就别试图用PLC去算PID位置环,直接让V90干它擅长的活。S7-200 SMART通过PROFINET真正擅长的是逻辑顺序控制和人机交互,不是高速位置伺服运算。
6.5 常见的几个故障代码和排查方向
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| V90上电报警STO | X10短接片松动 | 检查X10端子排,对照手册确认短接针脚 |
| 通信反复中断 | 网络中有非PROFINET设备、IP冲突 | 检查交换机端口、禁用电脑WiFi、确认IP不重复 |
| 电机不转 | 控制字未给到16#047F、使能条件不满足 | PLC在线监控QW100的值和状态字 |
| 电机只抖动不转 | 报文类型不匹配、速度设定值太小 | 核对PLC和V90报文槽位,看看P2000 |
| 抱闸电机坠落 | 抱闸顺序反了 | 必须先在驱动器停止后再断开抱闸 |
| 运行方向反了 | 速度设定值符号不对 | V90中可通过参数改变方向或者程序里取负 |
6.6 一个容易被忽略的IP冲突
最后压轴说一个隐蔽的坑。有次一切组态都对,V90就是不通信,后来用电脑Ping了一下V90的IP,发现居然有另一台设备也占着这个IP。原来是因为之前调试时,把另一台旧PLC的IP设成了192.168.0.20,断电后这台旧PLC没关,一直在线。两台设备抢一个IP,导致V90的IP时通时不通。排查方法很简单,把V90单独接到电脑上,给电脑配同一网段的IP,然后ping一下V90的地址,如果能响应,说明网络没问题。如果ping的结果不稳定或者延迟明显,就要考虑是不是有别的设备占用了这个地址。
7. 最后算一笔账:这套方案替我省了多少
这一节不是广告,只是结合我实际项目的财务和技术账,给大家一个参考。S7-200 SMART加V90 PN的方案到底值不值,心里有数之后再做决策。
7.1 成本对比
如果走传统方案S7-1200加V90,PLC本体价格就比S7-200 SMART高出一截,再加上TIA Portal授权费用、Startdrive插件授权,以及可能额外增加的通信模块,总成本会明显上一个台阶。而S7-200 SMART加V90 PN,通信功能是CPU自带的,不需要增加PROFINET通信模块,只需要一个普通工业交换机。对单轴或双轴设备来说,成本优势非常明显。
7.2 开发时间对比
从我第一次接触这套组合到把第一台设备调通,算上查手册和踩坑的时间,大概三天。如果只算配置和调试,而且对流程熟悉,一天甚至半天就能完成从零到电机转动。原因是S7-200 SMART的PROFINET向导和Startdrive的报文配置都是图形化操作,不需要手工写复杂报文结构。相比用S7-1200做同样的事,省去了很多TIA Portal工程管理和库调用的学习成本。
7.3 什么情况下不建议用这套
写到这里,必须把话说全。这套方案并不适合所有场合。
如果你要做多轴直线插补或圆弧插补,S7-200 SMART的运动控制能力不够,老老实实上高端控制器。如果项目对同步精度要求极高,比如电子齿轮、追剪飞剪,S7-200 SMART只是RT通信,达不到IRT等时同步的严格指标,硬上的话同步精度很难保证。另外如果设备将来要扩展大量分布式IO节点和第三方PROFINET从站,虽然S7-200 SMART能连多个从站,但每个从站的报文和诊断管理能力都有限,不如S7-1200来得从容。
整体上,S7-200 SMART通过PROFINET控制V90 PN,是在预算、工期和控制复杂度之间取得平衡的方案。它适合中小型设备的伺服化改造,更适合那些不想被复杂工程环境绑架、希望用一台小PLC搞定单轴双轴精确定位的项目。
最后再分享一个我个人的实用习惯:调试这种PROFINET伺服项目时,不管多忙,我会先在纸上把控制字和状态字的每一位含义抄一遍贴在工控柜门上,再用宏定义把常用的16#047E、16#047F、故障复位位都写成符号名。做到这一步,后面不管是自己维护还是同事接手,都省去大量拿着说明书翻位定义的时间。这套组合我已经在多个项目里稳定运行,希望这篇文章能让你少走点弯路。