首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改程序缓冲Okuma OSP-300米

更改程序缓冲Okuma OSP-300米
EN

Stack Overflow用户
提问于 2018-03-28 19:55:27
回答 3查看 1K关注 0票数 3

我目前正在运行g-代码中的一个小循环,该循环必须等待一个公共变量来更改值。随着程序缓冲的启动,我的g代码程序不会看到对变量的更改!

什么是最好的方式关闭程序缓冲,而我在这个g-代码循环?

如果我手动设置程序缓冲(NC可选参数位第2位第7位)为“不”。然后,我的循环行为适当,控制器适当地检查每个循环的公共变量的值。

代码语言:javascript
复制
NLOOP G04 F1
IF[VC890 EQ 0] GOTO NRTS
GOTO NLOOP
NRTS RTS

非常直截了当的循环。也许它需要更复杂。

也许如果它更长,缓冲区就不重要了?

我希望我的客户会想要程序缓冲打开。

我能用THINC API暂时关闭它吗?

因为如果成功的话,那就太棒了:

代码语言:javascript
复制
public void SetNCOptionalParameterBit(
    int intBitIndex,
    int intBitNo,
    OnOffStateEnum enValue);

如果这个函数允许我设置param位,No2bit 7,开和关,那么这可能是一个有效的工作。

代码语言:javascript
复制
Okuma.CMDATAPI.DataAPI.COptionalParameter myCOPtionalParameter;
myCOptionalParameter = new Okuma.CMDATAPI.DataAPI.COptionalParameter();

myCOPtionalParameter.SetNCOptionalParameterBit(2, 7,
    Okuma.CMDATAPI.Enumerations.OnOffStateEnum.On);    
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-29 23:17:49

对于我的场景,最好的解决方案是将NC可选参数2的当前值保存到一个公共变量中,然后将其更改为“不缓冲”,然后运行我的代码,然后将其放回以前的任何位置。

在Gcode中:

代码语言:javascript
复制
VC892 = VOPRB[2] (save current NC Optional Parameter bit 2 value)
VOPRB[2] = [VOPRB[2] OR 128] (bit magic to flip bit 7 to a 1 if its not)
(insert code to be run without buffering)
VOPRB[2] = VC892 (put back saved NC Optional Parameter bit 2 value)
票数 1
EN

Stack Overflow用户

发布于 2018-03-29 08:29:49

那么M331如何防止提前阅读呢?(为了验证使用情况,我几天内不会在控制室里,我正抱着我的新生儿,现在是凌晨4点,但我认为它既可以放在你读变量的线路上,也可以放在前面的行上。)

代码语言:javascript
复制
NLOOP G04 F1 M331 (buffering prohibit)
IF[VC890 EQ 0] GOTO NRTS
GOTO NLOOP
NRTS RTS
票数 1
EN

Stack Overflow用户

发布于 2018-03-29 17:11:21

SetNCOptionalParameterBit()函数能够设置2号位,第7位。

但是,根据您的API版本,THINC测试应用程序可能无法做到这一点。我确认了API 1.17.2.0的测试应用程序中有一个bug。并在1.18.0.0发布前修复。

所以要注意这一点。即使您的机器有一个较旧的API (如1.17.2.0 ),您仍然应该能够编写成功使用此函数的代码。忽略测试应用程序的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49543079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档