简介:轮胎生产线胶料定长裁断系统的PLC编程实例,面向PLC编程、伺服控制与工业自动化技术人群,聚焦子午线轮胎胎面定长裁断工序中精度与效率提升问题。资源包共1个PDF文件,大小约97KB,以文字配图示方式完整呈现系统机械构成、Profibus单主站网络拓扑、西门子S7-315-2DP与力士乐CLM/DKC伺服控制器的软硬件架构。目前已有317人学习下载。内容涵盖裁断系统运行流程、超声波检测与绝对位移编码器反馈、PLC与位置控制器通信、裁断伺服控制程序及监控界面设计等,并给出不低于30m/min运行速度、定长剪切误差小于2‰等关键指标,适合从事轮胎设备或类似定长裁切项目开发的工程师参考。
1. 定长裁断是轮胎产线里最容易被低估的“卡脖子”工位
轮胎生产线上,胶料从开炼机或挤出机出来之后,第一道考验就是被裁成符合工艺要求的定长胶片。这个动作看起来只是“到了长度就切一刀”,但真正跑起来你会发现:胶料是弹性体,物理上会拉伸和回缩;产线速度不是恒定的,开炼机出胶速度受前道工序波动影响;裁刀的响应时间、编码器的安装偏心、变频器的干扰都会让成品的实际长度漂移。裁短了,下一道工序拼接不够;裁长了,材料浪费和硫化后接头超差一起找上门。
这个标题里的“定长裁断系统”,就是把测长编码器、高速计数器、裁断执行机构和触摸屏配方参数串成一个闭环的 PLC 控制方案。本文面对的读者是已经有 PLC 基础、想完整走一遍“从测长原理到裁断精度调优”的工程师,这比单纯的梯形图例程更有迁移价值,因为下一台设备可能不是裁断机,而是同样用测长脉冲做定长控制的打孔、切断、叠片设备。
2. PLC 测长与裁断执行机构的选型,先于程序存在的边界条件
2.1 测长脉冲的来源:编码器与计米轮怎么选
定长裁断的第一前提是“长度怎么变成 PLC 能读的脉冲”。常见做法是安装一个旋转编码器,用橡胶轮或齿轮压着胶料表面,胶料往前走带动编码器转,编码器每转一圈输出固定的脉冲数,PLC 用高速计数器数脉冲,再用“减速比 × 轮径周长 / 每转脉冲数”换算出当前行进长度。
编码器和计米轮选型里有几个容易出问题的点。先说分辨率,一个 600 线的增量型编码器经 4 倍频后每转可得 2400 脉冲,若计米轮周长是 240mm,每个脉冲对应 0.1mm。这个精度对轮胎胶料裁断是够用的,但要注意编码器的机械安装——如果用齿轮啮合或者摩擦轮,轮径磨损后减速比会变,所以多数系统里会把“轮径修正系数”做成触摸屏上可调的参数,而不是写死在程序里。
然后是编码器类型,增量型编码器断电后丢失位置,需要找原点和零位;绝对值编码器贵一些,但在断料、停机、人为转动手轮后不用重新回原点。我的建议是:如果整条产线经常有人手动盘车或穿料,直接用单圈绝对值编码器,省掉后面对原点逻辑的烦琐处理。热词里经常有人搜“plc 伺服电机控制程序”,其实定长系统里如果裁断用了伺服追剪,那伺服编码器和测长编码器的配合方式也类似,只是闭环算法更复杂。
2.1.1 干扰与信号类型,PLC 高速计数器最怕什么
测长脉冲最容易在“干扰”这一环把程序搞崩。千万不能把编码器信号和变频器主回路走同一个线槽,这是基本职业道德。信号线必须用双绞屏蔽线,屏蔽层单端接地。PLC 端能用高速计数输入就接高速输入端子,不少中大型 PLC 的普通输入点也能数脉冲,但最高频率只有几百赫兹,线速度稍快就丢脉冲。
如果编码器信号是 5V 差分,而 PLC 高速计数端子支持的是 24V 推挽,中间需要加转换板。接线前翻一下所选 CPU 关于“高速计数器计数频率”的手册数据,很多紧凑型 PLC 单相高速计数上限只有 100kHz,超过这个频率只有选带高速计数功能或硬件中断更丰富的型号。这点在选型表里最先确认,后面程序写得再漂亮,硬件上限卡死也得改方案。
2.2 裁断执行机构:气动、液压还是伺服
裁断执行机构决定的是“测到达标之后,刀要多快落下”。低端方案用普通气缸加电磁阀,PLC 在计数到达设定长度时输出一个脉冲给中间继电器,电磁阀得电,气缸伸出裁断。这里最大的问题是响应延迟,从 PLC 输出 DO 到继电器动作、阀芯换向、气缸克服摩擦开始移动,总延迟轻轻松松超过 50ms。而胶料线速度只要到 10m/min(约 167mm/s),50ms 就是 8mm 的长度误差,所以低端方案必须靠提前量补偿来救。
中端方案用伺服压切或者用伺服电机带动旋转刀,PLC 根据测长脉冲实时计算当前位置,当进入“减速窗口”时提前降低输送速度或让刀架追踪胶料,到精确长度时触发裁切。热词里“plc 伺服电机控制程序”对应的大多是这类应用,做法也相对统一:测长编码器的主位置进 PLC,经过电子齿轮换算成给伺服的虚轴位置,裁切由同步位置触发,而不是由定时器触发。
2.2.1 气动方案要不要保留,什么时候够用
气动方案在三点上可以站住脚:胶料线速度低(不超过 5m/min)、裁断长度公差允许 ±5mm、设备预算有限。这种情况下,做好压缩空气的供气稳定性比换伺服更见效。电磁阀最好选两位五通先导式可以到 10Hz 以上切换频率的;气缸加装磁性开关用于确认裁刀退回到位,否则连续裁断时第二次切刀可能打到半位的刀位。
伺服方案则要注意一个容易误解的点:很多人以为把裁刀速度调到最大就能缩短延迟,实际过度追求刀速会使机械冲击增大、机架振动,反而造成编码器读数偏差。刀速只要保证切料时间小于一条料长度的 10%,通常已经够,多出来的预算用来做机架刚性和刀隙调整机构更划算。
2.3 信号接线与 PLC 资源规划,先于编程的动作
程序没开写之前,先花半小时把 I/O 表和 PLC 资源规划定下来。一般系统里至少需要:测长编码器的 A/B 相两个高速输入、裁刀到位和裁刀退回两个接近开关、一个“裁断请求”按钮、一个“系统急停”、一个 DO 用于控制裁刀电磁阀或伺服使能。
输出点请务必考虑继电器寿命,电磁阀动作频率如果高于每分钟 30 次,普通中间继电器寿命很快见底。有些系统会改用固态继电器或直接选带晶体管输出的 PLC。热词里“一个西门子plc与32个变频器modbus通讯控制是否可”反映出有人在追求一个 PLC 管全产线,但定长裁断不建议把变频器通讯和高速计数混在同一个中断驱动的程序段里;通讯子程序占用的扫描周期抖动很容易影响计数中断的及时响应。
3. 定长裁断的 PLC 程序架构:从状态机到高速计数器中断
3.1 三段式工作周期:等待、测长、裁断,谁会踩进什么坑
程序写得好不好,不看梯形图多工整,看它能不能在“连续自动裁断”模式里不出状态错乱。常见状态划分如下:
- 等待态:裁刀退回到底,系统待机;此时高速计数器清零并保持使能。
- 测长态:胶料前进,计数器累加;PLC 每隔一个扫描周期比较当前计数值与目标值。
- 裁断态:到达目标长度,发出裁断指令,同步停止脉冲计数,等待裁刀完成信号。
踩坑高发点在于“反弹误计数”。胶料裁断瞬间,前端胶料会因弹性回缩,带动计米轮轻微反转,增量编码器会产生负向脉冲。如果计数方向设置成单向累加,这些反向脉冲不会减少数值,但会引起位置波动;如果用了双向计数,回缩脉冲会把计数拉回,导致重复裁断或长度变短。所以需要在机械上给计米轮加单向阻尼器,或者在程序里做“当裁刀下落开始,屏蔽编码器脉冲”的互锁逻辑。
3.1.1 状态机用梯形图怎么表达比较稳
三菱 FX 系列和西门子 S7-200 SMART 这类小 PLC 用梯形图写状态机常见是给每个状态分配一个 M 或内部位,用 SET/RST 切换。步骤是:上电初始化时置位等待状态;测长状态里把比较结果作为下一个状态的转移条件;裁断状态结束时先复位当前状态再置位等待状态。这里最忌讳的就是用步进指令把三段循环写死,因为实际运行中操作员可能随时按急停,急停恢复后状态机必须回等待态而不是继续走裁断逻辑。
// 伪代码用于表示扫描周期中的状态转移逻辑 IF bEStop THEN bStateCut := FALSE; bStateMeasure := FALSE; bStateWait := TRUE; ELSE CASE State OF WAIT: IF bCutRequest THEN State := MEASURE; HSC_Clear(); END_IF MEASURE: ActualLen := HSC_Value * mm_Per_Pulse; IF ActualLen >= TargetLen THEN State := CUT; bCutOutput := TRUE; END_IF CUT: IF bCutReturned THEN bCutOutput := FALSE; HSC_Clear(); State := WAIT; END_IF END_CASE END_IF逻辑说明:每次扫描周期先判断急停,急停时无条件回到等待态,保证手动重启后的确定性。在 MEASURE 状态里不要用脉冲数直接和目标长度比较,而是换算成 mm,这是因为触摸屏上显示和设定都直接用 mm,避免换算错误。CUT 状态是等待裁刀磁性开关确认后才会清计数并回到等待,这样即便胶料在裁断时刻还在轻微移动,也不会计入下一段长度。
参数说明:HSC_Clear()是清空高速计数器当前值,不同 PLC 里对应不同专用指令,三菱是DHSCS配合DHSCR的使用、西门子是调用CTRL_HSC并把NEW_CV写入 0。mm_Per_Pulse来自系统参数,由轮径和编码器分辨率共同换算,现场校准时只需微调这一个值。
3.2 高速计数器中断装载与提前量计算,误差的大半靠这步解决
高速计数器的“中断”功能是整个系统精度保证的第一道闸门。如果 PLC 每个扫描周期才去读一次计数值,扫描周期按 5ms 算,线速度 167mm/s 时,一个扫描周期的长度误差就有 0.835mm,加上响应延迟,整体误差是不可控的。所谓中断装载,就是让高速计数器硬件在计数到达某个设定值的那一刻,自动触发一次中断事件,PLC 直接执行中断例行程序去发裁断信号,不再等主程序扫描到这里。
三菱 FX5U 的DHSCS指令可以把比较值和某个输出点直接关联,硬件上能实现“计数到达即输出”,这种模式比中断程序响应还快。西门子 S7-1200 的做法是启用高速计数器匹配事件,在事件中断里把输出置位。大部分系统需求到“中断里置位输出”这一层就够用了。
提前量补偿的原理是:中断触发的位置距离实际到达目标长度还有一段“机械响应距离”。中断响应时间、DO 输出延迟、阀或伺服驱动器响应时间、机构动作时间四者之和,乘以胶料当前线速度,就得到提前量。
提前量(mm) = (T_plc + T_do + T_valve + T_cut) × V_mm_per_ms注意这里的线速度不是固定值,而是实时从测长编码器的脉冲频率计算出。因为开炼机出胶速度经常有波动,固定提前量只能保证一个速度点上精度最优。所以实际有用的程序里,会在中断触发的同时计算一次当前速度,并动态修正提前量,而不是把提前量做成一个恒定常数。
3.2.1 提前量在线自动修正的实现思路
常用做法是在每一段裁断完成后,由操作员或自动测量装置获得实际裁断长度,PLC 与设定目标长度比较求差值 P,然后按比例修正提前量窗口:
Correction = Kp × (ActualLen - TargetLen) Advance_Compensate += Correction其中 Kp 取 0.3~0.5,防止一次修正过头。通道里要加限幅,防止操作员误设或测量异常导致提前量跑到不合理区间。修正值需要掉电保存,可以用 PLC 的断电保持区或者写入数据块。这样做的好处是,下一次裁断在新提前量下自动逼近目标,基本不需要人工反复调参数。
3.3 一个可直接套用的结构化文本示例(含裁断触发逻辑)
很多入门资料喜欢给梯形图截图,但结构化文本能更容易把算法写清楚,实际转换到博途 SCL 或 Codesys 平台的时候也更方便。以下代码建议放在一个循环中断或者定时中断里执行,周期如 1ms,若 PLC 扫描周期大于 1ms,就把它放在时间中断事件中,保证调用周期稳定。
PROGRAM CUT_LENGTH_CONTROL VAR bEnable : BOOL := FALSE; // 系统使能 bCutRequest : BOOL := FALSE; // 启动裁断 bCutPositionOK : BOOL := FALSE; // 到达裁断位置 bCutReturned : BOOL := FALSE; // 裁刀退回磁性开关 nCountNow : DINT := 0; // 当前脉冲计数 rSpeed_mm_ms : REAL := 0.0; // 实时线速度 rAdvance_mm : REAL := 8.0; // 提前量 rTarget_mm : REAL := 1200.0; // 目标长度 rActual_mm : REAL := 0.0; // 测量实际长度 rPulsePerMM : REAL := 10.0; // 每毫米脉冲数 END_VAR // 每1ms中断周期执行一次 IF NOT bEnable THEN bCutPositionOK := FALSE; RETURN; END_IF // 实时长度换算 rActual_mm := DINT_TO_REAL(nCountNow) / rPulsePerMM; // 目标减去提前量的比较 IF (rActual_mm >= (rTarget_mm - rAdvance_mm)) AND (bCutRequest = TRUE) THEN bCutPositionOK := TRUE; END_IF // 裁刀退回后复位 IF bCutReturned THEN bCutPositionOK := FALSE; bCutRequest := FALSE; END_IF逻辑说明:程序核心是把“计数到达”的比较放在中断周期里,每次比较当前实际长度换算值和“目标长度减去提前量”之间的关系。bCutPositionOK上升沿连接到一个置位指令去接通裁断输出。提前量预设在启动阶段使用,后续可以通过自动修正逻辑覆盖。
参数说明:rPulsePerMM是编码器每毫米对应的脉冲数,它由轮径周长和编码器线数共同决定,现场首次调试时使用试裁几段测算校准,可靠值为 10 时,说明编码器每毫米 10 个脉冲,对应分辨率 0.1mm。rAdvance_mm默认值根据现场机械响应估算,调到偏大,裁断长度会变短;调小了变长。最终以试裁平均值为准。
4. 博途与 Works2 里的组态、实时监控与配方参数
4.1 高速计数器组态参数怎么填才不出 Error
博途里给 S7-1200 组高速计数器,右键 CPU 属性里找到“高速计数器”,选择 HSC1,把计数类型设为“运动控制”或“计数”,操作模式用“计数”。组态最容易出错的地方是两个:一个是“初始计数方向”,如果编码器接线反了,必须先改成反向计数,这一步比程序里做取反操作更底层、也更可靠;另一个是“参考值”数量,博途支持多个参考值,对应多个中断事件,但同一个计数器上参考值过多会占用更多的 CPU 资源。
三菱 Works2/GX Works3 里DHSCS会指定一个比较值和对应中断指针,例如DHSCS D0 K2000 M100里的格式是“目标寄存器、比较值、输出或中断号”。注意DHSCS是 32 位指令,在 FX5U 上使用时要确保软元件范围能覆盖 32 位,否则计数超过 32767 就会溢出,这是热词里“fx5u”相关文章常踩的坑。
4.1.1 中断例行程序里的输出置位到底是三菱还是西门子习惯
三菱的脉冲密度高,很多做法是直接在中断子程序里SET Y0,主程序再用扫描周期的逻辑去RST Y0。西门子则更习惯在中断里调用CTRL_HSC的NEW_CV和匹配事件触发Output变量。无论哪个平台,注意一点:中断程序里不要调用延时指令、不要读写通讯指令,只做最快速度的输出置位和必要的标志记录,其余动作全部放到主循环里完成。
我在现场见过一个程序,工程师在高速计数中断里调用了触摸屏配方读取指令,导致中断执行时间突然从几十微秒跳到几百微秒,同等条件下裁断精度反而比不用中断时还差。中断程序里只保留硬触发输出和置一个足够的标志位,其他都后置。
4.2 触摸屏配方上必须暴露的 4 个数,运行与调机两不误
定长裁断系统交付给车间之后,操作员和调试工程师对参数的需求完全不同。触摸屏画面上,我建议至少放下面四个参数,且都要带数值显示和修改权限分级。
| 参数名称 | 功能说明 | 典型范围 | 权限 |
|---|---|---|---|
| 目标长度 | 当前生产批次的标准裁断长度,单位 mm | 200~5000 | 操作员可改 |
| 当前线速度 | 显示实时速度 m/min,只读供观察 | 0~30 | 只读 |
| 长度修正 | 设定了目标长度后的固定补偿值,单位 mm | -20~+20 | 工艺员 |
| 自动修正使能 | 决定是否启用上一章的闭环修正算法 | 0/1 | 工艺员 |
线速度不是操作员设的,是系统实时测的,但在触摸屏上显示出来很有必要,因为现场操作员会通过速度变化预判裁断是否要出问题。修正量单独放在一屏,不要和配方主参数混在一起,否则操作员按生产习惯改配方时把修正量也清零了。
4.3 在线调试时要盯哪些地址,判断程序好坏不止看梯形图
热词里“博途中查看plc资源使用情况”是被问得很多的操作。在线调试定长系统,打开监控表或数据块视图,注意力放在以下三类地址上:
第一类就是高速计数器的当前计数值,它必须连续变化且没有跳变。如果看到计数一卡一卡,说明高速计数组态有问题或编码器信号接触不良。第二类是中断触发标志位,每次裁断前该标志必须稳定由 0 变 1,且在下一轮裁断前正确复位。第三类是修正量存储器,观察它是否单调收敛;如果修正量在两个批次里来回振荡,说明Kp系数过大。
观察扫描周期也很重要。大部分小 PLC 的监控界面里可以直接看扫描周期最长时间。正常定长程序如果只用高速计数中断,主扫描周期应该稳定在 5ms 以内。如果发现周期超过 10ms,检查是不是把通讯读写或者配方页面的宏指令放在了主循环里,这类隐性耗时最容易拖慢系统。
5. 把裁断精度从 ±5mm 压到 ±1mm 的三个现场技巧
5.1 技巧一:目标长度比较窗口改成“减速窗口 + 位置锁定”
如果裁断动作由气动执行,单纯靠提前量在高速下压到 ±1mm 几乎不可能,原因是气动回路的重复性太差。常见做法是增加一段“减速接近区”,在距离目标还有 50mm 时让输送电机降速到爬行速度,再用爬行速度下测长脉冲计数到目标值触发裁断。
减速用变频器多段速或伺服速度给定,关键在于减速区起点不是时间控制的,而是从编码器位置比较得到,这样才不受上一段速度波动影响。完成减速后,裁断动作期间胶料速度接近匀速缓慢,提前量的因速度项变小,精度明显上来。
5.2 技巧二:计米轮打滑补偿,用“空载转数”标定
很多现场困扰不是编码器和 PLC 的问题,而是计米轮与胶料之间的滑动。胶料配方变化导致表面摩擦系数波动时,同一套机械结构打滑率和车速不是线性关系。一个可上手的补偿策略是:换料卷时裁出前 10 段,测量实际长度并计算平均误差,然后在触摸屏上修正“轮径系数”。
更细的做法是计算滑移率随线速度变化的拟合曲线,在 PLC 里用一维查表做补偿。按线速度每 2m/min 为一个区间,每个区间的补偿系数单独设。初始系数用空走测试轮径得出来,实际生产时再逐步修改,使每个区间的裁断平均误差趋近于零。
5.3 技巧三:裁刀到位硬限位与计数清零互锁,防止“多切一刀”
“多切一刀”即同一段胶料触发两次裁刀动作,原因多数是裁刀在切完回退时,胶料仍然拖着计米轮运动,而计数还没被清零,导致下一轮测长从负值或较小基数继续走。解决办法是把高速计数清除指令与裁刀磁性开关的上升沿绑定,只允许在下一次测长真正开始前清零计数。同时把启动主机的联锁条件设为“裁刀必须退回到底”,从设备层面禁止在裁刀未退回时启动输送。
这三个技巧分别解决的是机械执行、材料特性和程序状态恢复问题。按这个顺序做,如果数据仍然达不到指标,问题大概率出现在机架刚性或者编码器安装同轴度上,再做一遍机械校准。实际产线上,做完这三步,裁断长度均值基本上能稳定在设定值 ±1mm 范围内,波动曲线也在可接受区间。
本文还有配套的精品资源,点击获取