更多内容请点击 R工控人 关注

********************************

如何获取更多经典文章?

关注 R工控人,定期分享实用资料与技术解答!!!

简介

发那科机器人的信号系统包含:

通用信号:数字DO/DI、组GO/GI、模拟AO/AI、F、M

专用信号:远程UOP、本地SOP、机器人EE接口RO/RI、示教器按键TPIN/TPOUT

通用信号,允许用户进行分配,将物理的io与系统内的逻辑对应,能够在TP&KAREL程序中使用,达到对外部设备的控制。

专用信号,不允许用户进行分配,该类信号规定了每个信号的功能,且与系统的状态、硬件的状态有关,无论是输入还是输出,对于用户来说它们都是只读的。

信号状态与分配

02 - 1 通用信号的基本使用

在KAREL中,可以对信号进行赋值、读取:

--数字信号 DOUT[1] = ON --DO 赋值 IF (DIN[1]) THEN --DI 只读 DOUT[2] = ON ENDIF --模拟信号 AOUT[1] = 123 --组信号 GOUT[1] = 255

数字: DIN、DOUT

模拟: AIN、AOUT

EE : RDI、RDO

SOP : OPIN、OPOUT

示教器按键: TPIN、TPOUT

焊接: WDI、WDO、WSI、WSO

组: GIN、GOUT

专用UOP: UIN、UOUT

激光: LDI、LDO、LAI、LAO

F: FLG

M: MRK

在TP程序中,使用如下:

R[1] = AI[1] IF (R[1] > 2047) JMP LBL[1] ENDIF END LBL[1] DO[1] = ON GO[1] = 123

02 - 2 通用信号的分配

TP iPendant中进行分配,如下:

图2-1 进入数字信号

发那科机器人精度(发那科机器人信号系统)(1)

图2-2 选择分配

发那科机器人精度(发那科机器人信号系统)(2)

以上界面为KAREL结合字典实现的UI,方便用户对信号进行分配。

其中这里要解释:

范围( DO[1-8] ): 系统内部逻辑信号

机架: 物理设备的号码,例如Mate柜的CRMA15/CRMA16设备,机架号为48。

插槽: 物理设备的插槽号码。

开始点: 物理设备信号的接线,参照手册内不同设备的接线图。

状态: 反应了当前分配的状态,ACTIV为激活有效,UNASG为未分配,PEND为重启生效。

明白以上几点,那么在用户点击分配后,KAREL中是如何实现分配的?以下列举出KAREL中信号有关的内置程序:

SET_PORT_ASG

功能: 将物理设备端口分配给系统内部的逻辑端口

Purpose: Allows a KAREL program to assign one or more logical ports to specified physical port(s) Syntax : SET_PORT_ASG(log_port_type, log_port_no, rack_no, slot_no, phy_port_type, phy_port_no, n_ports, status) Input/Output Parameters : [in] log_port_type : INTEGER [in] log_port_no : INTEGER [in] rack_no : INTEGER [in] slot_no : INTEGER [in] phy_port_type : INTEGER [in] phy_port_no : INTEGER [in] n_ports : INTEGER [out] status : INTEGER %ENVIRONMENT Group :IOSETUP

参数解释:

log_port_type : 逻辑端口类型,在WinOLPC下的 “kliotyps.kl”文件列举的常量值:

发那科机器人精度(发那科机器人信号系统)(3)

log_port_no: 逻辑端口号码,这与示教器分配界面显示的范围一致

发那科机器人精度(发那科机器人信号系统)(4)

rack_no : 机架,这与示教器分配界面的机架一致

发那科机器人精度(发那科机器人信号系统)(5)

slot_no : 插槽,这与示教器分配界面的插槽一致

发那科机器人精度(发那科机器人信号系统)(6)

phy_port_type : 物理端口类型,一般与逻辑端口类型保持一致。

phy_port_no : 物理设备的开始点,这与示教器内分配界面的开始点保持一致

发那科机器人精度(发那科机器人信号系统)(7)

n_ports : 分配的数量,这与范围是一样的,例如,分配DO信号,逻辑端口为1,开始点为1,分配的数量为5时,则表明DO[1] - DO[5] 所对应的开始点为1 - 5.

status : 内置程序返回的状态,当不为0时,表示分配错误

例如分配数字DO信号,范围1-8,机架48,插槽1,开始点21:

发那科机器人精度(发那科机器人信号系统)(8)

SET_PORT_ASG(2,1,48,1,2,21,8,STATUS)

在进行分配前,必须为未分配状态,否则将报错误,以下为清除全部分配:

可以按需进行删除指定范围的分配,13007错误为已分配并重复分配,忽略这个问题即可。

PROGRAM TEST01 VAR STATUS :INTEGER int_val :INTEGER BEGIN FOR int_val = 1 TO 512 DO SET_PORT_ASG(2,int_val, 0, 0, 0, 0, 0, STATUS) IF (STATUS <> 0 )AND(STATUS <> 13007) THEN POST_ERR(STATUS,'',0,1) ENDIF ENDFOR END TEST01

CLR_PORT_SIM

清除逻辑端口仿真信号

Purpose: Sets the specified port to be unsimulated Syntax : CLR_PORT_SIM(port_type, port_no, status) Input/Output Parameters : [in] port_type :INTEGER [in] port_no :INTEGER [out] status :INTEGER %ENVIRONMENT Group :iosetup

SET_PORT_SIM

仿真逻辑端口

Purpose: Sets port simulated Syntax : SET_PORT_SIM(port_type, port_no, value, status) Input/Output Parameters : [in] port_type : INTEGER [in] port_no : INTEGER [in] value : INTEGER [out] status : INTEGER %ENVIRONMENT Group :IOSETUP

GET_PORT_SIM

获取逻辑端口仿真信号的值

Purpose: Gets port simulation status Syntax : GET_PORT_SIM(port_type, port_no, simulated, status) Input/Output Parameters: [in] port_type :INTEGER [in] port_no :INTEGER [out] simulated :INTEGER [out] status :INTEGER %ENVIRONMENT Group :IOSETUP

GET_PORT_ASG、GET_LOG_ASG

获取逻辑端口的配置

Purpose: Allows a KAREL program to determine the physical port(s) to which a specified logical port is assigned. Syntax : GET_PORT_ASG(log_port_type, log_port_no, rack_no, slot_no, phy_port_type, phy_port_no, n_ports, status) Input/Output Parameters : [in] log_port_type :INTEGER [in] log_port_no :INTEGER [out] rack_no :INTEGER [out] slot_no :INTEGER [out] phy_port_type :INTEGER [out] phy_port_no :INTEGER [out] n_ports :INTEGER [out] status :INTEGER %ENVIRONMENT Group :IOSETUP Syntax :GET_LOG_ASG(index:INTEGER, log_port_typ:INTEGER, fst_log_port:INTEGER, n_log_ports:INTEGER, rack_no:INTEGER, slot_no:INTEGER, phy_port_typ:INTEGER, fst_phy_port:INTEGER, valid:INTEGER, status:INTEGER)

GET_PORT_CMT、SET_PORT_CMT

逻辑端口的注释读取与赋值

Syntax : GET_PORT_CMT(port_type, port_no, comment_str, status) Syntax : SET_PORT_CMT(port_type, port_no, comment_str, status) Input/Output Parameters : [in] port_type :INTEGER [in] port_no :INTEGER [out] comment_str :STRING [out] status :INTEGER %ENVIRONMENT Group :IOSETUP

GET_PORT_MOD、SET_PORT_MOD

逻辑端口的模式获取与设定,0 - 正常、1 - 反置、2- 互补。

反置为物理高电平,逻辑相反为低电平,物理为低电平,逻辑相反为高电平

互补为一个输出逻辑端口分配多个物理端口。

默认为正常模式。

Syntax : GET_PORT_MOD(port_type, port_no, mode_mask, status) Syntax : SET_PORT_MOD(port_type, port_no, mode_mask, status) Input/Output Parameters : [in] port_type :INTEGER [in] port_no :INTEGER [out][IN] mode_mask :INTEGER [out] status :INTEGER %ENVIRONMENT Group :IOSETUP

SET_PORT_VAL、GET_PORT_VAL

读取、设定逻辑端口的值

返回的值为字符串,对于布尔类型 0 = OFF, or 1 = ON

Syntax : GET_PORT_VAL(port_type, port_no, value, status) Input/Output Parameters : [in] port_type :INTEGER [in] port_no :INTEGER [out][IN] value :STRING [out] status :INTEGER %ENVIRONMENT Group :IOSETUP

IO_MOD_TYPE

获取模块的类型

Syntax : IO_MOD_TYPE(rack_no, slot_no, mod_type, status) Input/Output Parameters: [in] rack_no :INTEGER [in] slot_no :INTEGER [out] mod_type :INTEGER 6 A16B-2202-470 7 A16B-2202-472 8 A16B-2202-480 [out] status :INTEGER %ENVIRONMENT Group :IOSETUP

IOVALSET、IOVALRD

逻辑端口的值获取与设定。

int_val = IOVALSET(2,1,1) 对 DO[1] 设为ON

Syntax : IOVALRD(io_type,io_index,value):INTEGER Syntax : IOVALSET(io_type,io_index,value):INTEGER Input/Output Parameters: [in] io_type :INTEGER [in] io_index :INTEGER [in][out] value :INTEGER

CM命令设定逻辑端口值如下:

FUNCTION: 用于设定信号状态,信号支持以下部分定义CONST(Di\Do\Ri\Ro\Flag)

1 = DI 2 = DO 8 = RI 9 = RO 35=Flag

语法结构

SETIOVAL type 索引号 仿真状态(0不仿真,1仿真) unsim值 sim值

TPIN&TPOUT参照:

KAREL Reference Manual B-83144EN-1

C#实现iPendant的按键模拟 & CGTP

SOP、UOP 参照:

B-83284CM_07

程序启动的5种方式

********************************

更多内容请点击 R工控人 关注

欢迎大家问题留言,沟通交流

关注 R工控人,定期分享实用资料与技术解答!!!

,