4.5 IO 신호
개요
신호 모듈은 다음 핵심 기능을 캡슐화하는 컨트롤러의 I/O,에 대한 통합 read/write 인터페이스를 제공합니다.
- Digital/analog 입출력 제어
- 다중 채널 일괄 작업
- 시간에 따른 트리거링 기능
signals 를 통해 다음을 수행할 수 있습니다.
- 현재 신호 상태 쿼리
- 일괄 쓰기 DO/RO/GO 포트
- 지정된 간격으로 펄스 생성
이를 통해 외부 그리퍼, 센서 또는 생산 라인 장비와의 조정이 가능합니다.
4.5.1 지정된 유형 및 포트의 IO 값 읽기
| 메서드 이름 | signals.read( signal_type : SignalType, index : int) -> tuple[float, StatusCodeEnum] |
|---|---|
| 설명 | 지정된 유형 및 포트의 IO 값을 읽습니다(DI/DO/UI/UO/RI/RO/GI/GO/TAI/TDI/TDO/AI/AO 지원). |
| 요청 매개변수 | signal_type : SignalType IO 유형. index : int IO 인덱스(1부터 시작). |
| 반환 값 | 부동 소수점: IO 값. DI/DO/RI/RO/TAI/TDI/TDO/AI/AO는 0 또는 1을 반환하고 GI/GO는 정수 값을 반환합니다(Off의 경우 음수). StatusCodeEnum: 함수 실행 결과. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
| 메모 | UI/UO는 읽기만 가능하고 쓰기는 불가능합니다. |
4.5.2 지정된 유형 및 포트에 IO 값 쓰기
| 메서드 이름 | signals.write( signal_type : SignalType, index : int, value : float) -> StatusCodeEnum |
|---|---|
| 설명 | 지정된 유형 및 포트의 IO 값을 씁니다. 현재는 DO/RO/GO/TDO/AO만 지원됩니다. |
| 요청 매개변수 | signal_type : SignalType IO 유형. index : int IO 인덱스(1부터 시작). value : 부동 IO 값(DO/RO/TDO에서는 0/1;를 허용하고 GO에서는 정수를 기대하며 AO에서는 부동 아날로그를 허용합니다). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: 单信号IO读写示例 / Example of single-signal I/O reading and writing
"""
from Agilebot import Arm, SignalType, SignalValue, StatusCodeEnum
# [ZH] 初始化捷勃特机器人
# [EN] Initialize the robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the robot
ret = arm.connect("10.27.1.254")
if ret == StatusCodeEnum.OK:
print("机器人连接成功 / Robot connected successfully")
else:
print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 读取IO
# [EN] Read IO
do_value, ret = arm.signals.read(SignalType.DO, 1)
if ret == StatusCodeEnum.OK:
print("读取IO成功 / Read IO successfully")
print(f"DO 1 状态 / DO 1 status:{do_value}")
else:
print(f"读取IO失败,错误代码 / Read IO failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 写入IO
# [EN] Write IO
ret = arm.signals.write(SignalType.DO, 1, SignalValue.ON)
if ret == StatusCodeEnum.OK:
print("写入IO成功 / Write IO successfully")
else:
print(f"写入IO失败,错误代码 / Write IO failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")4.5.3 일괄 읽기 DO(디지털 출력) 포트 값
| 메서드 이름 | signals.multi_read( signal_type : SignalType, io_list : list) -> tuple[list, StatusCodeEnum] |
|---|---|
| 설명 | DO(디지털 출력) 포트 값을 일괄적으로 읽습니다. |
| 요청 매개변수 | signal_type : SignalType IO 유형(DO만 해당). io_list : 포트 번호를 나열합니다(비워둘 수 없음). |
| 반환 값 | 목록: [port1, state1, port2, state2, ...] 형식의 컨트롤러 응답 StatusCodeEnum: 함수 실행 결과. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
| 메모 | UI/UO는 읽기만 가능하고 쓰기는 불가능합니다. |
4.5.4 일괄 쓰기 DO(디지털 출력) 신호
| 메서드 이름 | signals.multi_write( signal_type : SignalType, io_list : list) -> StatusCodeEnum |
|---|---|
| 설명 | DO(디지털 출력) 신호를 일괄 쓰기합니다. |
| 요청 매개변수 | signal_type : SignalType IO 유형(DO만 해당). io_list : Port/value 쌍을 나열합니다(예: [port1, state1, port2, state2]; 길이가 짝수이고 > 0). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |
예제 코드
py
#!python
"""
Copyright © 2016 Agilebot Robotics Ltd. All rights reserved.
Instruction: 多信号IO读写示例 / Example of multi-signal I/O reading and writing
"""
from Agilebot import Arm, SignalType, SignalValue, StatusCodeEnum
# [ZH] 初始化捷勃特机器人
# [EN] Initialize the robot
arm = Arm()
# [ZH] 连接捷勃特机器人
# [EN] Connect to the robot
ret = arm.connect("10.27.1.254")
if ret == StatusCodeEnum.OK:
print("机器人连接成功 / Robot connected successfully")
else:
print(f"机器人连接失败,错误代码 / Robot connection failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 读取IO
# [EN] Read IO
do_value, ret = arm.signals.multi_read(SignalType.DO, [1, 2])
if ret == StatusCodeEnum.OK:
print("读取IO成功 / Read IO successfully")
print(f"DO 1 状态 / DO 1 status:{do_value}")
else:
print(f"读取IO失败,错误代码 / Read IO failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 写入IO
# [EN] Write IO
ret = arm.signals.multi_write(SignalType.DO, [1, SignalValue.ON, 2, SignalValue.ON])
if ret == StatusCodeEnum.OK:
print("写入IO成功 / Write IO successfully")
else:
print(f"写入IO失败,错误代码 / Write IO failed, error code: {ret.errmsg}")
arm.disconnect()
exit(1)
# [ZH] 断开捷勃特机器人连接
# [EN] Disconnect from the robot
arm.disconnect()
print("机器人断开连接成功 / Robot disconnected successfully")4.5.5 시간 간격으로 IO 채널 트리거
| 메서드 이름 | signals.trigger_io_with_intervals( in_port : int = -1, intervals : list, out_ports : list, pulse_duration : int) -> StatusCodeEnum |
|---|---|
| 설명 | 일련의 시간 간격에 따라 여러 출력 포트를 트리거하고 선택적으로 시작하기 전에 DI 포트의 상승 에지를 기다립니다. |
| 요청 매개변수 | in_port : int 입력 포트(기본값 -1, 입력 트리거 없음). intervals : 시간 간격(ms)을 나열합니다. out_ports : 출력 포트를 나열합니다. pulse_duration : int 펄스 지속 시간(ms). |
| 반환 값 | StatusCodeEnum: 함수 실행 결과. |
| 호환 로봇 소프트웨어 버전 | 협업(Copper): v7.5.0.0+ 산업용(Bronze): v7.5.0.0+ |