更多内容请点击 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 进入数字信号 |
|
图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”文件列举的常量值:
|
log_port_no: 逻辑端口号码,这与示教器分配界面显示的范围一致
|
rack_no : 机架,这与示教器分配界面的机架一致
|
slot_no : 插槽,这与示教器分配界面的插槽一致
|
phy_port_type : 物理端口类型,一般与逻辑端口类型保持一致。
phy_port_no : 物理设备的开始点,这与示教器内分配界面的开始点保持一致
|
n_ports : 分配的数量,这与范围是一样的,例如,分配DO信号,逻辑端口为1,开始点为1,分配的数量为5时,则表明DO[1] - DO[5] 所对应的开始点为1 - 5.
status : 内置程序返回的状态,当不为0时,表示分配错误
例如分配数字DO信号,范围1-8,机架48,插槽1,开始点21:
|
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工控人,定期分享实用资料与技术解答!!!
,