ABB_利用C#SDK二次开发V2.4

全新的V2.4版本发布了,根据实际需要后面会完善基本功能,并开发出更实用的功能模块,欢迎小伙伴们留言。详细更新内容介绍如下:

更新1:新增指定输入值进行移动机器人

更新2:查看数据及变量功能

更新3:可以设置变量的值,包括以下数据类型,string、bool,num,dnum,pose,pos,workobject,tooldata,loaddata,byte,以及string、bool,num,dnum,pose,pos,byte 1-3维数组。

当然SDK中还支持Orient、JointTarget、ExtJoint、RobJoint、RobTarget、ConfData等数据的查看或修改,这里后期修改或示教点位时再开发。

更新4:更新DLL版本,21.3,以及.NETFrameWork4.8,此前为6.02版本DLL,.NETFrameWork4.6。

优化1:热重启控制器按钮,使用API接口实现的,使用SDK重启无效。

按照国际惯例 附上部分源码:


//修改pose数据类型
var varNum = controller.Rapid.GetRapidData(TaskName, Mod, VariableName);
Pose poseVal = (Pose)varNum.Value;
poseVal.FillFromString2(textBoxInputVariable.Text);
varNum.Value = poseVal;
//修改pos数据类型
Pos posVal = (Pos)varNum.Value;
posVal.FillFromString2(textBoxInputVariable.Text);
varNum.Value = posVal;
//修改tooldata数据类型
ToolData toolVal = (ToolData)varNum.Value;
toolVal.FillFromString2(textBoxInputVariable.Text);
varNum.Value = toolVal;
//修改WobjData数据类型
WobjData wobjVal = (WobjData)varNum.Value;
wobjVal.FillFromString2(textBoxInputVariable.Text);
varNum.Value = wobjVal;
//修改byte数据类型
ABB.Robotics.Controllers.RapidDomain.Byte byte_Val = new ABB.Robotics.Controllers.RapidDomain.Byte();
byte_Val.FillFromString2(textBoxInputVariable.Text);
varNum.Value = byte_Val;
//修改string1-3维数组
var rd_Array= controller.Rapid.GetRapidData(TaskName, Mod, VariableName);
ArrayData targets = (ArrayData)rd_Array.Value;
int r = targets.Rank;
String str_Arr = new String();
str_Arr.FillFromString(textBoxInputVariable.Text);
if (r == 1)
{
    rd_Array.WriteItem(str_Arr, int.Parse(comboBoxArrX.Text)-1);
}
else if (r == 2)
{
    rd_Array.WriteItem(str_Arr, int.Parse(comboBoxArrY.Text)-1, int.Parse(comboBoxArrX.Text) - 1);
}
else
{
    rd_Array.WriteItem(str_Arr, int.Parse(comboBoxArrZ.Text) - 1, int.Parse(comboBoxArrY.Text) - 1, int.Parse(comboBoxArrX.Text) - 1);
}
//查看所有数据类型
try
    {
        var task = controller.Rapid.GetTask("T_ROB1");
        if (!string.IsNullOrEmpty(Glable_Task_Name))
        {
            task = controller.Rapid.GetTask(Glable_Task_Name);
        }
        RapidSymbolSearchProperties sProp = RapidSymbolSearchProperties.CreateDefault();
        sProp.Types = SymbolTypes.Function | SymbolTypes.Data;
        sProp.InUse = false;
        sProp.Recursive = true;
        sProp.SearchMethod = SymbolSearchMethod.Block;
        RapidSymbol[] datas = task.SearchRapidSymbol(sProp);
        listViewValueShow.Items.Clear();
        datas = datas.Where(t => t.Type.ToString() != "Function" && t.Scope[1] != "CalibData" &&
        RapidDataType.GetDataType(t).ToString() != "robtarget" && RapidDataType.GetDataType(t).ToString() != "jointtarget" && t.Scope.Count()==3).ToArray();

        foreach (RapidSymbol rs in datas)
        {
            ListViewItem items = new ListViewItem();
            RapidDataType theDataType;
            theDataType = RapidDataType.GetDataType(rs);
            string theDataTypeStr = theDataType.ToString();
            items.Text = rs.Name;
            items.SubItems.Add(rs.Scope[1]);
            items.SubItems.Add(theDataType.ToString());
            RapidData val = null;
            val = controller.Rapid.GetRapidData(rs.Scope[0], rs.Scope[1], rs.Name);                
            if (theDataTypeStr == "string")
            {
                var s =  val.StringValue;
                items.SubItems.Add(s);
            }
            else if (theDataTypeStr == "num" || theDataTypeStr == "dnum" || theDataTypeStr == "pos" )
            {
                var n = val.Value.ToString();
                items.SubItems.Add(n);
            }
            else if (theDataTypeStr == "bool")
            {
                var b = val.StringValue;
                items.SubItems.Add(b);
            }
            else if (theDataTypeStr == "clock")
            {
                var n = val.Value;
                if (n==null)
                {
                    items.SubItems.Add("");
                    items.SubItems.Add(rs.Type.ToString());
                    listViewValueShow.Items.Add(items);
                    continue;
                }
                items.SubItems.Add(n.ToString());
            }
            else
            {
                string tool = null;
                tool = val.Value == null ? tool="": tool = val.StringValue;
                items.SubItems.Add(tool);
            }
            items.SubItems.Add(rs.Type.ToString());
            listViewValueShow.Items.Add(items);
        }

    }
    catch (System.Exception ee)
    {
        errLog = Robot_Control.errLogger(errLog, "[error]:\t" + ee);
        richTextBox1.Lines = errLog.ToArray();
    }

在这里插入图片描述
在这里插入图片描述
详细内容请关注公众号:
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值