项目中需要用到上位机直接操控机械臂。虽然可以通过PLC操控机械臂,但是涉及到位置校准,还是必须自己去操控机械臂。
ABB只提供了.NET版本的SDK用于与机械臂的通信。
为了测试我们还需要安装RobotStudio,这个软件是进行机械臂开发的软件,并且可以创建虚拟机械臂,我们在测试中只需要调通虚拟机械臂就足够了。
那么这里涉及到两个部分,PCSDK和RobotStudio。
下载地址:https://new.abb.com/products/robotics/robotstudio/downloads
此官方地址只能下载到最新版的,最新版的破解不了,只能试用30天。
下载以前的版本到这里:http://www.robotpartner.cn/
下载个6.08就可以了,破解方法网上很多,这里就不说了。
下载地址:http://developercenter.robotstudio.com/downloads_pc
下载个6.07或者6.08安装就可以了。以我自己为例,我下载的是6.07,因为版本越高,需要的.NET 版本越高,而需要的vs版本相应的越高,我之前只有vs2015版,最高配到.NET4.6.1,再高的SDK就要装更高版本的vs了。
①新建一个WinForm项目,然后将需要的dll添加引用进去。
程序集 ABB.Robotics.Controllers.PC
C:\Program Files (x86)\ABB Industrial IT\Robotics IT\SDK\PCSDK 6.07\ABB.Robotics.Controllers.PC.dll
程序集 RobotStudio.Services.RobApi
C:\Program Files (x86)\ABB Industrial IT\Robotics IT\SDK\PCSDK 6.07\RobotStudio.Services.RobApi.dll
程序集 RobotStudio.Services.RobApi.Desktop
C:\Program Files (x86)\ABB Industrial IT\Robotics IT\SDK\PCSDK 6.07\RobotStudio.Services.RobApi.Desktop.dll
调用手册:http://developercenter.robotstudio.com/pcsdk/api_reference
②初始化时扫描网络
this.scanner = new NetworkScanner();
this.scanner.Scan();
ControllerInfoCollection controllers = scanner.Controllers; ListViewItem item = null;
foreach (ControllerInfo controllerInfo in controllers)
{
item = new ListViewItem(controllerInfo.IPAddress.ToString());
item.SubItems.Add(controllerInfo.Id);
item.SubItems.Add(controllerInfo.Availability.ToString());
item.SubItems.Add(controllerInfo.IsVirtual.ToString());
item.SubItems.Add(controllerInfo.SystemName);
item.SubItems.Add(controllerInfo.Version.ToString());
item.SubItems.Add(controllerInfo.ControllerName);
this.listView_robot.Items.Add(item);
item.Tag = controllerInfo;
}
this.networkwatcher = new NetworkWatcher(scanner.Controllers);
this.networkwatcher.Found += new EventHandler(HandleFoundEvent);
this.networkwatcher.Lost += new EventHandler(HandleLostEvent);
this.networkwatcher.EnableRaisingEvents = true;
③添加发现和丢失机械臂的回调
private void HandleLostEvent(object sender, NetworkWatcherEventArgs e)
{
//throw new NotImplementedException();
this.Invoke(new EventHandler(RemoveControllerFromListView), new Object[] { this, e });
}
private void HandleFoundEvent(object sender, NetworkWatcherEventArgs e)
{
this.Invoke(new EventHandler(AddControllerToListView), new Object[] { this, e });
}
// 在这里添加到列表
private void AddControllerToListView(object sender, NetworkWatcherEventArgs e)
{
ControllerInfo controllerInfo = e.Controller;
ListViewItem item = new ListViewItem(controllerInfo.IPAddress.ToString());
item.SubItems.Add(controllerInfo.Id);
item.SubItems.Add(controllerInfo.Availability.ToString());
item.SubItems.Add(controllerInfo.IsVirtual.ToString());
item.SubItems.Add(controllerInfo.SystemName);
item.SubItems.Add(controllerInfo.Version.ToString());
item.SubItems.Add(controllerInfo.ControllerName);
this.listView_robot.Items.Add(item);
item.Tag = controllerInfo;
}
private void RemoveControllerFromListView(object sender, NetworkWatcherEventArgs e)
{
ControllerInfo controllerInfo = e.Controller;
foreach (ListViewItem item in listView_robot.Items)
{
// 下标1的位置时id
if (item.SubItems[1].Name == controllerInfo.Id)
this.listView_robot.Items.Remove(item);
}
}
④在RobotStudio中添加虚拟机械臂