更新记录
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.kt653 行,包名与planOf/shiftCapacity符号已核验。 - Android 真机与设备端 CSV:未执行(ADB 无在线设备,不声称真机通过)。
- 市场截图:已生成 3 张 H5 真实渲染图(首屏闭环、工时与换气、缺瓶/无气体/计算口径);第 4 张因与第 3 张哈希相同已删除,不凑图数。H5 页面标注示例数据,不代表插件支持 Web。
- 插件市场发布:未执行,市场地址待发布。
购买前必读
仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。插件不提供通用材料速度库,不解析 DXF,不套料,不做销售价格。请先用本厂真实试切与设备记录完成验收,再用于生产计划。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13
赞赏 0
下载 12756383
赞赏 1959
赞赏
京公网安备:11010802035340号