You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 10:02:44