☰
S7-200Smart与MCGS实现产线测速与产量统计方案
2026/10/16 8:38:39 网站建设 项目流程

做产线改造的人都知道,现场最常被问的问题往往不是“控制精度到多少”,而是“今天干出了多少、一共干了多少、机器到底开了几个小时”。这句话我在不下十个项目里听过。这篇要聊的就是怎么用西门子S7-200Smart PLC和MCGS触摸屏,把测速、当班产量、总产量、生产时间参数这一堆事一次性做顺。内容适合设备工程师、PLC调试人员,以及做小型产线数采的同行参考,是一个可以直接落到现场的中小规模方案。

我先说结论:这套做法不复杂,核心思路是把所有关键数据在PLC侧计算并保持,触摸屏只负责显示和操作。哪怕触摸屏坏了、通信断了,产量和时间统计也不丢。代码量不大,但需要在传感器接线、数据口径、交接班清零机制上想清楚,否则正式跑起来容易出“产量对不上”“时间不准”这种扯皮问题。下面按需求拆解、PLC程序、MCGS组态、现场调试四个部分展开讲。

1. 需求拆解与方案选型:先定计量口径,再谈程序怎么写

1.1 现场到底要哪些数据:速度、当班产量、总产量、时间参数

我去现场做需求沟通时,一般会先拉一张数据清单,逐项确认计量口径。这个环节最重要,因为不同车间的“产量”定义可能完全不一样。

常见要统计的数据有这么几类:

  • 当前速度:产线线速,单位通常是米/分钟,有时按件/小时显示。
  • 当班产量:从上班开始到当前时刻的产品累计数,交接班后清零重计。
  • 总产量:设备投入使用以来的历史累计,只增不减,一般不允许清零。
  • 生产时间参数:这个范围比较大,至少包括班次时间、设备运行时间、停机时间。更细一点还有有效生产时间、故障时间,用于算设备稼动率。

别小看最后一项。很多项目前期只关心产量,跑一个月后车间主任就会来问“机器到底开了多久、停了多少次”,这时候你在PLC里没存时间数据,就只能让操作工手填交接班记录,等于白做。

计量口径也要现场确认:一件产品是单个工件还是整箱?是靠光电开关数点,还是靠编码器脉冲折算长度?我见过有项目想省传感器,用编码器脉冲数除以“每件对应的脉冲长度”来算产量,结果产品规格一换,误差直接超10%,最后还是加了光电开关。

所以我的建议是:速度用编码器测,产量用光电/接近开关数。前者算线速和节拍,后者数个数,两者各司其职,互不干扰。这是最稳的组合。

1.2 为什么选S7-200Smart加MCGS,而不是别的组合

选型这块,S7-200Smart的优势其实很明确:便宜、编程软件免费、自带以太网口,而且V区可以设置掉电保持,高速计数器也够用。对中小产线来说,用ST40或者ST60这类标准型CPU基本都能覆盖。

MCGS嵌入版触摸屏做中小设备的画面组态很成熟,驱动库里就有S7-200Smart的TCP驱动,走以太网直连,不需要额外买PPI电缆或者通信模块。设备窗口配好IP,实时数据库一建,变量就能通。

有人会问:直接用触摸屏做个计数器不就行了,为什么非要PLC算?

我的答案很简单:触摸屏掉电或者死机,数据就悬了。而且车间工人经常误触屏幕,如果清零逻辑放在屏上脚本里,一个误操作就把当班产量清了。PLC侧做核心逻辑,触摸屏只下发“交接班清零”指令,配合权限设置,这样才经得起现场折腾。

另外PLC侧算产量还有一层好处:后面如果要接MES、ERP或者上位机数采系统,直接从PLC的保持区读数据就行,不用动触摸屏工程。

2. PLC侧程序:测速、计数、时间统计的完整实现思路

2.1 测速:编码器接高速计数器,别图省事接普通输入点

S7-200Smart的高速计数器HSC0到HSC3,输入点分别是I0.0到I0.3,可以用单相计数,也可以做A/B相正交计数。测速项目里我推荐用增量式编码器,比如600脉冲/转或者根据现场需要的分辨率和辊径来选。

接线上面要记几个要点:

  • 编码器供电用独立24V电源,不要跟PLC输出负载混在一起。
  • 屏蔽线单端接地,别把屏蔽层焊在端子排的公共端上。
  • 信号线尽量远离变频器输出线和动力电缆,走线槽分开放。

程序上,测速我一般用“固定时间窗计数差值法”:定时每100ms读一次高速计数器当前值,减去上一次读到的值,差值就是这段时间的脉冲数,再换算成频率和线速。

换算公式是:

线速度V = (ΔN × π × D) / (Δt × Nenc)

其中,ΔN是100ms内脉冲差,D是辊筒直径,Nenc是编码器每转脉冲数。

举个例子,编码器600脉冲/转,辊径100mm,100ms内计到500个脉冲,那线速就是:

V = 500 × 3.1416 × 0.1 / (0.1 × 600) ≈ 26.18 米/分钟

这个算出来的是瞬时速度。如果你想让显示更稳,可以做滑动平均,比如取最近五次读数平均一下,画面就不会跳来跳去。

注意计数器溢出的问题:S7-200Smart的高速计数器当前值是有范围的,如果一直不清零,计数值会回绕。所以我只在需要精确位置时才用“到达目标值中断清零”,测速场景一律用差值法,不要每次清零,否则跳变会干扰计算。

2.2 产量累计:当班量和总产量为什么必须分开存

产量累计的关键不是“加一”这个动作,而是存储结构和清零策略。

我在PLC里一般是这么安排的:

  • VD0:总产量,浮点或者双整数,只加不减。
  • VD4:当班产量,交接班清零。
  • VD8:当班起始时间戳,记录这一班是从哪天哪时开始的。

计数信号接在光电开关上,比如I0.4。程序里用上升沿指令触发计数,同时加一个互锁延时。为什么要加延时?因为光电开关扫描到产品边缘时,如果产品带尾巴、有毛刺,或者输送线上产品抖动,一个产品可能被计成两三个。我用的是“计数后锁定50ms”的方式,把一个产品的计数窗口锁死,50ms内就算有抖动也不会计数。实际延时大小要按线速调:线速越快,锁定时间越短,一般20到50ms起步,跑起来再微调。

另一个容易忽略的细节是低速不计数。有些场合停机时产品还在皮带上缓慢滑动,如果光电还扫得到信号,产量就虚高。我一般在程序里加一个判断:当前线速低于某个设定阈值(比如2米/分钟),计数禁止位置1,光电输入直接被屏蔽。

总产量和当班产量都用32位存储,如果车间一天产能过万件,32位整数足够跑很多年。显示的时候注意MCGS侧的数据类型要和PLC一致:PLC里是实数就选浮点,是整数就选32位整数,选错就会出现“小数点乱跳”的怪象。

2.3 生产时间参数:班次时间、运行时间、停机时间怎么统计

生产时间统计,我习惯用秒作为基本单位,在定时中断里每秒累加一次。S7-200Smart的定时中断可以选择1ms到255ms,我用SM0.4或自复位定时器触发每秒逻辑,每秒钟给对应的时间存储器加1。

具体分三类:

  • 班次时间:从交接班清零那一刻开始计时,到当前时刻的总秒数。这个可以直接用PLC读取的实时时钟和班次起始时间戳相减,也可以用累积量,看你怎么方便。
  • 运行时间:当设备的运行信号为1时,每秒加1。运行信号从哪里取?如果是变频器驱动,接变频器的“运行中”继电器输出;如果是接触器控制,接接触器辅助触点,不要用程序里的启动按钮状态,因为启动按钮按下不代表电机真的转了,可能热继电器已经跳了。
  • 停机时间:运行信号为0时累加。停机时间细分的话,还可以把“故障急停”和“正常停线”分开,这需要额外接故障信号输入点,看现场有无条件。如果没有,就先只统计总停机时间。

有人问我:停机时间值得做吗?非常值得。我之前在一条包装线上就遇到过:设备每天都开十几个小时,但产量低,车间主任怀疑是速度慢,实际上从时间统计看,停机时间加起来有4个小时,中间换规格、清废料、等物料占了大头。没有这个数据,你根本不知道产线的真实瓶颈在哪。

时间数据要用32位存储,按秒累加。一天是86400秒,两年才六千多万,用一个32位双字存秒数是够的。但你要是用16位的VW存,一天就溢出了,这坑我见过有人踩过。

2.4 复位与保持:掉电不丢数据是底线

PLC里V区默认有一部分是断电保持的,但范围默认值往往不够。我通常在系统块里把V区保持范围加大,覆盖总产量、总运行时间、当班产量、班次时间戳这几个地址段。这样即使设备断电,数据和累计时间也能留得住。

这里有个细节:当班产量要不要断电保持?我的建议是保持,但交接班时要手动清零。因为现场经常出现“夜班设备没关,第二天早班来才交接”的情况,如果当班数据一断电就丢,交接班对不上账。保持之后,交接班按钮负责清零,安全可控。

不清零的当班数据,也可以在触摸屏上做一个“当班产量统计”小窗口,让操作员确认无误后做“确认清空”,加用户权限。这个我在调试时觉得特别有用,后面细说。

3. MCGS组态侧:显示、操作、存盘一个都不能少

3.1 变量连接与主画面布局:一屏看全所有数据

MCGS这边,先在设备窗口添加“西门子S7-200Smart_TCP”驱动,填PLC的IP地址,比如192.168.0.2,通信端口默认即可。采集周期我习惯设300到500ms,不建议小于200ms,太快的轮询容易把S7-200Smart的通信连接占满,反而闪断。

实时数据库里要建的变量大概是这么些:

  • 当前线速V(对应PLC浮点VD)
  • 当班产量(对应PLC数值)
  • 总产量
  • 班次时间、运行时间、停机时间
  • 交接班清零触发
  • 班次选择(白班/夜班)
  • 测试模式开关

主画面布局,最上面放速度显示,用一个大数码管或者仪表控件;中间当班产量做大字显示,旁边放总产量;底部放时间参数,运行时间、停机时间、班次时间分三个文本框排开。整个画面不要堆太多按钮,操作类按钮集中在右下角。

实时曲线也建议加上:用MCGS的实时曲线控件,连接线速变量,跑起来能看到速度波动,调设备时很有帮助。你在现场做调试,有没有这条曲线完全是两种体验。

3.2 交接班逻辑:操作员按键清零,总产量保持不动

交接班是本项目的重点操作场景。我的做法是做一个“交接班”按钮,按下去之后会弹出一个窗口,显示当前当班产量和当班时间,确认无误再点“确认清零”。这个确认动作实际下发到PLC的一个M位变量,PLC检测到这个M位为1时,把当班产量清零并复位M位,同时把当前时间写入“当班起始时间戳”。

为什么要PLC来执行清零而不是触摸屏脚本直接写0?

为了防止干扰。如果清零逻辑放在触摸屏脚本里,操作员在屏幕上多点两下,或者画面卡一下,很容易出现“没清零却写好”或者“清了两次”的混乱。PLC程序里做一次完整的“清零-确认-记录时间戳”流程,逻辑清清楚楚,后面查账也好说。

总产量在画面上只显示,任何操作员权限都动不了。如果真需要总产量校准,可以单独做一个工程师权限窗口,或者编程软件里改,别让车间日常操作页面碰它。

3.3 数据存盘与报表:掉电之后还能查历史

MCGS本身有存盘数据功能,可以按时间存或者按变化存。我的建议是两路同时做:

  • 一路是MCGS的存盘数据构件,每秒或每分钟存一次关键变量,用于当天内实时曲线和历史趋势。
  • 另一路是交接班记录存盘:每次交接班确认时,把当班产量、班次时间、运行时间、停机时间写进报表文件。

日常看数据,操作员在触摸屏上翻历史曲线就行;要月报周报,就把U盘插到触摸屏上,把存盘数据导出成Excel,或者通过以太网从PLC保持区直接读数据。

这个阶段你会遇到一个实际工件:MCGS存盘的数据和PLC保持区的数据经常对不上。原因大多出在采集周期上,触摸屏是周期采样的,如果PLC刚好在采样间隔内清零了当班产量,触摸屏存到的是清零后的值。解决办法是:交接班清零时,同时把“前值”写到另一个PLC存储区,触摸屏存盘前先读“前值”,确保报表记录的是清零前的当班产量。这个细节很容易被忽略。

4. 现场调试的坑与排查技巧实录

4.1 高速计数器丢脉冲,产量和速度都对不上

这是测速环节最典型的问题。现象是:触摸屏显示速度忽高忽低,或者编码器转一圈应该600个脉冲,PLC只计到550个。

排查顺序我一般按下面几步走:

  • 确认高速计数器定义正确,输入点没接错。
  • 在系统块里把数字量输入滤波时间调到微秒级。S7-200Smart默认输入滤波时间对高速信号来说太长了,不改的话高频脉冲会被滤掉,这也是丢脉冲最常见的原因。
  • 用编程软件在线监控高速计数器当前值,手动慢慢转编码器,看数值是否连续增加。如果跳动,检查接线和屏蔽。
  • 用示波器或万用表看编码器A/B相波形,排除编码器本身供电不稳的问题。

正交模式下抗干扰能力比单相模式强不少,如果现场变频器多,我建议用A/B相正交模式,虽然程序里要多算一下,但稳定性好很多。

4.2 产量多计:光电抖动怎么压下去

产量多计、跳数,基本是光电开关信号质量问题。常见原因有:

  • 漫反射光电灵敏度太高,检测到背景物体。
  • 产品间距离太近,一个产品的前沿和后沿产生两次触发。
  • 传感器响应频率不够,产品高速经过时脉冲变形。

程序层面的对策就是刚才说的计数互锁延时。现场调试时,我一般把锁定时间先设成10ms,线速跑起来看产量,如果多计就每次加10ms往上调,直到数据稳定。如果线速很快,延时太大会漏计,所以这个参数要结合产线最高速度来计算理论极限值。

还有个低级但常见的错误:光电开关的类型和PLC输入极性不匹配。NPN传感器输出低电平有效,接漏型输入;PNP输出高电平,接源型输入。如果接反了,信号要么丢了要么常通,我每次调试前都会花两分钟先确认传感器类型,这比查程序快得多。

4.3 触摸屏通信闪断:多半不是屏的问题,是连接占满

S7-200Smart以太网带有一个特点:允许的并行连接数有限。调试时你把编程软件开着在线监控,触摸屏再连上去,很容易触发通信失败。这不是驱动设置错,也不是网线问题,是连接数被编程软件占满了。

排查方法很简单:关掉STEP 7-Micro/WIN SMART的在线监控,只用触摸屏连PLC,看是否稳定。如果稳定,说明就是连接数问题。

日常运行时的建议:

  • PLC固定IP,不要用自动获取。
  • 触摸屏采集周期不要低于200ms。
  • 不做在线监控时,编程软件不要保持通信连接。
  • 网线不要跟变频器主回路走同一个线槽。

另外,PLC在STOP模式下,触摸屏同样会显示通信失败,这个好排查,看PLC运行灯就行。如果是STOP,查程序有没有导致非法运算的异常。

4.4 生产时间对不上:时钟漂移和上电误计时

S7-200Smart的实时时钟芯片精度有限,用久了会累积误差,有时候一天能差几十秒。对产量统计影响不大,但班次切换和时间戳可能偏。解决方法是:触摸屏做一个“时间校准”页,允许班组长每班点一次按钮,把触摸屏上的时间(或者手动输入的标准时间)写入PLC实时时钟。这个功能很小,但现场非常买账。

时间统计还有一个隐蔽问题:上电瞬间,设备运行信号还在稳定之前的抖动阶段,如果立马开始累加运行时间,可能会把停机的几秒钟误算成运行。我的处理办法是:PLC上电后先延时5秒,同时读取一次运行信号状态,确认稳定后才开始时间累计。这5秒的误差可以忽略,但能避免很多无谓的数据偏差。

4.5 交接班数据对不上账:延时采样问题

还有一个我特别想提醒的事:交接班时刻,触摸屏上的当班产量和PLC里的当班产量经常会差几个数。原因是扫描周期不同步,操作员眼睛看到的是上一秒的数据,PLC清零时又走了一次扫描。

我的经验是,交接班窗口上除了显示当班产量,再加一行“清零时间,比如20:00:00”。这样操作员确认的是到某一个时间点的产量,而不是实时变动的数字。这个思路适合所有需要交接班的生产数据,你可以直接用在项目里。

最后再说两句实战体会

这套S7-200Smart加MCGS做下来的项目,我做得多了之后最大的体会是:真正的难点不在梯形图怎么写,而在于把计量口径和人工干预逻辑想清楚。凡是没先说清楚“什么算一件产品”“什么时候算停机”“谁能清零”就开写程序的,后期几乎都要返工。

另外有个小技巧让我一直受用:在触摸屏上放一个“测试模式”开关。调试的时候打开它,脉冲输入可以由画面上的按钮模拟,产量和速度显示也能照常走,这样不用搬运实物跑线,就能把整个流程验证完。等正式运行,这个开关必须由工程师权限操作,防止车间误用。

这套程序往后扩展的路子也现成:PLC保持区里的产量和时间数据,就是给产线管理留的接口,以后上数采、做报表、算设备效率,完全不愁数据来源。做设备的人,把这一层的底子打扎实了,省下的是后面无数的对接功夫。

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

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

立即咨询