1

我目前询问 CNC(通过 ThincAPI)程序是否已完成的解决方案不起作用。它不在乎我是否更改程序,一旦成功,即使在更改加载的程序后它也会始终报告为真。

我想要的是一个变量,我可以在触发周期开始之前重置它,这样我就可以检查程序是否真的运行了。理想情况下,我会重置这个已经在使用的 CycleComplete 方法。

我想我最终要做的是写入一个宏(公共)变量并设置一个值,然后让 GCode 在 GCode 程序的最后更改该值。然后我将读取该值以验证它是否已更改。

Okuma.CMDATAPI.DataAPI.CProgram myCProgram;
myCProgram = new Okuma.CMDATAPI.DataAPI.CProgram();

...

case "cycle":
    string cycle = myCProgram.CycleComplete().ToString();
    Console.WriteLine(" Response: " + cycle);
    return cycle;
4

2 回答 2

2

您可能需要使用带有 GetNCStatus () GetOperationMode() 方法的 CMachine 类来检查机器是否处于自动模式和运行状态

在进度程序的情况下,零件程序由 NC 加载非常快。因此,您可能总是会看到 RUNNING 状态。

使用 CV 也是确保程序已设置/重置的好方法。

于 2019-07-30T12:25:16.970 回答
0

我怀疑您必须使用 SDF 计划程序,并且在您的应用程序有机会捕捉到前一个 .MIN 程序已完成之前,正在调用下一个程序。

选择新程序时,该CycleComplete()方法将重置。
如果它返回 true 并且有问题的程序没有完成,那是因为后续的 .MIN 程序完成了。

我建议在 SDF 中的 PSelect 调用之间放置一个 Dwell,以便让您的应用程序有时间捕捉前一个 .MIN 是否已完成。

于 2019-08-01T16:54:26.997 回答