Python调用EAL.dll写入博世力士乐伺服驱动器参数失败求助
博世力士乐EAL库Python写入参数问题
问题背景
我们有一个可与多台博世力士乐伺服驱动器交互的Python脚本,能够成功读取参数,但无法写入参数。使用的是Bosch Easy Automation Library(EAL.dll),导入代码如下:
import clr clr.AddReference("EAL") import EAL # 导入EAL.dll from EAL.EALConnection import * from System import Console from System.Threading import Thread
核心问题分析
目前推测是WriteData()方法使用错误。驱动器本身支持参数写入(可通过Indraworks完成),官方文档规定data参数必须为Object类型,但我们一直使用字符串(读取数据、存入JSON均为字符串格式)。
当前写入代码
x = json.loads( message ) servoid = x["servoid"] parameter = x["parameter"] value = x["value"] #parameter = "P-0-4006.0.0" # 临时测试用参数 print("servoid: " + servoid ) print("parameter: " + parameter ) print("value: " + value ) print() try: if servoid == "0": conn1.Parameter.Axes[0].WriteData( value, parameter ) if servoid == "1": conn2.Parameter.Axes[0].WriteData( value, parameter ) toWrite = True except EAL.Exceptions.EALException: print("给定的数据类型与系统类型不兼容。")
尝试过的失败方案
- 硬编码value为列表:
value = [0.0000, 0.0000, 3000.0000, 0.0000] - 硬编码value为集合:
value = {0.0000, 0.0000, 3000.0000, 0.0000}
以上两种方式均触发报错:给定的数据类型与系统类型不兼容。,尚未尝试创建实际类及对象。
求助问题
请问C#中以下WriteData方法对应的Python传参方式是什么?
// C# void WriteData( Object data, string idn ) // Visual Basic Sub WriteData ( data As Object, idn As String ) // Visual C++ void WriteData( Object^ data, String^ idn )
补充说明
我们使用ReadDataAsString()读取数据,该方法返回字符串,读取到的数据格式如"0.0000 0.0000 3000.0000 0.0000"(依参数不同而变化,部分参数返回64位二进制值),读取代码如下:
print("读取轴0的参数值") value = conn1.Parameter.Axes[0].ReadDataAsString(parameter) print("轴0读取到的值: {}".format(value))
内容的提问来源于stack exchange,提问作者bask185
相关产品推荐
相关产品推荐

