{"version":3,"sources":["jsdelivr-header.js","/npm/@libs-scripts-mep/temp-sim@5.3.0/temp-sim.js"],"names":[],"mappings":"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","file":"/npm/@libs-scripts-mep/temp-sim@5.3.0/temp-sim.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@libs-scripts-mep/temp-sim@5.3.0/temp-sim.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { SerialUtil } from \"../serialport-websocket/serial.js\"\r\nimport { Socket } from \"../serialport-websocket/client.js\"\r\nimport { Modbus } from \"../serialport-websocket/modbus.js\"\r\n\r\n/**\r\n * # Exemplos\r\n * \r\n * ```js\r\n * const simTemp = new SimuladorTemp()\r\n * ```\r\n */\r\nexport default class SimuladorTemp {\r\n    static Modbus = new Modbus(9600, \"Cappinho\", undefined, 'none')\r\n    static NodeAddress = 0x01\r\n\r\n    static ReqReadDeviceID = \"012B0E0401B2E7\"\r\n    static RegexReadDeviceID = new RegExp(\"012B0E04810000010109494E562D436170706FBEB7\")\r\n\r\n    static Sensors = {\r\n        J: { value: 0x00, min: -10, max: 760 },\r\n        K: { value: 0x01, min: 10, max: 1150 }\r\n    }\r\n\r\n    static Addr = {\r\n        HoldingRegister: {\r\n            State: 8192,//0x2000, 0=modo normal, 1=modo calibração entrada, 2=modo calibração saída\r\n            StateN: 8193,//0x2001,\r\n            SensorType: 8194,//0x2002, j ou k\r\n            Mode: 8195,//0x2003, saída é 0, entrada é 1\r\n            Value: 8196,//0x2004,\r\n            Compensation: 8197,//0x2005, \r\n            InputValue: 12289,//0x3001,\r\n            Ambient: 12290,//0x3002,\r\n        }\r\n    }\r\n\r\n    static OperationMode = {\r\n        Normal: 0x00,\r\n        CalibrationIN: 0x01,\r\n        CalibrationOUT: 0x02\r\n    }\r\n\r\n    static Etapa = {\r\n        Inicial: 0x00,\r\n        Um: 0x01,\r\n        Dois: 0x02,\r\n        Tres: 0x03,\r\n        Quatro: 0x04,\r\n        Cinco: 0x05\r\n    }\r\n\r\n    static Mode = {\r\n        OUT: 0x00,\r\n        IN: 0x01,\r\n    }\r\n\r\n    static Compensation = {\r\n        state: false,\r\n        OFF: 0x00, //sem compensação interna\r\n        ON: 0x01,   //com compensação interna \r\n    }\r\n\r\n    static OutputConfig = {\r\n        SensorType: 0x00,\r\n        Mode: 0x00,\r\n        Value: 0x00,\r\n        Compensation: 0x00,\r\n    }\r\n\r\n    static async Connect() {\r\n        while (!Socket.IO.connected) { await SerialUtil.Delay(1000); console.log(`SimuladorTemp: Aguardando conexão com server...`) }\r\n\r\n        const discover = await this.Modbus.portDiscover({ request: this.ReqReadDeviceID, regex: this.RegexReadDeviceID }, { manufacturer: \"FTDI\" })\r\n        if (!discover.success) { return { success: false, msg: discover.msg } }\r\n\r\n        const create = await this.Modbus.create()\r\n        if (!create.success) { return { success: false, msg: create.msg } }\r\n\r\n        const setAddr = await this.Modbus.setNodeAddress(this.NodeAddress)\r\n        if (!setAddr.success) { return { success: false, msg: setAddr.msg } }\r\n\r\n        const test = await this.ReqInputValue()\r\n        if (!test.result) { return { success: false, msg: `SimuladorTemp: Falha ao estabelecer conexão` } }\r\n\r\n        console.log(`SimuladorTemp: Conexão bem sucedida`)\r\n\r\n        return { success: true, msg: `SimuladorTemp: Conexão bem sucedida` }\r\n    }\r\n\r\n    /**\r\n     * Manipula objeto de configuração de Output\r\n     * \r\n     * @param {String} sensor tipo de sensor que será simulado\r\n     * @param {Number} value Valor para simulação\r\n     * @param {String} group Seleção de grupo do simulador\r\n     * @param {Boolean} compensation Habilita compensação interna\r\n     * @returns Object\r\n     * \r\n     * # Exemplos\r\n     * \r\n     * ```js\r\n     * SimuladorTemp.SetOutputConfig(\"J\", 715, \"A\", false)\r\n     * ```\r\n     * \r\n     * ## Opções de simulação e ranges possíveis\r\n     * \r\n     * `Termpoar tipo J` -10 ~ 760\r\n     * \r\n     * `Termpoar tipo  K` 0 ~ 1150\r\n     * \r\n     * `Tensão mV` 0 ~ 100\r\n     * \r\n     * # Retorno\r\n     * ```js\r\n     * { success: Boolean, msg: String }\r\n     * ```\r\n     */\r\n    static SetOutputConfig(sensor, value, group = \"A\", compensation = false) {\r\n\r\n        if (isNaN(value)) { return { success: false, msg: `Valor de temperatura não é um número: ${value}` } }\r\n        if (!this.Sensors.hasOwnProperty(sensor)) { return { success: false, msg: `Valor de sensor é inválido: ${sensor}` } }\r\n        if (!(value >= this.Sensors[sensor].min && value <= this.Sensors[sensor].max)) { return { success: false, msg: `Valor de temperatura fora do range: [ ${this.Sensors[sensor].min} : ${this.Sensors[sensor].max} ]` } }\r\n\r\n        this.OutputConfig.Mode = 0x00\r\n        this.OutputConfig.Value = value\r\n        this.OutputConfig.SensorType = this.Sensors[sensor].value\r\n        compensation ? this.OutputConfig.Compensation = 0x01 : this.OutputConfig.Compensation = 0x00\r\n        this.Compensation.state = compensation\r\n\r\n        return { success: true, msg: `Nova configuração recebida` }\r\n    }\r\n\r\n    /**\r\n     * Envia objeto de configuração passado como parametro ao simulador de temperatura\r\n     * \r\n     * @param {Object} config \r\n     * @returns Object\r\n     * \r\n     * # Exemplos\r\n     * \r\n     * ```js\r\n     * SimuladorTemp.SetOutputConfig(\"J\", 715, \"A\", false)\r\n     * const result = await SimuladorTemp.SendOutputConfig()\r\n     * ```\r\n     * \r\n     * # Result\r\n     * ```js\r\n     * { result: Boolean, msg: String }\r\n     * ```\r\n     */\r\n    static async SendOutputConfig() {\r\n        return await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.SensorType,\r\n            [\r\n                this.OutputConfig.SensorType,\r\n                this.OutputConfig.Mode,\r\n                this.OutputConfig.Value,\r\n                this.OutputConfig.Compensation\r\n\r\n            ], 1, 10)\r\n\r\n    }\r\n\r\n\r\n    /**\r\n     * Retorna os valores lidos nas entradas do simulador.\r\n     * \r\n     * ⚠️ O valor convertido retornado estará de acrodo com o tipo de sensor configurado para leitura!\r\n     * \r\n     * # Exemplos\r\n     * \r\n     * ```js\r\n     * const result = await SimuladorTemp.ReqInputValue()\r\n     * ```\r\n     * \r\n     */\r\n    static async ReqInputValue(compensation = true) {\r\n\r\n        const sensor = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.SensorType, 1)\r\n        if (!sensor.success) { return { success: false, msg: sensor.msg } }\r\n\r\n        if (this.Compensation.state != compensation) {\r\n            const config = await this.Modbus.WriteMultipleRegisters(\r\n                this.Addr.HoldingRegister.State,\r\n                [\r\n                    this.OperationMode.Normal,\r\n                    this.Etapa.Inicial,\r\n                    sensor.msg[0],\r\n                    this.Mode.IN,\r\n                    this.OutputConfig.Value,\r\n                    compensation ? this.Compensation.ON : this.Compensation.OFF\r\n                ],\r\n                1,\r\n                10\r\n            )\r\n\r\n            if (!config.success) { return { success: false, msg: config.msg } }\r\n\r\n            this.Compensation.state = compensation\r\n            await this.Delay(2500)\r\n        }\r\n\r\n        if (sensor.msg[0] === this.Sensors.J.value) {\r\n            sensor.msg[0] = \"J\"\r\n        } else {\r\n            sensor.msg[0] === this.Sensors.K.value\r\n            sensor.msg[0] = \"K\"\r\n        }\r\n\r\n        const inputValue = await this.Modbus.ReadInputRegisters(this.Addr.HoldingRegister.InputValue, 2)\r\n        if (inputValue.success) {\r\n            return {\r\n                result: true,\r\n                msg: \"Sucesso ao obter valores\",\r\n                sensor: sensor.msg[0],\r\n                inputValue: inputValue.msg[0] / 10,\r\n                ambient: inputValue.msg[1] / 10,\r\n                inputValueNotCompensated: (inputValue.msg[0] - inputValue.msg[1]) / 10\r\n            }\r\n        } else {\r\n            return {\r\n                result: false,\r\n                msg: \"Falha ao obter valores\",\r\n                sensor: null,\r\n                inputValue: null,\r\n                ambient: null,\r\n                inputValueNotCompensated: null\r\n            }\r\n        }\r\n    }\r\n\r\n    static async CalibrationInConfig() {\r\n\r\n        await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State,\r\n            [\r\n                this.OperationMode.CalibrationIN,\r\n                this.Etapa.Inicial,\r\n                this.Sensors.J.value,\r\n                this.Mode.IN,\r\n                0x00,\r\n                this.Compensation.OFF\r\n\r\n            ], 1, 10)\r\n\r\n        let Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n        let Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n        if (!Operation.success || !Step.success) {\r\n            return {\r\n                success: false,\r\n                msg: \"Calibração da entrada mal sucedida\"\r\n            }\r\n        }\r\n        else if (Operation.msg == this.OperationMode.CalibrationIN && Step.msg == this.Etapa.Inicial) {\r\n            await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State,\r\n                [\r\n                    this.OperationMode.CalibrationIN,\r\n                    this.Etapa.Um,\r\n                    this.Sensors.J.value,\r\n                    this.Mode.IN,\r\n                    0x00,\r\n                    this.Compensation.OFF\r\n\r\n                ], 1, 10)\r\n            Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n            Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n            if (Operation.msg == this.OperationMode.CalibrationIN && Step.msg == this.Etapa.Um) {\r\n                UI.showText(UI.top_main_text, \"Simule 10 sensor J no cappo-12 (grupo R) e pressione avança\")\r\n                if (!await UI.showAdvance(60000)) {\r\n                    return {\r\n                        success: false,\r\n                        msg: \"Calibração cancelada pelo operador\"\r\n                    }\r\n                } else {\r\n                    await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State,\r\n                        [\r\n                            this.OperationMode.CalibrationIN,\r\n                            this.Etapa.Dois,\r\n                            this.Sensors.J.value,\r\n                            this.Mode.IN,\r\n                            0x00,\r\n                            this.Compensation.OFF\r\n\r\n                        ], 1, 10)\r\n\r\n                    Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n                    while (Step.msg != this.Etapa.Tres) {\r\n                        Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n                    }\r\n                    UI.showText(UI.top_main_text, \"Simule 750 sensor J no cappo-12 (grupo R) e pressione avança\")\r\n                    if (!await UI.showAdvance(10000)) {\r\n                        return {\r\n                            success: false,\r\n                            msg: \"Calibração cancelada pelo operador\"\r\n                        }\r\n                    }\r\n                    await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State,\r\n                        [\r\n                            this.OperationMode.CalibrationIN,\r\n                            this.Etapa.Quatro,\r\n                            this.Sensors.J.value,\r\n                            this.Mode.IN,\r\n                            0x00,\r\n                            this.Compensation.OFF\r\n\r\n                        ], 1, 10)\r\n\r\n                    Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n                    Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n                    while (Operation.msg != this.OperationMode.Normal && Step.msg != this.Etapa.Inicial) {\r\n                        Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n                        Step = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n                    }\r\n                    return {\r\n                        success: true,\r\n                        msg: \"Calibração da entrada bem sucedida\"\r\n                    }\r\n\r\n                }\r\n\r\n            }\r\n\r\n        } else {\r\n            return {\r\n                success: false,\r\n                msg: \"Calibração da entrada mal sucedida\"\r\n            }\r\n        }\r\n\r\n\r\n    }\r\n\r\n    static async CalibrationOutConfig() {\r\n        const steps = [\r\n            { state: 1, message: \"Coloque o cappo-12 (grupo R) em modo entrada.\\n Utilice o encoder do cappinho para ajustar a saída para 0ºC.\\nPressione avança\" },\r\n            { state: 2, message: \"Coloque o cappo-12 Sensor J(grupo R) em modo entrada.\\n Utilice o encoder do cappinho para ajustar a saída para 750ºC.\\nPressione avança\" },\r\n            { state: 3, message: \"Coloque o cappo-12 Sensor K (grupo S) em modo entrada.\\n Utilice o encoder do cappinho para ajustar a saída para 0ºC.\\nPressione avança\" },\r\n            { state: 4, message: \"Coloque o cappo-12 Sensor K (grupo S) em modo entrada.\\n Utilice o encoder do cappinho para ajustar a saída para 1150ºC.\\nPressione avança\" }\r\n        ];\r\n\r\n        await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State, [\r\n            this.OperationMode.CalibrationOUT,\r\n            this.Etapa.Inicial,\r\n            this.Sensors.J.value,\r\n            this.Mode.OUT,\r\n            0x00,\r\n            this.Compensation.OFF\r\n        ], 1, 10);\r\n\r\n        let Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n        let Etapa = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n        if (!Operation.success || !Etapa.success) return { success: false, msg: \"Calibração da entrada mal sucedida\" };\r\n\r\n        for (const step of steps) {\r\n            await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State, [\r\n                this.OperationMode.CalibrationOUT,\r\n                step.state,\r\n                this.Sensors.J.value,\r\n                this.Mode.OUT,\r\n                0x00,\r\n                this.Compensation.OFF\r\n            ], 1, 10);\r\n\r\n            Operation = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.State, 1)\r\n            Etapa = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n            if (Etapa.msg != step.state) return { success: false, msg: \"Calibração da entrada mal sucedida\" };\r\n\r\n            if (step.message) {\r\n                UI.showText(UI.top_main_text, step.message);\r\n                if (!await UI.showAdvance(60000)) return { success: false, msg: \"Calibração da entrada mal sucedida\" };\r\n            }\r\n        }\r\n\r\n        await this.Modbus.WriteMultipleRegisters(this.Addr.HoldingRegister.State, [\r\n            this.OperationMode.CalibrationOUT,\r\n            this.Etapa.Cinco,\r\n            this.Sensors.J.value,\r\n            this.Mode.OUT,\r\n            0x00,\r\n            this.Compensation.OFF\r\n        ], 1, 10);\r\n\r\n        while ((Etapa = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)).msg != 0) {\r\n            Etapa = await this.Modbus.ReadHoldingRegisters(this.Addr.HoldingRegister.StateN, 1)\r\n        }\r\n\r\n        return { success: true, msg: \"Calibração da entrada bem sucedida\" };\r\n    }\r\n\r\n    static async Delay(timeout) {\r\n        return new Promise((resolve) => {\r\n            setTimeout(() => {\r\n                resolve()\r\n            }, timeout)\r\n        })\r\n    }\r\n\r\n\r\n    static { window.SimuladorTemp = SimuladorTemp }\r\n}"]}