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上,链型就是手拉手串起来。我个人更推荐链型,省线,而且调试时好排查故障——哪个灯不亮,就知道问题出在哪一段。
4.2 Drive-CLiQ接口——别小看这根线
Drive-CLiQ接口,每个模块上都有,标着X100、X101之类的。它干三件事:
- 供电:给编码器、传感器模块供电(24V)。
- 通讯:传输位置、速度、电流等实时数据。
- 识别:模块插上去,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里操作很简单:
- 在设备组态里,双击S120的驱动对象。
- 找到“PROFINET接口” -> “报文配置”。
- 选择你需要的报文类型,比如“西门子报文5”。
- 系统会自动分配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_Power、MC_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接口、报文配置、单位换算,这几个点你吃透了,调试起来就顺了。下次遇到通讯问题,别急着怀疑硬件,先看看报文对不对,参数设没设对。很多时候,问题就出在这些细节上。