ABB机器人组合信号GO/GI:配置、位权计算与避坑实战

发布时间:2026/10/26 6:23:36
ABB机器人组合信号GO/GI:配置、位权计算与避坑实战 简介ABB组合信号GO/GI应用说明是一份面向ABB机器人调试与电气自动化工程师的文档资料重点讲解机器人通过组输出/组输入与PLC高效交互的方法解决传统数字量、模拟量信号在复杂工况下程序冗长、信号非同步易误判等痛点。整份资料为PDF格式共1个文件压缩包大小仅1.16MB轻量易用适合现场快速查阅或系统学习。目前已有929人学习下载内容涵盖GO/GI的信号定义、配置流程、地址映射规则连续地址如“1-3”与非连续地址如“1,4,6”的填写方式以及基于二进制位权计算组信号数值的具体案例。通过实际的DO组合输出与DI状态解码示例读者可掌握从添加信号、绑定IO单元到重启生效的完整操作链路并了解组合信号在减少代码量、提升通信准确性与程序可维护性方面的核心价值。1. ABB 组合信号不是黑匣子它就是把多个数字量打包成一个整数先放一个现场场景某产线的机器人取料完成后需要靠三个 DO 的组合告诉 PLC按传统写法连写三条 SetDO但 PLC 扫描周期比机器人指令执行速度快经常捕捉到中间状态把“取料完成”误判成别的状态。ABB 机器人里的组合信号GO/GI就是为这类问题准备的把两个或以上数字量输入/输出打包成一个整数信号一次写、一次读既消除中间态也让程序短一大截。这份资料把配置路径、地址写法、算值方法串在了一条线上。下面从原理到配置再到排错完整走一遍适合正在做机器人-PLC 联调的调试工程师也适合刚接触 ABB 机器人信号配置的入门者。2. 为什么别用 SetDO 逐个控制顺序赋值与 PLC 误判的根源2.1 三种信号类型的边界DO/DI、AO/AI 与 GO/GI 各自解决什么ABB 机器人的信号从类型上分三类把边界搞清楚再选型比单纯会点配置更重要。信号类型简称值域典型用途通信特点数字量输入/输出DI/DO0 或 1气缸到位、夹具夹紧、安全门反馈单点独立一次一个状态模拟量输入/输出AI/AO连续量0~10V / 4~20mA压力传感器、变频器转速控制连续值需要标定组合输入/输出GI/GO整数按位展开多状态交互、与 PLC 批量握手一次读写一组状态数字量适合单点控制模拟量适合连续量场景组合信号解决的是“多个数字量必须同时变化”的交互需求。三者不是替代关系而是分工不同。现场最常见的误用是明明需要一组状态同时切换却用一串数字量指令去凑或者明明只需要一个单点信号却为了省事把它绑进组信号里把简单问题复杂化。我一般把 GO/GI 理解成“数字量的打包通道”。组合信号不是新的物理通道它依然走原有的 IO 板卡和接线只是把编程视角从逐位操作提升到了整数操作。代价是你必须清楚知道这个 GO 背后绑定了哪几个 DO 地址否则算出来的值就是玄学。对新手来说这是个门槛对老手来说这正是它高效的地方。2.2 传统写法的两个硬伤程序臃肿与信号不同步先看不使用组合信号时机器人告诉 PLC“取料完成”的典型程序SetDO DO1, 1; SetDO DO2, 0; SetDO DO3, 1;PLC 通知机器人取 1 号物料对应程序则是WaitDI DI1, 1; WaitDI DI2, 0; WaitDI DI3, 1;这种写法的第一个问题是程序臃肿。一次状态交互就要三条指令一个中型项目的机器人-PLC 交互点动辄几十个程序会膨胀得非常快。更麻烦的是这类指令大多靠复制粘贴改地址改错一个地址排查起来相当费劲——你很难一眼看出 DO1、DO2、DO3 是同一组逻辑因为它们散落在程序的不同位置。第二个问题更致命三条 SetDO 是顺序执行的DO1 变 1 和 DO3 变 1 之间存在一个执行时间差。这个时间差通常只有几毫秒但对扫描周期在 10ms 以内的 PLC 来说绰绰有余——它完全可能捕捉到 DO11、DO20、DO30 的中间组合从而误判状态。信号是顺序给的而 PLC 默认你是同时给的这个认知偏差就是误判的根源。同理WaitDI 一条一条等输入如果机器人动作逻辑依赖“三个 DI 同时满足”中间状态同样会干扰判断。组合信号一次写入是原子性的你写给 GO 一个整数系统会在同一个刷新周期内同步更新所有绑定 DO 的输出状态。PLC 要么读到旧值要么读到新值读不到中间组合。所以组合信号的核心价值不是省几条指令而是消除中间态这也是它在高速联调场景下不可替代的原因。2.3 组合信号的二进制本质整数是怎么变成一组 DO 状态的GO 的值看起来是十进制整数内部却是按二进制位展开的。绑定在 GO 上的每一个 DO 地址对应一个二进制位。比如 GO1 绑定 DO1、DO2、DO3地址按 1-3 排列那么 DO1 对应第 0 位权值 1DO2 对应第 1 位权值 2DO3 对应第 2 位权值 4。写给 GO1 一个 5二进制是 101从低位到高位读就是 1、0、1对应输出 DO11、DO20、DO31。这就是“填 5 让 DO1 和 DO3 同时变 1”的原理。理解位权分配是后续一切计算的基础也是排查配置错误的第一切入点凡是算值算不明白先回 Device Mapping 看顺序再谈计算。GI 方向相反但原理完全一致PLC 写给组输入一个整数机器人按位解析出各个 DI 的状态然后程序里拿这个整数做分支判断。具体怎么算、怎么解下一章专门讲。3. 配置 GO 的完整步骤Signal 添加、地址映射与重启生效3.1 新建组输出信号四个字段的对应关系以组输出 GO 为例配置入口在示教器的控制面板里路径一般是 Control Panel → Configuration → I/O System → Signal点“添加”新建。我在现场习惯把整个配置拆成四件事命名、选类型、绑设备、填地址四件事对应四个字段任何一个对不上后面就白做。Name 字段填信号名示例里用 GO1。命名规范我建议和项目 IO 表严格一致不要用默认的 signal1、signal2 这种名字否则两三个月后回看程序根本不知道这个组信号管的是哪个工位。Type of Signal 选 Group Output。这一步最容易选错的是错选成 Digital Output——一旦选错Device Mapping 会退化成单地址模式填 1-3 或 1,4,6 都会报格式错误。Assigned to Device 必须和要绑定的那组 DO 所在的 IO 单元一致。比如 DO1、DO2、DO3 都挂在 IO 单元 d652 上这个字段就选 d652。选错单元时地址映射会对不上添加时大概率直接报地址冲突。项目里有多块 IO 板卡时这一步尤其要看仔细别凭印象选。3.2 地址映射两种写法1-3 连续区间与 1,4,6 离散列表Device Mapping 是整个配置里最需要静下心的一步。填写原则就一句话填写的地址必须和需要绑定的 DO 地址一一对应。分两种情况对应两种写法。绑定对象DO 地址Device Mapping 写法位权分配DO1、DO2、DO31、2、31-31 对应位02 对应位13 对应位2DO1、DO4、DO61、4、61,4,6按列表顺序1 对应位04 对应位16 对应位2第一种DO 地址连续Device Mapping 填 1-3。这是最舒服的写法位权和地址序号天然对应算值最省心。第二种DO 地址不连续填 1,4,6。这里藏着最常见的坑位权不是按地址数值大小分配的而是按填写顺序分配的。列表第一个地址 1 对应第 0 位第二个地址 4 对应第 1 位第三个地址 6 对应第 2 位。配置阶段填的顺序直接决定了后面算值的位权这个顺序和地址大小可以毫无关系。填完点确定系统一般会提示需要重启控制器。这里的重启不是简单关机再开机我建议在示教器上确认保存配置后走标准控制器重启流程等系统完全加载完毕再继续操作。现场经常遇到配置“不生效”一半以上不是参数填错而是没重启或者重启后没做信号验证就直接跑程序了。3.3 重启与首次验证配置不生效先查哪几个参数重启完成后先别急着写程序在手动操作界面的信号视图里找到 GO1 做一次空载测试。连续地址 1-3 的情况下给 GO1 填 7DO1、DO2、DO3 三个 DO 应该同时变 1填 0三个全部复位。这一步同时验证三件事绑定关系对不对、地址映射对不对、重启有没有真正生效。如果填值后 DO 没反应优先查三处。第一Assigned to Device 里的 IO 单元和 DO 的 IO 单元是否一致这是最高频的错误配置界面不报错但实际驱动不到。第二Device Mapping 里的地址在该 IO 单元上是否真实存在有些板卡的地址不是从 1 开始连续排的中间有空档填了不存在的地址系统不报错但信号永远不会动。第三信号是否处于可写状态某些 IO 配置下信号可能被设为只读或被某个运行任务长期占用。这三处查完绝大多数不生效的问题都能定位。4. 组合信号的值计算为什么 GO1 填 5 等于 DO11、DO314.1 按位权相加连续地址下的计算过程计算 GO 的赋值本质是“把想要的 DO 状态翻译成二进制再转成十进制”。以 GO1 绑定 1-3DO1、DO2、DO3为例先把三个 DO 的目标状态写成二进制DO1 是第 0 位、DO2 是第 1 位、DO3 是第 2 位。要输出 DO11、DO20、DO31二进制从高位到低位写是 101转十进制等于 4×1 2×0 1×1 5所以 GO1 填 5。再看一个例子只让 DO2 变 1其余复位二进制是 010十进制就是 2。这两个例子里DO1、DO2、DO3 的权值分别是 1、2、4恰好和地址数字重叠所以容易记混——地址是“第几个”权值是“2 的几次方”连续地址下两者数值相同只是巧合不是必然。位数少时我直接心算把 1、2、4、8、16 这几个权值背下来哪个位要置 1 就加哪个权值要置 0 就不加。位数多或者状态切换比较频繁时我会在项目文档里维护一张映射表把整数和 DO 组合的对应关系列出来现场调试直接查表比反复心算可靠得多。查表还有个附带好处联调时和对方工程师对状态报一个整数双方都能快速定位到具体 DO。4.2 非连续地址的位权陷阱1,4,6 不能套用连续地址的心算非连续地址是翻车重灾区。假设 GO1 绑的是 DO1地址 1、DO4地址 4、DO6地址 6Device Mapping 填 1,4,6位权分配是地址 1 对应第 0 位权值 1地址 4 对应第 1 位权值 2地址 6 对应第 2 位权值 4。要让 DO11、DO61、DO40需要第 0 位和第 2 位置 1值等于 1 4 5。注意连续地址下 GO 填 5 是 DO1 和 DO3 为 1非连续地址下填 5 变成 DO1 和 DO6 为 1——同一个数值两组不同的 DO 状态完全取决于 Device Mapping 里填的列表顺序。再往深一层想让 DO6 单独为 1权值是 2² 4而不是 6想让 DO4 单独为 1权值是 2¹ 2而不是 4。和直觉完全相反。这个陷阱的实际危害在于项目后期调整过 IO 地址但 GO 的 Device Mapping 没有同步更新你按旧映射心算出来的值写进去DO 状态全乱。更隐蔽的是可能出现某个你根本不想让它输出的 DO 被意外置 1设备动作错乱这时候排查方向往往是程序逻辑很少有人第一时间想到是映射顺序变了。所以每次改 IO 表必须同步检查所有 GO/GI 的 Device Mapping。4.3 GI 组输入从整数还原 DI 状态的逆向解码GI 的配置流程和 GO 完全对称新建信号时 Type of Signal 选 Group InputAssigned to Device 选 DI 所在的 IO 单元Device Mapping 填 DI 地址规则和 GO 一模一样。区别只在读写方向GO 是机器人往外写GI 是机器人往里读。程序里读 GI 拿到的也是一个整数要按同样的位权规则还原 DI 状态。GI1 绑定 1-3读到 5二进制 101就是 DI11、DI20、DI31。我在程序里判断某个 DI 是否置 1习惯用位与运算而不是连写三条 WaitDIIF BitAnd(GI1, 4) 0 THEN ! DI3 为 1进入取 1 号物料分支 ENDIFBitAnd 把 GI1 的值和位权做与结果非零就说明对应位是 1。这样判断单个状态既快又干净还不会用一串 WaitDI 把任务阻塞在原地。需要同时等好几个 DI 组合时直接比较整个整数更省事GI1 5 就等价于 DI1 和 DI3 同时为 1、DI2 为 0一句话就能写清楚一个完整的联调条件。GI 的值计算规则和 GO 相同配置方向相反其余完全照搬。5. 避坑组合信号最常见的五个翻车现场组合信号配置本身不难但现场踩坑大多集中在地址理解偏差和重启遗漏上。下面五条是我在联调里反复见过的翻车现场每一条都能单独定位、单独解决。5.1 添加信号时报“地址已被占用”现象在 Signal 界面添加 GODevice Mapping 填完点确定系统报地址冲突或占用添加失败有时候报错信息里还不直接指出是哪个地址冲突。原因填的地址和同一 IO 单元上已有的 DO、GO 或其他信号地址重叠。组合信号和数字量信号共用同一份地址表并不是独立编号的。很多人默认“组合信号有自己的地址段”其实没有只要你之前用过一个 DO 的地址 1GO 的映射里就再也不能出现地址 1。解决先打开该 IO 单元的地址配置列表确认目标地址是否空闲再重新填映射。如果这几个 DO 地址已经被其他信号占用换一组空闲地址或者调整 GO 的绑定组合。这里有个细节报错时优先检查连续的区间写法 1-3它比离散写法更容易在不知不觉中占用到中间某个已被占用的地址。5.2 重启后 GO 能写值绑定 DO 毫无反应现象GO1 配置完成、重启成功手动给 GO1 填 7示教器上 GO1 的值确实变了但对应 DO 的指示灯和信号视图毫无反应。原因Assigned to Device 里选的 IO 单元和 DO 实际所在的 IO 单元不一致。配置没报错是因为两个单元上存在相同编号的地址系统照样接受了但驱动层面根本没连到目标 DO。这种错误在现场特别隐蔽因为名字看起来都对地址看起来也对唯一错的是“挂在哪块板上”。解决核对 GO 和 DO 的 IO 单元归属改成一致后重新配置并联重启。验证时别只看 GO 的值要看每个绑定 DO 的实际状态变化最好在端子上直接看对应输出点的指示灯。5.3 按心算填值DO 状态老是不对现象非连续地址 1,4,6 的情况下按连续地址的直觉填值结果 DO 输出和预期差一位甚至多个 DO 同时动作。比如想让 DO1 单独为 1填了 1结果 DO1 和 DO6 同时变 1。原因位权按 Device Mapping 列表顺序分配不是按地址数值分配。地址 1、4、6 对应的权值恰好是 1、2、4和地址数值碰巧相等很容易让人误以为位权永远跟着地址数值走。实际上在 1,4,6 的映射下想让 DO6 单独为 1权值是 4 而不是 6想让 DO4 单独为 1权值是 2 而不是 4。解决每次算值前先回看 Device Mapping 的列表顺序列出“地址 → 位 → 权值”三列对照再逐位展开验证。不要依赖心算尤其是项目改过地址之后旧的位权表立即作废。5.4 手动测试正常程序运行后信号时序混乱现象手动模式给 GO 赋各种值都正常一进自动运行PLC 偶尔收到错误的组合或者机器人读 GI 状态时对时错不是稳定地错而是偶发。原因程序里多处 SetGO 同一个信号运行任务和 IO 更新周期相互覆盖或者把写组信号放在了运动任务里刷新的时机和逻辑任务的预期不同步上一次还没刷完就被下一次覆盖最终输出取决于最后一次写入的时机。解决整个项目统一由一个逻辑任务负责写 GO避免多处赋值。如果对时序敏感写入后加一个很短的时间窗再做下一步动作给 IO 更新留出余量。GI 的读操作同样固定在逻辑任务里别放在运动中断里读中断里的读取时机不可控。5.5 程序报“参数类型不匹配”编译过不去现象写完程序编译报错提示信号参数类型不匹配错误指向 SetGO 那一行或者指向调用某个功能块时传入的 GO 参数。原因把组信号当成单点信号用了 SetDO 去写 GO或者把 GO 传给了要求 Digital Signal 类型的函数。GO 和 DO 在系统里是两种不同的信号类型类型检查严格混用直接编译不过。解决组信号统一用 SetGO 写入函数参数声明用 GO 信号类型单点信号用 SetDO。如果某个功能块只接受数字量在模块内部先把组信号的某一位提取出来用位与取位再传入不要把整个组信号硬塞进去。6. 进阶验证用一段快速测试程序确认 GO 的每一位都落在预期 DO 上配置完总觉得心里没底我习惯写一段一次性测试程序把 GO 从 0 加到满值每赋一个值停一拍同时观察 DO 状态。以绑定三个 DO 的 GO1 为例FOR i : 0 TO 7 DO SetGO GO1, i; WaitTime 1.0; ENDFOR这段程序按 0、1、2……7 的顺序逐一遍历 GO1 的每一个值每个值停留 1 秒。你在 DO 指示灯或者示教器信号视图上能完整看到 000、001、010、011、100、101、110、111 八种组合依次出现。如果某一步跳变、缺失或者出现预料外的组合说明 Device Mapping 的顺序和位权对应关系有问题当场就能定位到具体是哪一位错位。绑定五个 DO 就把循环上限改成 31绑定八个 DO 改成 255规则不变。测 GO 的同时我还会用短接线在接线端子上模拟 DI 信号测 GI 的读值是否按同样规则还原方向对调但逻辑一致。两件事做完组合信号的配置才算真正验干净。从那以后我每次配完 GO/GI 都强制自己走一遍这个循环测试不跳过。三位信号花不到十秒能省掉后面联调时一小时的定位时间。希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询