/* * Copyright (c) 2025 Beijing Hardman Automation Equipment Co., LTD. All rights reserved. * * Project: adapter * File: error.go * Last: 2025-05-15 11:52:07 * Author: wangcheng@bj-hardman.com */ package plc import ( "encoding/binary" "errors" "fmt" "bj_power_mes/internal/preload" ) // 预定义错误 var ( ErrNotConnect = errors.New("PLC未连接") ErrInvalidAddress = errors.New("无效的PLC地址") ) // GetErrorCode 获取机器人错误代码 func (m *Manager) GetErrorCode() (int64, error) { addr := preload.GetMAddress("ErrorCode") bs, err := m.GetPlc().Read(addr.Address(), 8) if err != nil { return 0, err } return int64(binary.LittleEndian.Uint64(bs)), nil } var ( Err_TaskNoError = RobotError(1 << 0) // 任务号错误 Err_RackNoError = RobotError(1 << 1) // 料架号下发错误 Err_RackHasNoWorkpiece = RobotError(1 << 2) // 所取料架号无料 ) var RobotErrorMap = map[RobotError]string{ Err_TaskNoError: "任务号错误", Err_RackNoError: "料架号下发错误", Err_RackHasNoWorkpiece: "所取料架号无料", } type RobotError int64 func (r RobotError) Error() string { if s, ok := RobotErrorMap[r]; ok { return s } return fmt.Sprintf("unknown robot error (code: %d)", int64(r)) }