☰
三轴V90 PN伺服+SMART200的PROFINET控制方案详解
2026/10/20 8:44:31 网站建设 项目流程

1. 为什么这个组合能成立:三轴PN总线不是非得配大PLC

前两个月接了一台老设备的改造,三根轴要换成伺服,定位精度和响应速度都比原来强一截。方案评审时同事随口问了一句:“三轴V90 PN用SMART200能不能带?”我当时愣了一下,因为大部分人脑子里还是老印象——SMART200只能发脉冲,V90 PN不是得上1200级以上的PLC才玩得转?结果我用两个周末把整套系统搭起来,调试还挺顺利,今天把这条完整的路线写出来,给想用“三轴V90 PN + SMART200”组合的同行一个参考。

先说结论:S7-200 SMART从V2.4固件开始内置了PROFINET控制器功能,可以做标准PROFINET IO主站,最多带8个从站。三台V90 PN挂在下面,完全在能力范围内。这意味着你不用加脉冲定位模块,不用为三个轴各占一路高速输出而伤脑筋,一根网线进交换机,三根网线进伺服,整个运动控制网络就建好了。

这个组合解决的是大量“中等规模点位运动”的现场问题。什么叫中等规模?就是轴数在1到8之间、运动速度要求不极端、位置精度在几十丝到几毫米级别、逻辑控制又比较多的设备。这类设备用大PLC有点浪费,用纯脉冲方案又折腾——三轴脉冲要占三路高速输出,还要考虑丢步、接线抗干扰、调试时一个个对线,遇到轴多一点的设备,光排查接线就能耗掉半天。换成PN总线之后,控制字、速度给定、状态字、实际速度都在过程数据里,编程层面干净很多。

硬件构成上,一台SMART200 CPU、三台V90 PN伺服驱动器配三台伺服电机、一台普通工业交换机就够了。注意CPU选型的时候,用继电器输出的CPU也完全可以,因为PN总线不走脉冲口,输出点只用来控制继电器、指示灯这类东西,不需要晶体管高速输出。第一次接触这个组合的人常常在这上面绕弯子,非要选晶体管型号,然后多花几百块,没必要。

再补一句选型背后的逻辑:V90 PN本身就是标准PROFINET IO设备,它不像老式的V20变频器那样要加通信模块,所有过程数据都走以太网。SMART200做IO控制器,V90做IO设备,二者之间建立起周期性的实时数据交换,这就是PROFINET RT的基本工作方式。搞懂了这个原理,后面所有组态步骤都是按这个框架来的。

2. 动手之前先把V90调明白:设备名、控制模式、报文一个都不能漏

2.1 用V-ASSIST给驱动器做初始配置

V90 PN的调试离不开官方调试软件V-ASSIST。第一次接触这个软件的人会问:V90面板上不是也能改参数吗?能改,但通信类参数、控制模式、报文类型这些复杂设置,用面板一个一个翻是灾难,用软件效率高一个量级。

操作流程不复杂:

  1. 电脑网口直接用网线接到V90 PN的以太网接口,把电脑的网卡IP临时设成和驱动器同网段。V90出厂默认IP一般不会和电脑冲突,但保险起见还是看一眼。
  2. 打开V-ASSIST,软件会自动扫描或者让你手动输入IP连接驱动器。
  3. 进去之后先看“控制模式”和“通信报文”两个页面,把控制模式设为速度控制。
  4. 把通信报文设为标准报文1,保存并下载到驱动器。

为什么要选速度控制加标准报文1?这个组合是性价比最高、最稳的。标准报文1的过程数据只有4字节输入、4字节输出:PLC发给V90的是一路控制字加一路速度给定,V90回给PLC的是一路状态字加一路实际速度。控制逻辑完全由PLC自己来跑,简单、直观、容易排查。如果你需要在PLC里做位置运算,可以选带位置实际值的报文,但那是后面的事,先把速度控制跑通再升级。

2.2 三台V90的设备名和IP规划

PROFINET通信一个特别容易踩的坑:PROFINET寻址靠的是设备名,不是IP,IP只是辅助。好多人在调试时只改IP不改设备名,或者设备名大小写差一个字符,然后PLC一直报从站找不到,折腾一晚上。

我的习惯是三台驱动器统一规划:

  • 轴1:设备名 v90_axis1,IP 192.168.0.21
  • 轴2:设备名 v90_axis2,IP 192.168.0.22
  • 轴3:设备名 v90_axis3,IP 192.168.0.23
  • SMART200:IP 192.168.0.11

设备名用有含义的英文字母加数字,别用中文,PROFINET标准对设备名的要求比IP严格,下划线、数字、字母都没问题,但不要出现空格和特殊符号。设置完设备名之后,必须在V-ASSIST里对每台驱动器执行一次重启,设备名才会真正生效,这一步经常有人忽略,结果改了半天设备名,现场还是老名字。

三台V90的IP规划顺手把交换机考虑进去。SMART200自带一个以太网口,要连三台V90、一个触摸屏、一台编程电脑,一个5口工业交换机刚好够用。注意交换机选型不要太随意,PN实时通信对交换机要求不算苛刻,但别用那种家用塑壳交换机在现场高温环境跑,偶发掉站会查到你怀疑人生。

2.3 V90侧还能顺手确认的事

V-ASSIST里能看电机铭牌参数是不是和实际电机匹配。V90驱动器和电机是配套的,但现场经常出现电机和驱动器不是同一批次的情况,驱动器的额定电流、编码器类型如果和电机不匹配,后面跑起来会莫名其妙报警。所以我在改通信参数之前,会先看一眼“电机参数”页面,确认功率、电流、编码器线数都和铭牌一致,不一致就先重新辨识一下电机,类似换上新设备后的初始化过程,几秒钟的事,但这一步能省掉后面大量排查时间。

3. SMART200侧PROFINET组态:固件版本不对,一切白搭

3.1 固件和软件版本的前置检查

SMART200不是所有版本都能玩PROFINET,这是很多人忽略的点。CPU固件版本必须到V2.4及以上,软件上的组态工具也要配套。旧固件的CPU需要先升级固件,升级固件本身不复杂,但耗时间且有一定风险,库存的老CPU尤其要提前确认。

检查方法很简单:打开软件连接PLC之后,双击CPU节点看固件版本号。如果版本太老,可以通过以太网升级,但升级过程中千万别断电,断电变砖的案例不是没有。在项目开始之前就检查固件版本并完成升级,比在现场干到一半再想办法强得多。

另外,软件版本太低的话,工具菜单里根本找不到PROFINET向导入口,这不是你操作错了,是软件太旧,把编程软件升级到对应版本即可。这一点写出来提醒大家,别拿着老版本软件对着菜单找半天。

3.2 GSD导入和从站添加的关键步骤

SMART200组态PROFINET靠的是向导功能,路径在软件的工具菜单里。进入向导后按这个思路走:

  1. 设置PLC本体在PN网络里的角色和IP地址,选“IO控制器”角色。
  2. 添加V90从站。如果设备列表里没有V90,就从官方渠道下载对应版本的GSD文件,然后在向导里导入。GSD文件本质上是设备的说明书,里面描述了设备支持哪些报文、输入输出长度是多少,没有它PLC不认识这个设备。
  3. 在向导里给每台V90分配设备名和IP地址,设备名要和V-ASSIST里设置的一致,一个字符都不能差。
  4. 设置每个从站的输入输出起始地址,系统会自动分配,也可以手动指定。
  5. 设置更新周期,也就是PN总线的刷新时间,我一般选8ms。

这里重点说下GSD文件版本的匹配问题。V90的GSD文件有多个版本,对应不同的驱动固件,导入GSD之后如果发现输入输出长度和驱动器实际配置的报文对不上,十有八九是GSD版本和V90固件版本不一致。遇到这种情况,先更新GSD或者升级V90固件,不要硬往下做。

3.3 IO地址规划:用表格管住三个轴

我在做三轴项目时,会给每个轴做一张地址规划表,贴在电柜门上,这张表在现场调试时救命用。以标准报文1为例,每个轴的输入区和输出区各占4个字节:

轴号设备名PLC输入区起始PLC输出区起始报文类型
轴1v90_axis1IB100QB100标准报文1
轴2v90_axis2IB104QB104标准报文1
轴3v90_axis3IB108QB108标准报文1

地址不是死的,向导里分配成什么就以什么为准,我习惯从100开始留出一段整数区,这样查看监控表的时候,三个轴的地址一眼就能扫出来。如果不做规划,向导自动分配的地址往往是乱的,调试时老是看错轴的数据,特别耽误事。

组态完成后编译、下载。下载之前确保三台V90都上电并且网络连通,下载之后到监视状态看一眼“设备列表”,三个从站应该都显示在线。如果哪个从站显示离线,直接跳到最后一部分的排查清单去定位。

4. 过程数据区(PZD)才是控制的灵魂:控制字、状态字、速度换算

4.1 控制字的启动时序:先复位封锁,再给运行命令

很多第一次用PROFINET控制伺服的兄弟,拿到控制字位定义表就直接往输出区写了,结果伺服纹丝不动。这里有一个看不见的时序逻辑。

PROFIdrive标准里,控制字STW1不是简单的一位使能,而是有优先级和状态机的。我给V90常用的控制字是这两个:

  • 运行控制字:16#047F,相当于把ON/OFF1、OFF2复位、OFF3复位、运行使能全部置1。
  • 停止控制字:16#047E,相当于发出OFF1斜坡停车命令。

关键在于启动顺序。如果一上来直接写047F,有些驱动器状态机还没准备好,命令无效。稳妥的启动序列是:

  1. 先写047E,让控制字处于一个明确的停止状态。
  2. 等待100到200毫秒,期间不断读状态字。
  3. 状态字确认无故障、无OFF2/OFF3封锁之后,再写047F,发出运行命令。

这套时序在程序里用定时器或者扫描周期计数来实现,别看就多两步,能避免一大批“明明写了使能为什么不动”的怪问题。

4.2 速度给定值的换算:0x4000就是100%

速度给定值的格式是标准化的,V90收到的速度给定不是直接填的转速数值,而是按比例换算的标准化值。PROFIdrive标准里,100%速度用十六进制4000来表示,也就是十进制16384。

举个例子,如果V90的参考速度P2000保持默认约3000r/min,那么:

  • 速度给定 0x4000 = 3000r/min
  • 速度给定 0x2000 = 1500r/min
  • 速度给定 0x1000 = 750r/min

换算公式就是:给定值 = (目标转速 ÷ 参考转速)× 0x4000。1500r/min算出来就是0x2000。

这里有个细节容易错:负方向的速度不是把数值写成负的,而是用二进制补码表示。想要电机反转,速度给定值就是负值对应的补码。比如-1500r/min对应的给定值就是用0x4000减0x2000?不是,补码换算不是这样简单减,正确做法是用PLC的数学指令算出负数,再作为16位整数写到速度区。我在程序里直接用双整数运算,算完之后把低16位传给速度给定地址,正负号自然就按补码格式进去了。如果你是自己手动填数值,一定要先搞清楚那个数在16位补码下对应的是正还是负,方向反了是最常见的事故原因之一。

4.3 状态字的联锁价值:控制之前先读反馈

状态字ZSW1的每一位都有含义,但我平时只重点用几位:

  • bit0:准备就绪
  • bit1:待机状态
  • bit2:运行使能
  • bit3:故障
  • bit6:禁止接通

在程序里,我坚持一个原则:写控制字之前,必须先读状态字,并且用状态字做联锁条件。比如驱动器报故障后,你没确认故障直接写运行命令,是不生效的,必须先发故障确认命令,再启动。状态字bit3是1的时候,程序就应该封锁掉所有使能输出,同时把触摸屏上的故障指示灯点亮。

很多新手为了省事,不管状态字直接写速度,控制字也只是简单赋值,一旦现场出问题,驱动器和PLC各自说各自有理,排查起来无从下手。正确的做法是把状态字读进来,做位判断,形成一张联锁表。哪怕只是最简单的一条“状态字bit3=0 才允许写047F”,都能挡住一半的启动失败问题。

5. 三轴程序框架:子程序复用、启停优先级、安全互锁

5.1 每个轴一个子程序,逻辑结构保持一致

三轴的控制逻辑如果全部堆在主程序里,程序不仅臃肿,而且改一个轴要通篇找。我的写法是建三个子程序,分别叫轴1控制、轴2控制、轴3控制,每个子程序内部结构完全一样,只是地址和标志位不同。

每个轴子程序内部按这个顺序组织:

  1. 安全联锁判断:急停回路、状态字故障位、硬件限位。
  2. 启停逻辑:启动沿置位运行标志,停止沿复位运行标志。
  3. 控制字输出:根据运行标志和联锁状态写控制字。
  4. 速度给定输出:运行标志有效时写速度值,停止时清零。
  5. 状态字采集和后处理:把状态字缓存到中间变量,供触摸屏显示和逻辑判断。

这样设计的最大好处是:现场调试轴1时发现的问题,可以快速同步到轴2和轴3的程序里,三个轴的程序保持完全一致,不会出现轴1和轴2启动逻辑不一样这种低级错误。

5.2 程序里如何写启停和急停:顺序不能乱

下面用接近STL风格的描述写一下轴1的核心逻辑骨架,实际项目里你需要把变量地址换成自己定义的符号名:

// 1. 安全联锁:急停信号为常闭触点,状态字无故障 LD 急停输入 A 轴1状态字无故障 = 轴1安全允许 // 2. 启动停止:沿触发置位/复位运行标志 LD 轴1启动按钮 EU S 轴1运行标志 LD 轴1停止按钮 EU R 轴1运行标志 // 3. 运行控制字:安全允许且运行标志成立 -> 写16#047F LD 轴1安全允许 A 轴1运行标志 MOVW 16#047F, 轴1控制字输出 // 否则写16#047E LDN 轴1安全允许 MOVW 16#047E, 轴1控制字输出 LDN 轴1运行标志 MOVW 16#047E, 轴1控制字输出 // 4. 速度给定:运行标志有效时传送,否则清零 LD 轴1运行标志 MOVW 轴1速度给定中间值, 轴1速度字输出 LDN 轴1运行标志 MOVW 0, 轴1速度字输出

注意一个关键点:零速给定和OFF1停车的区别。写0速度只是让电机速度给定归零,驱动器仍然处于使能状态;停止控制字是发出停车命令,驱动器会按斜坡减速并进入待机状态。两种操作在逻辑上要分开,不要笼统用一个“停止”就把控制字和速度一起清零,那样表面看着停了,实际驱动器还挂在使能上,下次启动时状态机容易出错。

5.3 三轴互锁和急停回路:PLC里做联锁,硬件上做兜底

三轴设备最怕一个轴还在高速运行,另一个轴已经撞到极限。所以在程序里每个轴都要读另外两个轴的状态做互锁,或者至少做这样一条规则:任何一个轴出现故障,所有轴的控制字全部切到停车状态,速度给定全部清零。这个逻辑用主程序里的一个全局标志来实现,任何一个轴子程序置了故障标志,主程序就把所有轴的安全允许都断掉。

急停的建议是硬接线优先。我见过不少项目把急停只做到PLC程序里,万一PLC扫描周期正好卡在某个状态,或者有故障时候PLC已经不正常工作了,急停就废了。所以急停按钮应该同时切断伺服驱动器的使能回路或者控制电源,PLC程序里的急停只是作为第二道防线。PN控制毕竟是一个周期通信过程,从物理信号到驱动器实际断电之间是存在延时的,硬接线兜底不是可选项,是必选项。

6. 调试过程中踩过的坑和排查方法

6.1 从站掉线:先查设备名,再查IP,最后查交换机

三台V90明明是好的,SMART200的设备列表里却有一个或两个红叉,这是最常见的故障。我的排查顺序是:

  1. 用V-ASSIST分别读出每台V90当前的设备名,和SMART200向导里配置的设备名逐一比对,差一个字符都不行。这里要特别提醒:设备名里的大小写字母是敏感的,V90侧配的是大写,PLC侧配的是小写,照样连不上。
  2. 确认所有设备的IP在同一网段,并且没有冲突。把编程电脑的网口接到交换机上,用Ping命令一个个Ping V90的IP,能通说明物理链路和IP层面没问题。
  3. 检查交换机和网线。现场经常出现网线水晶头压得不牢、交换机端口松了的情况,PN通信时断时续比完全断还要难查,只能换根网线试。我建议三轴项目直接买质量好一点的工业网线,别贪便宜。

还有一点:SMART200的程序下载操作会短暂中断PN通信,下载完后大约需要几秒钟重新建立连接,第一次看到从站离线不要慌,等十几秒再看。

6.2 启动不了:状态字会告诉你答案

写完了控制字047F,电机纹丝不动,这是第二个高频问题。这时候第一时间去看状态字,而不是反复去改控制字。

状态字如果显示bit6=1,说明驱动器处于接通禁止状态,通常是OFF2或OFF3还没复位,也就是说控制字里bit1或bit2还是0。有的程序写法是先写了047F,但之前某个时刻写过0000,驱动器内部还锁着OFF2,这时候要先把OFF1/OFF2/OFF3这些位摆正。

状态字如果显示bit3=1,驱动器报故障了,要先确认故障原因并清除故障。清除故障的方法是控制字bit7故障确认位置1,然后回到0。这个动作要和其它控制位一起配合,不要单独置bit7就完事。

状态字如果一切正常但速度给定就是不出来,请检查你的速度给定值到底进了哪个地址。我见过一个人监控表里看着QW区的值是有的,但V90实际收到的还是0,最后发现是向导里输出区的起始地址和程序里写的地址不一致,程序写到了另一个区间去了。所以调试前先把“向导里的地址分配”和“程序里的符号表”彻底对一遍,这比瞎猜快得多。

6.3 方向反了、速度不稳、定位不准的几种可能

方向反了是最气人的问题,因为程序逻辑对不对完全看不出来。排查时先看V90侧有没有设置旋转方向,再看电机三相动力线的相序。如果调程序之前已经确认过一次方向,那多半就是相序被改过或者接反了。用V-ASSIST里的点动功能直接测试,如果点动方向是对的,问题就在PLC发送的速度给定值:检查速度给定区数值的补码关系,负速度是不是表达正确。

速度不稳到不如说是给定速度抖动,大多数和PID没关系,而是PN的更新周期和PLC的扫描周期叠加导致给定值更新不均匀。如果PLC的程序很长,一个扫描周期达到几十毫秒,速度给定值就可能出现阶梯状变化。解决办法一是把速度给定值计算放在一个单独的定时中断子程序里,保证刷新频率稳定;二是把PN更新周期适当放宽到8ms或者16ms,不要让总线和扫描周期互相抢时间。

定位不准的问题就要看你的位置反馈从哪来。如果用的是V90内置编码器但读的是标准报文1,那是拿不到位置信息的,位置判断只能靠外部接近开关或者编码器。如果确实需要精确位置闭环,就不要用标准报文1硬撑,直接切换到带位置反馈的报文或者在V90内部做定位,后面章节详细说。

7. 能跑起来之后,把这个组合的边界想清楚

7.1 什么时候必须用V90内部定位或更高等级PLC

SMART200加V90 PN这套组合在“速度控制”模式下非常稳,但它不是万能的。如果你需要的不是简单的速度启停,而是要求每个轴精确走到绝对坐标、重复定位精度高,那就要注意了:标准报文1里没有位置反馈,PLC不知道伺服现在在哪,不可能在PLC里做高精度的位置闭环。

这种情况下有两条路。

第一条路:V90进入内部定位模式,使用位置控制相关的报文,由驱动器自己完成位置闭环。你只需要把目标位置、速度、加减速时间传给驱动器,驱动器自己规划运动曲线。这比PLC做位置闭环靠谱,但对SMART200来说,这种报文的过程数据结构比标准报文1复杂得多,而且SMART200没有现成的运动控制功能库,需要自己拼PZD,工作量不小,调试起来也费劲。

第二条路:直接用带运动控制库的PLC型号,配合对应的伺服库函数,一条指令就能做相对定位、绝对定位、回原点,程序直观,后期维护成本低。如果你的项目点位多、轴联动多、以后还可能加轴,就别在SMART200上死磕了,早点换平台是划算的。

我个人的判断标准是:轴数不超过4个、运动路径简单、点到点定位为主,SMART200加V90的内部定位模式还可以接受;如果超过这个复杂度,直接上高一级的PLC平台,省下来的编程调试时间,早就把硬件成本赚回来了。

7.2 三轴独立控制没问题,联动插补别指望

三轴V90 PN加SMART200,做三轴独立控制,比如三台机构各自以不同速度运行、各自停车,这是一点问题都没有的。但如果你的设备要求三轴联动,比如走直线插补、圆弧插补,甚至电子齿轮同步,SMART200这个平台的算力和PN通信周期都很难满足要求。SMART200的扫描周期通常是毫秒级别,PN周期再算上,多轴协调的实时响应不够,硬做出来也是生硬顿挫、精度差,出了问题还难查。

所以在方案阶段就想清楚:这台设备是“三个独立运动轴”,还是“一台三轴联动的运动机构”。前者用这套组合很舒服,后者建议直接上带专用运动控制功能的平台,或者用伺服本身的内部同步功能。别指望SMART200去扛插补,这是选型层面的经验,不是能不能编出来的问题。

7.3 现场维护的一点个人习惯

这套系统维护起来不复杂,但有几个习惯我从开始做就一直坚持,现在也推荐给大家。

一是V90的参数一定要在V-ASSIST里做完整备份,导出的参数文件按轴号命名存好,发生驱动器故障需要更换时,直接导入备份参数,再改一下IP和设备名就能换血复活。不备份的话,新驱动器要重新设置一遍,几十分钟起步。

二是电柜里贴一张地址表,把三个轴的设备名、IP、PLC地址、报文类型标清楚。现场调试时电气工程师不一定是你,他看一眼地址表就能上手查,比翻电脑里的程序方便太多。

三是每台V90的PN网线接头要固定好,走线要避开动力电缆,特别是伺服电机动力线这种大电流干扰源。PN通信偶尔丢一帧问题不大,但如果线缆紧贴着动力线走,干扰积累到一定程度,掉站的怪问题就会出现,而且是间歇性的,最难查。

最后补一句我自己踩出来的经验:调试过程中修改V90通信相关参数后,一定要记得把驱动器断电重启一次,确认参数真正生效再往下做。很多看似玄学的“刚才还行现在不行了”,根源就是参数没生效就着急测试,自己和自己打架。把这套流程理顺,三轴V90 PN加SMART200的组合,完全可以在中小型设备上扛起大梁。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询