C#与ABB机械手通信控制动作

C#与ABB机械手建立通信,并控制机械手动作

第一步:安装软件
VS2017+PCSDK 2019.5 7.0.8721.594
分别在微软官网和ABB官网下载。
第二步:安装完软件后,找到PC SDK的安装目录,默认目录是C:\Program Files (x86)\ABB\SDK\PCSDK 2019。打开目录下的文件

在VS中添加引用。

将ABB.Robotics.Controllers.PC.dll和RobotStudio.Services.RobApi.dll两个DLL文件添加进来。
添加using指令。

第三步:程序实现,建立连接。
public static ABB.Robotics.Controllers.RapidDomain.Task tRob1 = null;//
private NetworkScanner scanner = null;
private Controller controller = null;
ControllerInfoCollection controllers = null;
scanner = new NetworkScanner();
scanner.Scan();
controllers = scanner.Controllers;//扫描到的所有控制器
if (scanner.Controllers.Count == 1)//只搜索到一个机械手的情况,
{
try
{
if (controllers[0].IPAddress.ToString() == "192.168.1.80")
{
controller = Controller.Connect(controllers[0], ABB.Robotics.Controllers.ConnectionType.Standalone, false);
}
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
if (controller != null)
{
if (controller.Connected == true)
{
controller.Logon(UserInfo.DefaultUser);
tRob1 = controller.Rapid.GetTask("T_ROB1");
}
if (controller.Connected == true)//指示灯
{
pictureBox3.Image = imageList1.Images[3];
}
else
{
pictureBox3.Image = imageList1.Images[1];
}
}
第四步:向ABB坐标变量、位变量等写入或读取数据。
c# 写ABB布尔变量:
if (controller.IsMaster == false && controller.OperatingMode == ControllerOperatingMode.Auto)
{
try
{
using (var m = Mastership.Request(controller))
{
if (controller.IsMaster == false) MessageBox.Show("ABB主机请求失败");
var rd16 = controller.Rapid.GetRapidData("T_ROB1", "MainModule", "ABB_detection_star");
rd16.Value = new Bool(true);
}
}
catch (Exception ex)
{ MessageBox.Show(ex.ToString());
}
}
C#读ABB布尔变量:
RapidData rd4 = controller.Rapid.GetRapidData("T_ROB1", "MainModule", "ABB_safety_bit");
if (rd4.Value is Bool)
{
Bool rapidBool = (Bool)rd4.Value;
}
C#读坐标变量:
if (MAIN.tRob1 != null)
{
MAIN.rd_repeat = MAIN.tRob1.GetRapidData("MainModule", "ABB_photo_data");
RobTarget rgb1 = (RobTarget)MAIN.rd_repeat.Value;
dataGridView2.Rows[2].Cells[1].Value = rgb1.Trans.X.ToString();
dataGridView2.Rows[3].Cells[1].Value = rgb1.Trans.Y.ToString();
dataGridView2.Rows[4].Cells[1].Value = rgb1.Trans.Z.ToString();
}
C#写入坐标变量:
using (var m = Mastership.Request(controller))
{
RapidData rx5 = controller.Rapid.GetTask("T_ROB1").GetModule("MainModule").GetRapidData("pPlaceA");
RobTarget rgt5 = (RobTarget)rx5.Value;
if (controller.IsMaster == false) MessageBox.Show("ABB主机请求失败2");
rgt5.Trans.X = (float)79.25;;
rgt5.Trans.Y = (float)83.29;
rgt5.Trans.Z = (float)39.55;
//rbg.FillFromString2("[[123.28,1029.42,573.04],[0.241743,-0.666781,0.280356,-0.64681],[0,-2,3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]");
rx5.Value = rgt5;//在ABB指定位置写入坐标
}
C#针对网线接触不良,ABB断电等可以加断开连接检测功能:
if (controller != null)//实际测试验证好用,ABB断电,指示灯变为红灯,ABB再次上电,指示灯自动变为绿灯
{
try
{
if (controller.Connected == false)
{
pictureBox3.Image = imageList1.Images[1];
controller = null;//断开连接后,CONTROLLER给NULL值,方便程序自动重连。
// MessageBox.Show("ABB断开连接");
}
else
{
pictureBox3.Image = imageList1.Images[3];
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
到这基本基本可以实现C#与ABB通信并控制ABB运动的各项基本功能

C# 中与ABB机器人通信的主要方式是使用 Socket 网络通信,通过 Ethernet 网络连接到机器人控制器,向机器人发送指令并接收机器人的反馈信息。 下面是一个简单的 C# 代码示例,用于向机器人发送指令并接收机器人的反馈信息: ``` using System.Net.Sockets; // 机器人控制器 IP 地址和端口号 string ipAddress = "192.168.125.1"; int port = 1025; // 创建 Socket 对象并连接机器人控制器 Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.Connect(new IPEndPoint(IPAddress.Parse(ipAddress), port)); // 发送指令 string command = "MoveJ p1, v100\ntest\n"; byte[] buffer = Encoding.ASCII.GetBytes(command); clientSocket.Send(buffer); // 接收机器人反馈信息 buffer = new byte[1024]; int count = clientSocket.Receive(buffer); string feedback = Encoding.ASCII.GetString(buffer, 0, count); // 关闭 Socket 连接 clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); ``` 其中,ipAddress 和 port 变量分别表示机器人控制器的 IP 地址和端口号,使用 Socket 对象连接到机器人控制器后,通过 Send() 方法向机器人发送指令,通过 Receive() 方法接收机器人反馈信息。 需要注意的是,机器人控制器接收的指令需要使用 Rapid 语言编写,并按照 Rapid 语言的语法规则进行格式化和解析。此外,机器人控制器的 IP 地址和端口号需要根据实际情况进行设置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值