| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // 振幅数据生成器(7个典型CNC机床阶段)
- // 阶段:待机、启动、自检、粗加工、精加工、回零、结束
- function randomInt(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- function generateStageData(length, base, fluctuation) {
- return Array.from({ length }, () => base + (Math.random() - 0.5) * fluctuation);
- }
- function generateAmplitudeCycle() {
- const stageNames = [
- '待机', '启动', '自检', '粗加工', '精加工', '回零', '结束'
- ];
- const stageCount = stageNames.length;
- let stages = [];
- for (let i = 0; i < stageCount; i++) {
- stages.push(15); // 每阶段15秒
- }
- const duration = stages.reduce((a, b) => a + b, 0);
- // 各阶段振幅特征,顺序必须和stageNames一致
- const stageParams = [
- { base: 10, fluctuation: 2 }, // 待机
- { base: 18, fluctuation: 4 }, // 启动
- { base: 15, fluctuation: 3 }, // 自检
- { base: 30, fluctuation: 8 }, // 粗加工
- { base: 22, fluctuation: 5 }, // 精加工
- { base: 14, fluctuation: 3 }, // 回零
- { base: 11, fluctuation: 2 } // 结束
- ];
- let cycle = [];
- for (let i = 0; i < stageCount; i++) {
- const { base, fluctuation } = stageParams[i];
- cycle = cycle.concat(generateStageData(stages[i], base, fluctuation));
- }
- // 随机插入一个异常点
- const abnormalIndex = randomInt(0, cycle.length - 1);
- cycle[abnormalIndex] = cycle[abnormalIndex] + randomInt(20, 40); // 远超正常范围
- return { cycle, stages, duration, stageNames };
- }
- module.exports = { generateAmplitudeCycle };
|