Files
bj_power/bj_power_mes/internal/plc/error.go
T

57 lines
1.3 KiB
Go

/*
* 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))
}