57 lines
1.3 KiB
Go
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))
|
|
}
|