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, RE: OPC UA setJointsStr不工作- - - - - -terkaa- - - - - -02-19-2021 你好, 你确定这不是一个错误吗?我做了以下插件OPC-UA服务器代码,现在它的工作原理,但仍然机器人位置之前不更新我点击“视图- >适合所有”。 (附件= 1907][附件= 1908] (02-18-2021,28点)艾伯特写道:嗨Tero, 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; } |