vs对ABB机器人二次开发C#集成PC SDK开发ABB机器人上位机开发 变量实时刷新,实时修改 io刷新修改, 在线程序修改实时刷新 上位机移动机械手

先装个NuGet包ABB.Robotics.Controllers.PC,这是PC SDK的命根子。连接机器人第一件事就是找控制器:

var controllers = ControllerInfoCollection.GetRemoteControllers();
var target = controllers.First(c => c.HostName == "192.168.125.1");
using var controller = Controller.Connect(target, ConnectionType.Standalone);

这段代码扫局域网里的ABB控制器,连上后记得用using,不然端口泄漏等着你。连上后controller对象就是咱们的操作入口。

实时监控变量得用Watch机制,比轮询高效十倍:

var myVar = controller.Rapid.GetTask("T_ROB1").GetModule("MainModule").GetRapidData("counter");
myVar.ValueChanged += (s, e) => {
    this.BeginInvoke(() => lblCounter.Text = e.NewValue.ToString());
};
myVar.StartWatching(250); //250ms刷新间隔

这里注册了值变更事件,注意要用BeginInvoke跨线程更新UI。StartWatching的参数别设太小,机器人控制器扛不住高频请求。

改IO信号比想象中简单:

var diSignal = controller.IOSystem.GetSignal("di_safeDoor");
if (diSignal.ActiveLevel == ABB.Robotics.Controllers.IOSystem.DigitalSignalLevel.Low) {
    diSignal.ActiveLevel = DigitalSignalLevel.High; 
    diSignal.Execute(); //立即生效
}

改完记得Execute,不然配置不生效。IOSystem里还能批量操作信号组,适合需要同步多个IO的场景。

vs对ABB机器人二次开发C#集成PC SDK开发ABB机器人上位机开发 变量实时刷新,实时修改 io刷新修改, 在线程序修改实时刷新 上位机移动机械手

在线改程序才是重头戏,咱们直接热更新Rapid代码:

var task = controller.Rapid.GetTask("T_ROB1");
using var backup = task.Backup();
var module = task.GetModule("MainModule");
var code = module.GetCodeLines(); 

//找到要修改的行
var newCode = code.Select(line => line.Replace("vel:=100", "vel:=200")).ToList();
module.UpdateCode(newCode); //内存中修改
task.Restart(); //重启任务生效

注意一定要先备份!UpdateCode只是改内存,Restart才是真生效。建议用版本对比工具检查代码变更,避免手滑改错。

最后来点刺激的——用上位机直接驱动机器人:

var move = new MoveAbsolute(
    new RobotTarget(new Pos(300, 0, 500), controller.SystemCoordinateSystem),
    new SpeedData(500),
    new ZoneData(5)
);

using var mastership = controller.Rapid.GetTask("T_ROB1").Mastership.Acquire(500);
controller.Rapid.GetTask("T_ROB1").Execute(move);

Mastership必须抢,不然没控制权。速度参数单位是mm/s,坐标系用对很重要。执行前建议先做碰撞检测,别问我怎么知道的...

开发中遇到的坑:PC SDK的文档真是一言难尽,多试试API返回值。实时监控超过20个变量时建议分组处理,别把控制器搞崩了。最后提醒,生产环境一定要加异常恢复机制,机器人一动起来可没Ctrl+Z的机会。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐