1

在我更新了参考资料中使用的 API 版本之前,我的应用程序一直运行良好。
具体来说,我从 CLDATAPI.dll 版本 2. 3 .0.0到 2. 5 .0.0

现在我收到以下错误:
E01000261122 Failed to get program running state - Invalid sub system for this operation

我编写了一个应用程序,它使用了几个 API 函数,包括这个:

    Private Function GetCycleComplete() As Boolean 
        Try
        m_blnCycleComplete = m_Program.CycleComplete(MachineSideEnum.LeftSide)
        Return m_blnCycleComplete
        Catch ex As Exception
            Throw 
        End Try
    End Function

我用于测试的机器是运行 OSP-P300L 的 LT-2000-MY。
我意识到我的问题必须与“MachineSideEnum.LeftSide”子系统有关。

  • 为什么只是更改 API 版本会影响这一点?
  • LeftSide / RightSide 指的是什么?
    • 这台机器有W轴,和主轴端有关系吗?
    • 如果它指的是双侧机器,为什么它以前可以工作而现在不行?
4

2 回答 2

2

为保证双面机和单面机的一致性,R 代表双面机的右侧,也是单面机的默认面。

L代表2面机左侧,单面机不可用。

为此目的更改了 API 的规范。

默认情况下,每个对象都是使用 NC_AL 创建的,它表示与左上主轴和 A 刀塔相关的数据,并且始终可用于所有车床模型。NC_RUN 将提供当前选择的主轴或刀塔的数据。

如果适用,需要设置正确的子系统来访问与主轴和刀塔或机床数据相关的某些数据区域。

于 2014-11-05T14:50:58.160 回答
2

这只是一个疯狂的猜测,但是您是否使用 SetSubSystem 在您的 CProgram 对象上显式设置子系统?

我问这个是因为,不久前,我们不得不检查我们的一些代码,因为 Data API 对象的默认子系统从 SubSystemEnum.NC_RUN 更改为 SubSystemEnum.NC_AL。

如果发生了类似的事情,并且默认值已更改为您的机器上不支持的子系统,那就可以解释为什么它在 API 升级后崩溃了。

我不知道为什么默认值会更改为您的机器上不支持的内容,但您应该能够查看发行说明或 SubSystemEnum 文档。

MachineSideEnum 是指并行 2 轴机器。CycleComplete 文档建议您应该通过 MachineSideEnum.LeftSide 如果您的机器没有您正在执行的此规范,所以我希望这不是问题。

于 2013-11-09T23:47:43.823 回答