做过收放卷、张力控制项目的朋友应该都清楚,汇川AM401-cpu1608TN这套组合在中小型设备里出场率相当高。它把EtherCAT总线主站、模拟量采集、逻辑控制集成在一个CPU里,用来拖伺服驱动加张力传感器,正好覆盖了卷绕、印刷、线缆、轧制这些典型应用。这篇文章我就从一张白纸开始,完整过一遍硬件选型、接线、参数配置、程序框架和调试排障,把我实际踩过的坑和验证过的做法都放进来,给后面接手类似项目的兄弟一个能直接照着干的参考。
先说清楚这套系统能干什么:AM401通过EtherCAT总线带伺服驱动,完成速度或位置控制;张力传感器通过模拟量模块把实时张力反馈给PLC;PLC内部做PID运算后输出速度修正量给伺服,实现恒张力闭环控制。整个过程中涉及总线配置、伺服参数整定、模拟量标定、PID调试等几个关键技术点,适合刚接触汇川中型PLC或者第一次做张力控制项目的人参考。
1. 项目背景与整体方案设计
1.1 为什么用AM401-cpu1608TN
汇川AM401-cpu1608TN属于AM400系列中型PLC,定位在小型机(H系列/Easy系列)和大型高端机型之间。从具体硬件特性来看,它最值钱的地方有三块:一是内置EtherCAT主站,可以带几十个从站伺服;二是本机集成若干路模拟量输入输出,省掉了部分扩展模块;三是编程软件是InoProShop,底层基于Codesys平台,用结构化文本、梯形图、功能块都行,对熟悉Codesys的人几乎没有学习门槛。
我当初选它还有一个实际原因,就是项目里既有高速总线伺服,又需要采集模拟量张力信号,还希望触摸屏走以太网。如果用小型机,往往EtherCAT和模拟量扩展模块占了槽位,剩下资源比较紧张。AM401-cpu1608TN的以太网口项目和触摸屏走Modbus TCP通了以后,程序里就留一个Socket或Modbus服务器功能块,省事很多。
1.2 系统硬件组成与通讯拓扑
一个典型的张力控制工位,硬件上通常包含:PLC主机AM401-cpu1608TN、伺服驱动器(我这里用SV660N系列)、伺服电机、张力传感器、变送器、触摸屏、开关电源和若干继电器断路器。通讯拓扑如下:
- PLC与伺服之间走EtherCAT,网线直连或通过交换机级联,周期最快可以做到1ms以内,实际跑2ms、4ms都没有压力;
- PLC与触摸屏走网线,Modbus TCP或者厂商私有协议均可;
- 张力传感器信号经变送器,输出0~10V或4~20mA进PLC模拟量输入通道;
- 若现场还有变频器,可以用RS485走Modbus RTU,但注意同一时刻通讯负担不要过重。
从整机布局角度看,强电柜和弱电信号线必须分开走线槽,张力传感器的屏蔽线一定要单端接地,这是我后来被干扰折磨得出的最深刻教训。
1.3 方案对比:为什么不选Easy320或H5U
很多朋友会问,现在Easy320和H5U也很热门,为什么不用它们做张力控制。Easy320确实是性价比很高的选择,但它的模拟量扩展能力、EtherCAT带轴数量和程序容量在大型张力控制上会紧张一些。H5U是支持EtherCAT的,编程风格接近小型PLC,如果项目比较简单、轴数不多,用H5U完全没问题。
但本项目用AM401还有一层考虑:后期可能要扩展视觉、追标、凸轮曲线等功能,AM401系列在Codesys平台下做这类高级运动控制更顺手,且CPU1608TN算力够用,不需要再换平台。如果你只是单轴张力控制、不考虑后期扩展,那Easy320或H5U会更省钱;如果项目有持续演进需求,AM401不会让你被硬件天花板卡住。
2. 硬件接线图与现场布线要点
2.1 主回路与控制回路接线
先说主回路。AM401-cpu1608TN供电一般为24V DC,最大功耗要看具体型号,建议用100W以上的开关电源单独供电,不要和伺服主回路共用一路电源,避免伺服启动瞬间压降导致PLC重启或模拟量跳变。控制回路里,24V要给PLC、触摸屏、传感器变送器、伺服控制电等分区配电,每路加保险丝或断路器。
主回路典型接线如下:
- 三相或单相交流电进伺服驱动器RST或L1L2,按驱动器规格接;
- 伺服驱动器U/V/W接伺服电机对应端子;
- 编码器线插CN2或专用口,注意别插反,很多伺服驱动器的编码器接口虽然防呆,但大力出奇迹之后针脚歪了很难查;
- 伺服驱动器控制电一般也是24V DC,由PLC侧给过来,用于保持通讯和参数运行。
PLC这边,电源端子标注比较明确,L+/M或者24V/0V,正负极别接反。AM401的输入是漏型/源型兼容,具体按你接的传感器类型选公共端方式,这里建议统一用漏型接法,很多国产传感器和按钮默认也是这个逻辑。
2.2 伺服驱动与电机接线
以SV660N为例,接线主要是这些环节:
- 主回路电源进线:R、S、T,PE接地,建议用4平方以上的线,具体看驱动器规格;
- 电机动力线:U、V、W,和电机的U、V、W对应,相序错误会导致电机抖动或报故障;
- 编码器线:SV660N通常是DB接口或者网口形式,编码器线必须用屏蔽双绞线,屏蔽层在驱动器端接地;
- 抱闸线:如果电机带抱闸,需要单独接24V抱闸电源,注意抱闸线圈是感性负载,必须并在续流二极管或压敏电阻,否则触点拉弧严重。
从实际经验看,动力线、编码器线、控制线三者在同一个线槽里走是导致编码器干扰报警的主要原因。我一般让动力线和编码器线相隔至少20cm,实在无法避免就加金属隔板。伺服上电后报编码器相关报警,先别怀疑编码器坏了,大概率是接线或干扰问题。
2.3 张力传感器与模拟量模块接线
张力传感器常见的输出是毫伏级信号,必须经过变送器放大成标准信号。本项目用0~10V模拟量输入通道,接线如下:
- 变送器供电:24V DC正负;
- 传感器信号+接变送器信号输入+,信号-接信号输入-;
- 变送器输出+接PLC模拟量输入AI+,输出-接PLC模拟量输入AI-;
- 屏蔽线在PLC侧单端接地。
如果传感器本身就是0~10V或4~20mA输出,可以跳过变送器直接进PLC,但依旧建议加隔离器或确保传感器供电与PLC供电同一个稳定源。对于张力信号这种满量程可能只有几十公斤、但精度要求到几十克的应用,信号线远离变频器和伺服动力线是基本操作,不然PID算出来的张力值本身就不准,闭环就是空中楼阁。
2.4 接线避坑清单
- PLC的模拟量输入通道不要和传感器变送器共用一个24V开关电源输出端口,尽量分路;
- 屏蔽线单端接地,两端都接地反而会形成地环路,低频干扰更严重;
- 网口接线用带屏蔽的工业以太网线,水晶头要压接到位,EtherCAT掉站的故障里有相当比例就是网线接触不良;
- 动力线去吃功率,控制线去传信号,这个观念要从画图阶段就刻进脑子里;
- 防止接线错误导致烧通道,模拟量接反常见后果是读数为异常满偏或零偏,一般不会烧毁,但如果把24V直接引入模拟量端子,那基本就是通道报废。
3. 从零开始配置伺服驱动与张力传感器
3.1 软件准备与新建工程
配置AM401必须用InoProShop,这个软件官网可以下载,安装过程没太多坑,但要注意版本和PLC固件匹配。最好选和固件版本接近的软件版本,否则在线连接时可能提示固件不匹配。自动化软件这个领域,版本对齐是省时间的头等大事。
新建工程时选对PLC型号:AM401-CPU1608TN,确认IO点数和固件版本。工程建好后,左侧设备树里会有PLC节点,右键可以添加EtherCAT主站、从站设备、模拟量扩展模块等。这些操作和Codesys几乎一致,如果你是Codesys转过来的,可以直接上手。
3.2 EtherCAT主站扫描与伺服轴参数配置
伺服配置是整套系统最关键的一步。在设备树里右键添加EtherCAT主站,然后在主站下右键扫描从站,前提是伺服驱动器已经上电,且网线连接正常。扫描后软件会列出在线设备,直接应用即可。如果扫描不到,优先检查网线、驱动器的站号拨码、伺服是否处于通讯就绪状态。
扫描完成后,SV660N会出现在从站列表里,这时需要做几件事:
- 分配站号,建议和实物拨码一致,方便日后维护;
- 导入或配置伺服配置文件(ESI文件),SV660N的ESI文件在汇川官网或驱动器的资料包里都有,没有配置的话伺服无法识别为驱动类设备;
- 在PLCopen轴管理里创建轴实例,把EtherCAT从站映射到轴上,这样程序里才能用MC_Power、MC_MoveVelocity这些功能块控制它。
伺服本身的参数,比如电子齿轮比、方向取反、最大转速、加减速时间,可以通过InoProShop在线写入,也可以先在伺服面板或调试软件里设好。我的习惯是先在伺服调试软件里把基础参数调通,再回PLC侧做总线控制,这样排查问题时更容易定位是伺服还是PLC的问题。
伺服工作在EtherCAT模式下,关键参数一般有这几项:
- 运行模式:速度模式或位置模式,按项目需要选;
- 电子齿轮比:决定指令单位与电机旋转角度的换算关系,常用1:1,然后通过MC_FeedOverride或速度给定处理;
- 方向参数:实际旋转方向和程序预期相反时,直接改方向取反或交换编码器方向;
- 限位与急停:这些必须在伺服侧或硬接线实现,不能只依赖PLC逻辑。
3.3 模拟量通道采集与张力信号标定
张力传感器通过变送器输出0~10V进AM401模拟量输入通道。在InoProShop里,模拟量采集通常有两种方式:
一种是在设备树里组态模拟量模块,得到原始值(通常是0~27648或者0~65535,看模块位数),再在程序里做量程变换;另一种是用系统自带的模拟量通道变量直接读取工程值。
标定是张力传感器调试中最容易被跳过但最要命的环节。假设传感器量程0~50kg,变送器输出0~10V,AM401内部采样值0~27648,那么换算公式为:
张力实际值 = 采样原始值 / 27648 * 50kg
但这只是理想线性换算。实际情况中,传感器在零点和满量程附近往往有非线性,加上机械安装预紧力的存在,传感器空载时输出可能不是严格的0V。所以一定要做两点或三点标定:先让张力辊空载,记录当前原始值作为零点偏移;再挂标准砝码或者用标准拉力计加载,记录满量程原始值。把这两个点写在PLC参数里,程序里按实际斜率和偏移量计算张力值,而不是直接用理想公式。
我项目里也碰到过传感器信号本身比较小、变送器增益不稳的情况,后来在模拟量通道加了软件滤波(一阶低通),滤波时间常数大概50~200ms,既保留了响应速度又能有效抑制机械振动带来的高频毛刺。
3.4 张力-速度PID控制程序示例
张力闭环控制的逻辑说起来很直白:设定一个目标张力,读取当前实际张力,两者偏差送PID,PID输出作为伺服速度修正量,叠加到运行速度上控制伺服。需要注意,在收放卷这种变径场合,控制对象是一个典型的积分环节,PID参数和卷径补偿往往需要做额外处理,否则张力波动很难压下来。
下面是一段ST语言示例,展示程序框架:
VAR bEnable : BOOL; rSetTension : REAL := 10.0; // 目标张力 kg rActTension : REAL; rTensionFb : REAL; // 滤波后实际张力 rPIDOut : REAL; rBaseSpeed : REAL := 300.0; // 基础线速度 mm/s rSpeedRef : REAL; PID_Tension : PID; // 调用库中的PID功能块 END_VAR // 张力信号滤波 rTensionFb := rTensionFb + (rActTension - rTensionFb) * 0.1; // PID计算 PID_Tension(SetValue := rSetTension, ActualValue := rTensionFb, Output => rPIDOut, Gain := 0.5, // 比例增益 Ti := 200, // 积分时间 ms Td := 0); // 微分一般不用或很小 // 速度给定 = 基础速度 + PID输出 rSpeedRef := rBaseSpeed + rPIDOut; // 伺服运行 MC_Power(Enable := bEnable, Status => ...); MC_MoveVelocity(Axis := Axis1, Velocity := rSpeedRef, Acceleration := 100, Deceleration := 100, Execute := bEnable);这段代码只是简化示意,实际项目里PID功能块的接口、库版本写法可能略有差别。有一点要提醒:PID先调P,再加I,D尽量不给。张力对象本身滞后不算大,D给大了反而放大噪声,导致伺服速度抖动。我常见的做法是P给0.3~1.0,I给100~500ms,然后根据实际张力曲线慢慢调。
4. 现场调试实录与常见问题排查
4.1 EtherCAT通讯不上与伺服掉线
这个问题出现频率极高,特别是在第一次上电配总线的时候。现象一般有两种:
一种是扫描从站时干脆扫不到。排查顺序是:伺服控制电有没有上、站号拨码是否正确、网线是否插在主站和从站的正确端口(有人把伺服两个网口插反了,导致链路不通)、电脑防火墙有没有拦InoProShop。扫不到时还可以用伺服自带的调试软件确认驱动器本身通讯正常,再回PLC侧查。
另一种是运行一段时间后伺服从站掉线,报警是总线同步丢失或从站超时。这时候重点看网线和水晶头质量,工业现场震动大,劣质网线很容易接触不良;再看伺服驱动器和PLC之间的接地是否良好,如果接地电位差大,EtherCAT信号质量堪忧。有条件的话在InoProShop里看从站的丢帧计数和误码率统计,这是定位总线不稳定最直接的手段。
4.2 张力波动大与信号干扰
张力值在触摸屏上频繁跳动,闭环跟随效果差,这是做张力项目最常见的痛点。先把PID摘掉,直接看模拟量采样值的变化,如果采样值本身就乱跳,问题大概率在传感器、变送器或接线环节,和PID无关。
检查顺序建议:先确认传感器安装是否受力均匀,有时候张力辊两端的轴承卡滞,传感器读到的是波动的机械力;再确认变送器电源是否稳定,可以用万用表看输出电压毛刺;然后看模拟量通道是否采集到较多的工频干扰,给通道加滤波能缓解一部分,但治标不治本,还是要从接线上把干扰源切断。
另外还有一个容易忽视的问题:机械共振。如果张力波动频率和设备的机械固有频率接近,无论怎么调PID都会震荡。这时候可以考虑加陷波滤波器,或者调整机械结构、降低速度环增益,效果往往比死磕PID参数要好。
4.3 伺服报警代码速查
SV660N常见的报警代码和处理思路如下,实测比较管用:
| 报警代码 | 含义 | 处理思路 |
|---|---|---|
| Err.410 / 420 | 过流或过载 | 检查电机动力线相序、负载是否卡死、加减速时间是否过短 |
| Err.431 | 过压 | 检查输入电源电压、制动电阻是否接入,再生能量大时考虑外接制动电阻 |
| Err.511 | 编码器通讯异常 | 检查编码器线是否接触好、屏蔽层是否接地 |
| Err.710 | EtherCAT通讯丢失 | 检查网线、从站配置、主站是否进入运行态 |
| Err.830 | 位置偏差过大 | 检查机械卡滞、电子齿轮比设置、速度环增益 |
现场处理报警时,先在伺服面板或调试软件里看报警发生时刻的电流、速度、母线电压等历史记录数据,这对判断是电气原因还是机械原因非常有帮助。有些报警在复位后能消除,但根本原因没解决,过一会儿又会出现,千万不要靠反复复位硬撑,要按表逐个排查原因。
4.4 上电顺序与下电逻辑这些细节坑
经验越足越会发现,出问题往往不是大环节,而是上电下电顺序这种细节。我建议的启动顺序是:先合主回路给伺服和变频器送电,等母线电压稳定后,再给PLC和触摸屏送控制电,让PLC程序启动后去初始化EtherCAT主站和伺服。如果反过来先给PLC送电再给伺服送电,虽然多数情况下也能恢复通讯,但偶尔会出现总线主站初始化失败或首帧通讯不完整,运行时更容易埋下隐患。
下电时顺序相反:先让程序里伺服轴停止、主站进入非运行态,再断开伺服控制电,最后断开主回路。如果在伺服高速运行中直接断总闸,下次上电时可能出现编码器多圈数据丢失或位置原点漂移。
还有一点要注意,AM401断电保持区和普通寄存器要提前规划。张力设定值、PID参数、标定零点这些关键数据,应该放到断电保持区,否则设备重启后所有参数归零,现场操作人员会以为设备坏了。标定数据建议单独做一个参数区,程序启动时读出来用,调试时改完参数记得触发保存。
最后说说我在实际调试中的体会:张力控制这类系统,最花时间的不是编程和接线,而是机械和电气配合的调优。伺服参数、PID参数、机械刚度、传感器安装,每一项都可能成为系统性能的瓶颈。做项目时一定要预留足够的调试时间,并且把每一步的测试数据记录下来。你会发现,当你把干扰问题从源头解决后,PID的调参过程会比想象中顺利得多。希望这篇实战记录能给你省下几个熬夜的夜晚。