4. S7-1200/1500与S120驱动系统PROFINET通讯:S120拓扑结构、Drive-CLiQ接口、报文配置与数据交换、位置控制模式下的通讯设置

各位好,咱们今天聊点硬核的。S120驱动系统配上S7-1200或1500,通过PROFINET跑位置控制,这套组合在包装、印刷、机床行业里太常见了。我这些年调试过的项目,十有八九都离不开它。

很多人一上来就急着配报文、写程序,结果通讯不上,或者位置跑不准。为什么?说白了,你对S120的拓扑结构和通讯机制没吃透。今天我就带你把这层窗户纸捅破。

4.1 S120的拓扑结构——你得先知道线怎么连

S120不是一台单独的驱动器,它是一个系统。一个典型的S120系统包含:

  • 控制单元(CU):比如CU320-2PN,这是大脑,负责运算和通讯。
  • 功率单元(PM):负责把直流电变成交流电,驱动电机。
  • 电机模块(MM):单轴或双轴,直接连电机。
  • 传感器模块(SM):比如SMC30,用来接编码器。

这些模块之间怎么连?靠的是Drive-CLiQ。这是一种西门子专用的高速串行通讯接口,长得像RJ45,但千万别拿网线去插,会烧东西。我见过有人拿普通网线当Drive-CLiQ线用,结果通讯时断时续,查了半天才发现是线缆阻抗不匹配。

重要提醒:Drive-CLiQ电缆是专用的,带屏蔽,阻抗100Ω。普通以太网线是50Ω,混用会导致信号反射,通讯不稳定。

拓扑结构上,我习惯用星型链型。星型就是所有模块都直接连到CU上,链型就是手拉手串起来。我个人更推荐链型,省线,而且调试时好排查故障——哪个灯不亮,就知道问题出在哪一段。

S120 典型拓扑结构(链型) S7-1500 PLC PROFINET CU320-2PN Drive-CLiQ MM 1(单轴) MM 2(双轴) M M 编码器

4.2 Drive-CLiQ接口——别小看这根线

Drive-CLiQ接口,每个模块上都有,标着X100、X101之类的。它干三件事:

  1. 供电:给编码器、传感器模块供电(24V)。
  2. 通讯:传输位置、速度、电流等实时数据。
  3. 识别:模块插上去,CU自动识别型号、序列号。

嗯,这里要注意:Drive-CLiQ线缆长度不能超过100米,而且不能带电插拔。我曾经在调试时,为了省事,没断电就拔了编码器线,结果CU报了个F01910故障,编码器模块直接烧了。从那以后,我每次断电都等5分钟,等电容放完电再动手。

小技巧:如果你用S7-1500,它的PN口可以直接连到CU的X150口(PROFINET接口),不需要额外的交换机。但如果你有多个驱动器,建议加个交换机,方便以后扩展。

4.3 报文配置与数据交换——通讯的灵魂

报文是什么?说白了,就是PLC和驱动器之间约定好的数据格式。你给驱动器发什么,驱动器给你回什么,都得按报文来。

S120支持多种标准报文,比如:

报文类型 用途 数据长度(字) 典型应用
报文1 速度控制 2个字(控制字+速度给定) 简单速度控制
报文3 速度控制+转矩限幅 4个字 需要转矩限制的场合
报文5 基本位置控制 6个字 点到点定位
报文111 高级位置控制 10个字 电子齿轮、凸轮同步

我个人习惯,做位置控制时,首选报文5报文111。报文5够用,报文111更灵活。怎么选?你想想看,如果你的应用只是简单的定位,比如从A点到B点,报文5就够了。但如果你要做电子齿轮、飞剪、凸轮同步,那就得上报文111。

配置报文时,在TIA Portal里操作很简单:

  1. 在设备组态里,双击S120的驱动对象。
  2. 找到“PROFINET接口” -> “报文配置”。
  3. 选择你需要的报文类型,比如“西门子报文5”。
  4. 系统会自动分配I/O地址,比如IW64、QW64。

核心要点:报文配置完成后,PLC和驱动器之间的数据交换就靠这些I/O地址。你往QW64写控制字,驱动器就执行;驱动器把状态字放到IW64,PLC去读。就这么简单。

4.4 位置控制模式下的通讯设置——实战来了

位置控制模式下,通讯设置比速度控制多几个关键点。我一步步说:

4.4.1 驱动器的基本设置

在STARTER或Startdrive里,把驱动对象设为“位置控制”模式。这里要设几个参数:

  • p0700:命令源设为6(PROFINET通讯)。
  • p1000:速度给定源设为6(PROFINET)。
  • p29000:位置给定源设为6(PROFINET)。

这三个参数,决定了驱动器听谁的。我见过有人忘了设p29000,结果位置给定一直为0,电机纹丝不动。查了半天,原来是默认值没改。

4.4.2 PLC侧的通讯编程

在S7-1200/1500里,用MC_PowerMC_MoveAbsolute这些工艺对象指令。但底层通讯,还是靠报文。

举个例子,用报文5做绝对定位:

// 控制字:启动驱动器
"DB_S120".ControlWord := 16#047E;  // 先给一个启动命令
"DB_S120".SpeedSetpoint := 500;     // 速度给定,单位rpm
"DB_S120".PositionSetpoint := 10000; // 位置给定,单位LU(长度单位)

// 写入报文
"Output_PZD".STW1 := "DB_S120".ControlWord;
"Output_PZD".NSOLL_A := "DB_S120".SpeedSetpoint;
"Output_PZD".G1_XIST1 := "DB_S120".PositionSetpoint;

这里要注意:位置给定是32位的,报文5里占了两个字。速度给定是16位的,一个字。控制字和状态字各一个字。总共6个字,12个字节。

避坑指南:我曾经在报文5里,把位置给定和速度给定的顺序搞反了。结果电机以10000rpm的速度飞车,吓得我赶紧按了急停。记住:报文5的顺序是:控制字、速度给定、位置给定(高16位)、位置给定(低16位)、状态字、实际位置。别搞错!

4.4.3 位置单位换算

位置控制里,单位换算是个坑。S120里,位置单位是LU(Length Unit)。1LU等于多少毫米?得根据你的机械结构来算。

公式很简单:

1LU = 丝杠螺距 / (编码器线数 * 4)

比如,丝杠螺距10mm,编码器2500线,那么:

1LU = 10mm / (2500 * 4) = 0.001mm = 1微米

也就是说,你给位置给定10000,就是10mm。这个换算,我建议在PLC里做个函数,自动算,别手动算,容易出错。

4.5 调试与常见问题

调试时,我习惯先看状态字。状态字的第0位是“驱动器准备好”,第1位是“驱动器运行”,第2位是“驱动器使能”。如果这三个位都是1,说明通讯正常,驱动器就绪。

如果通讯不上,先检查:

  • PROFINET线缆是否插好?交换机灯亮不亮?
  • 设备名称和IP地址是否匹配?
  • 报文类型是否一致?PLC和驱动器必须用同一个报文。

嗯,还有一个常见问题:位置控制模式下,电机抖动。这通常是速度环或位置环参数没调好。我建议先用手动优化,让驱动器自动整定一下速度环,再微调位置环的比例增益。

我的经验:位置环的比例增益,一般从1开始试。如果电机响应慢,就加大;如果电机抖动,就减小。积分时间常数,我通常设在20-50ms之间。别一上来就调太大,容易超调。

好了,关于S7-1200/1500与S120的PROFINET通讯,特别是位置控制模式下的设置,今天就聊到这儿。拓扑结构、Drive-CLiQ接口、报文配置、单位换算,这几个点你吃透了,调试起来就顺了。下次遇到通讯问题,别急着怀疑硬件,先看看报文对不对,参数设没设对。很多时候,问题就出在这些细节上。

专注资料整理