| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- const {
- statusRegisters
- } = require('./registers.js')
- const {
- MAX_USER_STATUS_COUNT,
- getUserStatusCount
- } = require('./control-state.js')
- const {
- formatStatusRegisters
- } = require('./status-format.js')
- const STATUS_SUMMARY_METRICS = [
- { key: 'speed', name: '估算速度', unit: 'RPM', decimals: 0 },
- { key: 'voltage', name: '母线电压', unit: 'V', decimals: 1 },
- { key: 'power', name: '估算功率', unit: 'W', decimals: 1 },
- { key: 'temperature', name: 'NTC 温度', unit: '℃', decimals: 0 }
- ]
- const STATUS_GROUPS = [
- {
- key: 'system',
- title: '状态机 / 故障码',
- names: ['状态机', '故障码']
- },
- {
- key: 'dqVoltageCurrent',
- title: 'DQ 电压电流',
- names: ['UD', 'UQ', 'ID', 'IQ']
- },
- {
- key: 'phaseCurrent',
- title: '相电流',
- names: ['A 相电流', 'B 相电流', 'C 相电流', '相电流最大值', '相电流最小值']
- },
- {
- key: 'estimator',
- title: '估算器状态',
- names: ['估算速度', '估算反电动势']
- },
- {
- key: 'bus',
- title: '母线 / 温度',
- names: ['母线电压', '母线电流', '估算功率', 'NTC 温度']
- },
- {
- key: 'inputPwm',
- title: '输入 / PWM',
- names: ['模拟输入电压', '占空比', '频率']
- }
- ]
- function getVisibleStatusRegisters(userStatusCount) {
- const count = getUserStatusCount(userStatusCount)
- return statusRegisters.filter((item) => (
- item.name.indexOf('用户状态字') !== 0 ||
- Number(item.name.replace('用户状态字 ', '')) <= count
- ))
- }
- function getStatusPageState(userStatusCount) {
- const registers = formatStatusRegisters(getVisibleStatusRegisters(userStatusCount))
- const registerMap = registers.reduce((result, item) => {
- result[item.name] = item
- return result
- }, {})
- return {
- maxUserStatusCount: MAX_USER_STATUS_COUNT,
- statusRegisterGroups: STATUS_GROUPS.map((group) => ({
- key: group.key,
- title: group.title,
- registers: group.names.map((name) => registerMap[name]).filter(Boolean)
- })).filter((group) => group.registers.length),
- statusRegisters: registers,
- userStatusRegisters: registers.filter((item) => item.name.indexOf('用户状态字') === 0)
- }
- }
- function getFormattedStatusMap() {
- const formattedRegisters = formatStatusRegisters(statusRegisters)
- return formattedRegisters.reduce((result, item) => {
- result[item.name] = item
- return result
- }, {})
- }
- function formatMetricText(item, unit, decimals) {
- if (!item || item.displayValue === undefined || item.displayValue === '--') return '--'
- const numberValue = Number(item.displayValue)
- const displayValue = Number.isFinite(numberValue)
- ? numberValue.toFixed(decimals)
- : String(item.displayValue)
- return `${displayValue}${unit}`
- }
- function getStatusSummaryState() {
- const registerMap = getFormattedStatusMap()
- const stateValue = registerMap['状态机'] && registerMap['状态机'].displayValue
- const faultValue = registerMap['故障码'] && registerMap['故障码'].displayValue
- const faultText = faultValue || '--'
- const isFault = faultText !== '--' && faultText !== '无故障'
- return {
- faultClass: isFault ? 'is-warning' : '',
- faultText,
- metrics: STATUS_SUMMARY_METRICS.map((config) => ({
- key: config.key,
- displayText: formatMetricText(registerMap[config.name], config.unit, config.decimals)
- })),
- stateText: stateValue || '--'
- }
- }
- module.exports = {
- getStatusPageState,
- getStatusSummaryState
- }
|