更新记录

1.0.0(2026-11-11)

首个版本:有效切削秒=试切机内秒−穿孔秒−空程秒,有效速度由本厂试切长度反算;批量输出单件切削/穿孔/空程/机内秒,计入准备、换板与换气。气体支持直接流量和试切反算,气体只按机内时间消耗;理论瓶数按总气量向上取整,计划瓶数按整件保守规则计算,当前瓶不足以完成下一件才换,最后瓶不多换。班次产能通过二分求最大完整件数,准备、换板、换气真实扣减。Node 22 实跑 175 项断言全部通过,含 6000mm/20 穿孔/100s 手算、无气体、刚好一瓶、缺瓶、班次缺口和 CSV。HBuilderX launch --compile true 真编译通过,index.kt 653 行并含 planOf/shiftCapacity;真机未执行(ADB 无设备);H5 真实渲染截图 3 张已生成并人工核验,发布待执行。


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× √ × × √ × √ × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

激光切割工时与用气

给激光切割操作员、工艺员与生产计划员的离线计划插件:不用通用材料速度表猜工时,而是用本厂一次真实试切反算有效切割速度,再预测批量机内工时、班次产能、辅助气体用量和换气节点。

链路是「本厂实测校准 → 批量工时 → 班次与换气」。不解析 DXF、不套料、不做销售报价。

能算什么

  • 试切校准:从整件机内时间扣除穿孔与定位空程,反算有效切削速度。
  • 批量预测:单件长度、穿孔数、单次穿孔与空程可覆盖试切值;输出单件切削/穿孔/空程/合计机内秒。
  • 完整批次时间:机内时间之外,计入每批准备、按板数量计算的换板时间、换气时间。
  • 气体闭环:显式传流量,或用试切流量计升数反算;输出总用气、理论瓶数、整件规则下的计划瓶数与首次换气件号。
  • 班次产能:准备、换板、换气都真实扣减,输出每班完整件数、所需班次、给定班次产能与缺口。
  • 行动提示:气瓶不足、班次不足、单件超过一瓶、一班无法完成一件都有明确结果或错误码。
  • CSV 导出:UTF-8 单 BOM,默认写 Android 应用外部私有目录,零系统权限。

计算口径

1. 有效速度

试切穿孔总秒 = trialPierces × trialPierceSecEach
有效切削秒 = trialSeconds − 试切穿孔总秒 − trialRapidSec
有效速度(mm/min) = trialLengthMm ÷ (有效切削秒 ÷ 60)

有效切削秒必须大于 0。示例:6000 mm、20 次穿孔、每次 0.8 秒、空程 4 秒、机内 100 秒,则有效切削 80 秒,有效速度 4500 mm/min。批量沿用相同参数时,单件机内时间还原为 80+16+4=100 秒。

2. 批量与换板

批量未传 lengthMm/pierces/pierceSecEach/rapidSec 时沿用试切对应值。sheetCount=ceil(quantity/partsPerSheet),换板发生在整板之间,所以 sheetChanges=sheetCount-1。

3. 气体与换气

  • 显式 gasFlowLpm 优先;未传时用 trialGasLiters/trialSeconds×60 反算。两条路径至少一条有效;无辅助气体传 gasFlowLpm=0。
  • 气体只按切削、穿孔、空程的累计机内时间消耗;准备、换板、换气耗时不计气体。
  • gasCylinderLiters 是使用方按本厂气瓶压力和容积换算出的自由气体等效升数,不是钢瓶几何容积。插件不编造压力换算。
  • 理论瓶数=ceil(总用气/单瓶等效升数)。整件规则下,每瓶完整件数=floor(单瓶等效升数/单件用气),计划瓶数按该完整件数向上取整;计划瓶数可能大于理论瓶数。
  • 当前瓶足以完成下一件就不换,不足才在整件之间换。firstChangePart 是首次换气前的件号,无换气为 0;最后一瓶用完后不额外计一次换瓶。
  • cylinderCount 是已备瓶数;少于计划瓶数时返回 gasEnough=false 和缺瓶数,批次分钟仍按补足后的计划换气耗时估算。

4. 班次产能

每班按独立生产段计一次 setupSec,并扣除该段实际换板与换气时间,用二分查找求不超过 shiftMinutes 的最大完整件数,不逐件循环。requiredShifts=ceil(quantity/perShiftQty);若一班连一件也无法完成,perShiftQty=0、requiredShifts=0、shiftBlocked=true。

这是保守口径:跨班连续生产且不重复准备时,批次总分钟可能低于“班次数×每班独立生产段”的口径。

所有结果都是计划估算,实际以机床、工艺规范与现场试切为准。

快速接入

import { laserCalibrate, laserPlan, laserExport, laserVersion } from '@/uni_modules/szhzy-laser-cycle'

const trial = {
  trialLengthMm: 6000,
  trialPierces: 20,
  trialSeconds: 100,
  trialPierceSecEach: 0.8,
  trialRapidSec: 4
}
const calibration = laserCalibrate(trial)

const result = laserPlan({
  ...trial,
  quantity: 1200,
  setupSec: 300,
  partsPerSheet: 20,
  sheetChangeSec: 30,
  shiftMinutes: 480,
  availableShifts: 3,
  trialGasLiters: 20,
  gasCylinderLiters: 6000,
  cylinderCount: 6,
  cylinderChangeSec: 120
})
// result.effectiveSpeedMmMin = 4500
// result.unitMachineSec = 100,result.totalMinutes = 2040.5
// result.firstChangePart = 301,result.capacityGap = 360

const exported = laserExport({ ...trial,
  quantity: 1200, setupSec: 300, partsPerSheet: 20, sheetChangeSec: 30,
  shiftMinutes: 480, availableShifts: 3, trialGasLiters: 20,
  gasCylinderLiters: 6000, cylinderCount: 6, cylinderChangeSec: 120
})
const version = laserVersion()

Android 真机需使用包含本插件的自定义基座,标准基座不含三方 UTS 插件。

API

函数 返回
laserCalibrate(options) 试切校准信封,含有效切削秒与有效速度
laserPlan(options) 校准、批量、气体、换气与班次完整结果
laserExport(options) 计算并导出「激光切割工时与用气.csv」,返回路径与字节数
laserVersion() 版本字符串,当前为 1.0.0

计算与导出统一返回 { ok, code, message, ... },失败时 ok=false,不向业务层抛计算异常。laserVersion() 只返回版本字符串。

输入字段

字段 单位与约束 缺省
trialLengthMm mm,(0,100000000] 必填
trialPierces 次,整数 [0,1000000] 必填
trialSeconds 秒,(0,10000000] 必填
trialPierceSecEach 秒/次,[0,86400] 必填
trialRapidSec 秒,[0,10000000] 必填
lengthMm mm,(0,100000000] 沿用试切长度
pierces 次,整数 [0,1000000] 沿用试切穿孔数
pierceSecEach 秒/次,[0,86400] 沿用试切值
rapidSec 秒,[0,10000000] 沿用试切空程
quantity 件,整数 [1,100000] 必填
setupSec 秒/批或生产段,[0,86400] 0
partsPerSheet 件/板,整数 [1,100000] 1
sheetChangeSec 秒/次,[0,86400] 0
shiftMinutes 分钟/班,(0,1440] 必填
availableShifts 班,整数 [1,366] 1
gasFlowLpm L/min,[0,10000];0 为无气体 未传则走试切反算
trialGasLiters L,[0,10000000] 直接流量未传时必填
gasCylinderLiters 自由气体等效 L,(0,100000000] 有气体时必填
cylinderCount 已备瓶,整数 [1,100000] 有气体时必填
cylinderChangeSec 秒/次,[0,86400] 0
dir 仅 laserExport 使用的输出目录 应用外部私有目录

无气体时气瓶字段不适用,不做换气。关键计算拒绝 NaN、Infinity、小数件数和超上限输入。

主要输出字段

分组 字段
校准 effectiveCutSeconds、effectiveSpeedMmMin、trialPierceSec
单件 unitCutSec、unitPierceSec、unitRapidSec、unitMachineSec
批量 batchMachineMin、setupMin、sheetCount、sheetChanges、sheetChangeMin、totalMinutes
气体 gasFlowLpm、gasSource、unitGasLiters、totalGasLiters、theoreticalCylinders、plannedCylinders
换气 partsPerCylinder、cylinderChanges、cylinderChangeMin、firstChangePart
备瓶 gasEnough、gasShortageCylinders
班次 perShiftQty、requiredShifts、availableCapacity、capacityGap、shiftBlocked
建议 level、hint

gasSource 为 direct(直接流量)、trial(试切反算)或 none(无气体)。时间输出分钟字段保留 3 位小数,数量与次数为整数。

工程与隐私

  • core.uts 是纯逻辑层:无平台 import、无异常语句、无正则、无可选链,不读时钟、文件或网络。
  • Android 公开层只负责 UTSJSONObject 转换;文件层只负责 CSV 落盘。
  • 无三方依赖,不申请系统权限,不采集、上传或记录业务数据。
  • 演示工程 Android 走真实插件;H5 仅展示由同一核心层预计算的内存结果,并标注「示例数据」,不代表插件支持 Web。

验证状态

  • Node 22 核心回归:175 项通过,0 项失败;含手算、直接/反算流量、无气体、整件换气、最后瓶、换板、班次与 CSV。
  • 通用发布前校验:10 个发布文件全部通过(清单、价格、编码、权限、零依赖与敏感信息)。
  • UTS→Kotlin 编译:主流程已执行;cli launch app-android 日志为“项目 demo-laser-cycle 编译成功”,index.kt 653 行,包名与 planOf/shiftCapacity 符号已核验。
  • Android 真机与设备端 CSV:未执行(ADB 无在线设备,不声称真机通过)。
  • 市场截图:已生成 3 张 H5 真实渲染图(首屏闭环、工时与换气、缺瓶/无气体/计算口径);第 4 张因与第 3 张哈希相同已删除,不凑图数。H5 页面标注示例数据,不代表插件支持 Web。
  • 插件市场发布:未执行,市场地址待发布。

购买前必读

仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。插件不提供通用材料速度库,不解析 DXF,不套料,不做销售价格。请先用本厂真实试切与设备记录完成验收,再用于生产计划。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无系统权限。导出文件写到应用外部私有目录,不需要存储权限。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集、不上传任何数据,不访问网络,不写日志。试切、批量、班次与气体参数只在内存中计算;CSV 由调用方主动导出,默认写应用外部私有目录。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。