# servoj控制UR3（8MS周期），报C204A3错误

**URL:** https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531
**Category:** 其他
**Created:** [November 11, 2021, 3:40am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531 "2021-11-11T03:40:41Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![anon76511549](https://avatars.discourse-cdn.com/v4/letter/a/e56c9b/32.png) [@anon76511549](https://forum.universal-robots.com/u/anon76511549)
#### Post date: [November 11, 2021, 3:40am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/1 "2021-11-11T03:40:41Z")

</div>

PC通过30003实时控制UR3 ，你好，报C204A3后，保护停止了，可能是某个电机的实际位置和下一时刻要求的位置距离比较大，即对电机的加速度要求太高了。但我通过限制加速度后还是报错。

目前UR3没有固定，只是通过一个大圆盘放在地上，能移动。轨迹规划过程中，运动速度按照0.15M/S进行规划。

用的servoj指令，gain和lookaheadtime都在不断调整，还是不能长时间稳定运行。

关节空间最好状态是运行了3小时没错，笛卡尔空间直线运动一个多小时没有报错

---

<div class="post-metadata">

### Author: ![sli](https://avatars.discourse-cdn.com/v4/letter/s/c0e974/32.png) [@sli](https://forum.universal-robots.com/u/sli)
#### Post date: [November 12, 2021, 5:02am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/2 "2021-11-12T05:02:56Z")

</div>

C204A3报警是加速度太快了，若要中止运动，请在使用"wait" 之前用 "stopj"或 "stopl"脚本  
命令形成平稳减速。避免在交融的路点之间中止运动  
命令具体用法请参考以下示例：  
servoj(q, a, v, t=0.008, lookahead\_time=0.1, gain=300)  
Example Commands  
servoj([0.0,1.57,-1.57,0,0,3.14], t=0.1, lookahead\_time=0.1, gain=300)  
or  
servoj([0.0,1.57,-1.57,0,0,3.14], 0, 0, 0.1, 0.1, 300)  
q = [0.0,1.57,-1.57,0,0,3.14] – joint angles in radians representing rotations of base=0°,  
shoulder=90°, elbow=-90°, wrist1=0°, wrist2=0°, wrist3= 180°  
a = 0 not used in current version  
v = 0 not used in current version  
t=.1 time where the command is controlling the robot. The function  
is blocking for time t [S]  
lookahead time=.1 time [S], range [0.03,0.2] smoothens the trajectory with this  
lookahead time  
gain=300 proportional gain for following target position, range [100,2000]

---

<div class="post-metadata">

### Author: ![anon76511549](https://avatars.discourse-cdn.com/v4/letter/a/e56c9b/32.png) [@anon76511549](https://forum.universal-robots.com/u/anon76511549)
#### Post date: [November 12, 2021, 7:21am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/3 "2021-11-12T07:21:20Z")

</div>

谢谢回答，我是在PC端做轨迹规划，规划（生成轨迹点后）完成后，每8ms下发一次位置点给UR3，

根据读到的关节实际位置和下发关节位置的差，如果差值大于0.8rad，在下一个8ms到的时候就按关节实际

位置+朝着运动方向+0.8rad,如何差值比0.8rad小，则按我规划的位置发送。这里的0.8是根据观察得到的，

作用相当于限制电机的加速度，从0.35~0.8基本都设置过。路径规划的时候按照0.15米/秒的速度做的，所以速度和加速度其实都比较好，

不知道啥原因。不知道机器人示教器上有没有参数要设置，我有点担心机器人没有固定，有没有影响，目前就像水杯放在桌子上一样的放着的

---

<div class="post-metadata">

### Author: ![sya](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/sya/32/216_2.png) [@sya](https://forum.universal-robots.com/u/sya)
#### Post date: [November 15, 2021, 6:17am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/4 "2021-11-15T06:17:15Z")

</div>

Hi @anon76511549

请问你是PC发位置信息给UR控制器, 在UR控制器上执行servoj

还是PC直接发servoj给UR控制器？

---

<div class="post-metadata">

### Author: ![anon76511549](https://avatars.discourse-cdn.com/v4/letter/a/e56c9b/32.png) [@anon76511549](https://forum.universal-robots.com/u/anon76511549)
#### Post date: [November 15, 2021, 9:32am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/5 "2021-11-15T09:32:24Z")

</div>

我是PC发servoj和servoj要用到的位置信息，以及lookahead，gain等，机器人端没有写程序

现在发现实际机器人和URSIM在同一关节角下面，两者的位置相差达16mm，

机器人目前处于没有固定状态，运行速度计划是0.15米每秒状态，谢谢

---

<div class="post-metadata">

### Author: ![sya](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/sya/32/216_2.png) [@sya](https://forum.universal-robots.com/u/sya)
#### Post date: [November 20, 2021, 4:34pm UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/6 "2021-11-20T16:34:36Z")

</div>

HI @anon76511549 ,

建议透过PC藉由modbus或socket发送位置到Robot controller, 然后把servoj code写在Robot controller裡,  
若透过Client interface发送单行运动指令会有以下问题:  
每一次新发的servoj指令会中断前一次servoj的运动, 因此造成运动卡顿

Thanks

---

<div class="post-metadata">

### Author: ![anon29837265](https://avatars.discourse-cdn.com/v4/letter/a/919ad9/32.png) [@anon29837265](https://forum.universal-robots.com/u/anon29837265)
#### Post date: [May 2, 2022, 4:18am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/7 "2022-05-02T04:18:17Z")

</div>

我用matlab作为socket server，URSim作为socket Client。matlab发送目标位置给UR，UR收到后用get\_inverse\_kin得到关节位置，再用servoj执行，不能正常工作。具体表现：  
（1）matlab socket server有时会超时，有时能正常连续发送（URClient收到位置会发送收到的位置序号给server，server在timeout前收到返回的位置序号认为正常传送，否则认为超时，但都继续发送下一点）  
（2）在超时点时，UR基本不动，在正常发送点时能连续运动一段距离

求指点

---

<div class="post-metadata">

### Author: ![sya](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/sya/32/216_2.png) [@sya](https://forum.universal-robots.com/u/sya)
#### Post date: [May 2, 2022, 4:00pm UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/8 "2022-05-02T16:00:53Z")

</div>

Hi,

把timout 的時間設定為0可以取消超时的警報

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/a/abeb1d757fd4faf2b48071f8a7245f83b3f26496.png)

---

<div class="post-metadata">

### Author: ![anon29837265](https://avatars.discourse-cdn.com/v4/letter/a/919ad9/32.png) [@anon29837265](https://forum.universal-robots.com/u/anon29837265)
#### Post date: [May 3, 2022, 12:35am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/9 "2022-05-03T00:35:38Z")

</div>

（1）UR并不会产生timeout报警，socket\_read\_ascii\_float能正常读到位置并发送反馈序号。  
（2）matlab程序会提示timeout（没有及时收到反馈序号引起），但多次timeout后仍能收到这些原来反馈的序号，从而变成预期的发送一点位置，收到一个反馈序号。但成功多点后，matlab又会出现timeout。

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/0/09839c4ec2702e638cd90bf4cedbde8aa1e2ccaf.png)

---

<div class="post-metadata">

### Author: ![sya](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.universal-robots.com/sya/32/216_2.png) [@sya](https://forum.universal-robots.com/u/sya)
#### Post date: [May 3, 2022, 1:42am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/10 "2022-05-03T01:42:02Z")

</div>

Hi,

从你描述, 听起来你URClien(URSim)t会发送收到的位置序号给server(matlab), 所以你的matlab无法及时收到URsim发的位置序号导致matlab发出time out? 怎么超时的我不清楚, 不过你使用servoj command是会block在这个命令下直到完成运动才会返回, 或许是这个在影响回传的位置序号时机

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/b/b9bda499b1bbde963506c7f2fc309aee391cfd85.png)

---

<div class="post-metadata">

### Author: ![anon29837265](https://avatars.discourse-cdn.com/v4/letter/a/919ad9/32.png) [@anon29837265](https://forum.universal-robots.com/u/anon29837265)
#### Post date: [May 3, 2022, 2:07am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/11 "2022-05-03T02:07:28Z")

</div>

谢谢您及时回复，我另开了一个贴，其中贴出了UR程序。我是先返回其接收序号，返回成功才启动执行运动的。从您贴出的解释看，缺省情况下8ms就返回了，我matlab设置的超时大得多，不应该block吧。

---

<div class="post-metadata">

### Author: ![tianhjwjx9](https://avatars.discourse-cdn.com/v4/letter/t/2acd7d/32.png) [@tianhjwjx9](https://forum.universal-robots.com/u/tianhjwjx9)
#### Post date: [May 13, 2024, 7:14am UTC](https://forum.universal-robots.com/t/servoj-ur3-8ms-c204a3/17531/12 "2024-05-13T07:14:30Z")

</div>

您好，可以给我一份关于servoJ的源代码嘛？ 有偿！！
