返回
技术知识

【ABB】上位机实时记录ABB机器人扭矩

来源:JQRZX |2020-09-11 21:44807



1. 上位机实时采集机器人各轴扭矩,如何实现?

2. PCSDK未提供直接读取扭矩接口,但RAPID中可以通过指令

GetJointDataMechUnit:=ROB_1,1Torque:=reg1,读取1轴的扭矩并存储于reg1

3. 可以在RAPID创建后台程序,实时读取各轴扭矩。

4. 上位机根据选择,读取对应各轴扭矩数值并以曲线形式显示。

5. 机器人创建后台任务,并编写代码。编写完毕将后台任务设为semistatic,即开机自启动


var num axis_tor_arr{6}:=[0,0,0,0,0,0];

   PROC main()

       WHILETRUEDO

           FOR i FROM 1 TO 6 DO

               GetJointDataMechUnit:=ROB_1,iTorque:=axis_tor_arr{i};

               !将各轴扭矩存储于数组中

           ENDFOR

           waittime 0.1;

       ENDWHILE

ENDPROC


6. 为方便以曲线形式显示数据,这里使用HSLcomponent库中的user_curve控件(HSLcomponent获取方式见 上位机仪表盘实时显示机器人速度)

7. 在上位机插入user_curve控件,做相应设置。

8. 对“启动记录”按钮创建代码如下:


Timer timer;

//通过定时器定时获取当前各轴扭矩

bool t_record = false;

  privatevoid button2_Click_1(object sender, EventArgs e)

       {

    if (t_record == false)

           {

               userCurve1.SetLeftCurve("A", newfloat[] { }, Color.Tomato);

               //创建空曲线

               timer.Tick += (sender1, e1) =>

               {

              RapidData rd = controller.Rapid.GetRapidData("t2", "module1", "axis_tor_arr");

             //获取任务t2下的module1下的axis_tor_arr数组

                   if (rd.IsArray)

                   {

                       ArrayData ad = (ArrayData)rd.Value;

                     //转化数组

                       float t1 = Convert.ToSingle(ad[comboBox1.SelectedIndex].ToString());

                    //根据选择的comboBox1序号,显示对应轴扭矩

                       if (comboBox1.SelectedIndex > 2)

                       {

                           userCurve1.ValueMaxLeft = 10;

                           userCurve1.ValueMinLeft = -10;

                       }

                      //调整Chart的显示上下限

                       else

                       {

                           userCurve1.ValueMaxLeft = 300;

                           userCurve1.ValueMinLeft = -300;

                       }

                  userCurve1.AddCurveData("A", t1);

                  //将当前数据填入

                   }

               };

              timer.Start();

               t_record = true;

               button2.Text = "停止记录扭矩";

           }

           else

           {

               timer.Stop();

               t_record = false;

               button2.Text = "开始记录扭矩";

           }

   }

打赏
  • 0人打赏
    举报
关闭
同类资讯