我一直试图在python中使用REST API控制Mir 200机器人。我已经在Mir编程的任务,只有当PLC寄存器值发生变化时才能工作,所以我在python中给出以下请求,但我得到405错误。有人能帮我解释一下语法吗?我尝试将PLC寄存器41的值更改为5。
register = {"value": 5}
PLCregister = requests.post(host + 'registers/41', json = register, headers = headers)
print(PLCregister)
我从来没有使用过MiR200或他们的任何机器人(他们看起来很酷,我有点嫉妒),但它看起来不是POST
请求,你可以尝试PUT
请求来修改值。我要离开这个pdf: https://www.mobile-industrial-robots.com/media/2214/mir_robot_rest_api_200.pdf
405错误表示请求方法(在本例中为POST
)是不允许的,可能它已被弃用。
你可以试试:
register = {'value': 5}
plc_register = requests.put(host + 'registers/41', json=register, headers=headers)
print(plc_register)
POST
请求通常用于告诉服务器创建数据,而不是修改数据。你可以看到他们在MiR 2.0中提到了这一点。X文件:
POST /registers/{id}
修改指定ID的PLC寄存器的值。寄存器1 ~ 100为整数,101 ~ 200为浮点数。
Even though this is not a standard use of the POST call it has been included for compatibility purposes
所以,也许POST
方法不在你的机器人软件中,只是推测。
这就是我如何改变寄存器的值。
requests.put(host + 'registers/11', '{"value":23}', headers = headers)
但是我还没有弄清楚如何用变量改变值。我想这样做可能会有用。
body = {'value': value}
requests.put(host + 'registers/11', json=body, headers = headers)