RoboDK论坛”title=
OPC UA setJointsStr不工作可打印版本

+ - RoboDK论坛(//www.w5838.com/forum)
+ - - -论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN)
+ - - -论坛:RoboDK API (//www.w5838.com/forum/Forum-RoboDK-API)
+ - - -线程:OPC UA setJointsStr不工作(/ Thread-OPC-UA-setJointsStr-not-working)



OPC UA setJointsStr不工作- - - - - -terkaa- - - - - -02-18-2021

你好,


我们正在尝试RoboDK OPCUA-server。我们能够转移StationParameters和StationValues UAExpert和RoboDK之间我们也可以检索当前位置的机器人getJointsStr通过调用方法。但当调用方法setJointsStr得到机器人“成功”,但实际上并没有移动,可能会产生什么问题?


字符串:-26.260000,-100.000000,27.470000,114.000000,-54.280000,0.000000


(附件= 1893)



Tero


RE: OPC UA setJointsStr不工作- - - - - -艾伯特- - - - - -02-18-2021

嗨Tero,

使用setJointsStr应该机器人在给定的关节位置没有模拟运动。同样,如果您提供的关节机器人外限制可能将饱和值显示机器人的局限性(发那科有一个虚拟耦合关节2和3)。

艾伯特


RE: OPC UA setJointsStr不工作- - - - - -terkaa- - - - - -02-18-2021

你好,

我一直试图用值与getJointsStr收到机器人。所以应该是在一定范围内的机器人。我也试着使用不同的库卡机器人KR6但没有运气。

Tero


引用:嗨Tero,

使用setJointsStr应该机器人在给定的关节位置没有模拟运动。同样,如果您提供的关节机器人外限制可能将饱和值显示机器人的局限性(发那科有一个虚拟耦合关节2和3)。

艾伯特



RE: OPC UA setJointsStr不工作- - - - - -terkaa- - - - - -02-19-2021

你好,

你确定这不是一个错误吗?我做了以下插件OPC-UA服务器代码,现在它的工作原理,但仍然机器人位置之前不更新我点击“视图- >适合所有”。

(附件= 1907][附件= 1908]






(02-18-2021,28点)艾伯特写道:嗨Tero,

使用setJointsStr应该机器人在给定的关节位置没有模拟运动。同样,如果您提供的关节机器人外限制可能将饱和值显示机器人的局限性(发那科有一个虚拟耦合关节2和3)。

艾伯特



RE: OPC UA setJointsStr不工作- - - - - -terkaa- - - - - -02-19-2021

问题是,值的两倍string_2_doubles是使用setJoints tJoints需要使用。这是快速攻击,使它工作:

静态UA_StatusCodesetJointsStr(无效*h,常量UA_NodeIdobjectId,size_tinputSize,常量UA_Variant*输入,size_toutputSize,UA_Variant*输出){
PluginOPCUA*插件= (PluginOPCUA*)h;
如果(inputSize<2){
qDebug()< <“输入大小:< <inputSize< <输出大小:< <outputSize;
返回UA_STATUSCODE_BADARGUMENTSMISSING;
}

QStringstr_item;
QStringstr_joints;
如果(!Var_2_Str(输入+0,str_item)){
返回UA_STATUSCODE_BADARGUMENTSMISSING;
}
如果(!Var_2_Str(输入+1,str_joints)){
返回UA_STATUSCODE_BADARGUMENTSMISSING;
}

/ /ShowMessage(插件,QObject: tr(“项目是:% 1”).arg (str_item));
ShowMessage(插件,QObject::tr(”位置是:% 1”)。参数(str_joints));

=插件- >RDK- >getItem(str_item);
ShowMessage(插件,QObject::tr(“项是:% 1”)。参数(- >的名字()));

如果(!插件- >RDK- >有效的()){/ /如果(! ItemValid(机器人)){
ShowMessage(插件,QObject::tr(“setJointsStr:RoboDK提供有效的”));
返回UA_STATUSCODE_BADARGUMENTSMISSING;
}
关节(nDOFs_MAX];
- >关节()。getvalue(关节);
int元素个数=nDOFs_MAX;
ShowMessage(插件,QObject::tr(“Num联合是:% 1”)。参数(元素个数));
string_2_doubles(str_joints,关节,&元素个数);
如果(元素个数< =0){
ShowMessage(插件,QObject::tr(“setJointsStr:无效的关节字符串"));
返回UA_STATUSCODE_BADARGUMENTSMISSING;
}
ShowMessage(插件,QObject::tr(“联合1是:3”));
tJointsjoints2=- >关节();

(into=0;o<nDOFs_MAX;o+ +){/ /双数组不能使用直接我们需要使用tJoints而不是
joints2数据()(o]=关节(o];
ShowMessage(插件,QObject::tr(“联合% 1是:% 2”)。参数(o)。参数(joints2数据()(o)));
}

boolcan_move=- >MoveJ(joints2);
如果(!can_move){
ShowMessage(插件,QObject::tr(机器人不能移动位置”));
}
其他的{

- >setJoints(joints2);
/ /睡眠(200);
插件- >RDK- >渲染();}

返回UA_STATUSCODE_GOOD;
}