首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试调用全局"Sicherheitskreis“(一个零值)堆栈回溯

尝试调用全局"Sicherheitskreis“(一个零值)堆栈回溯
EN

Stack Overflow用户
提问于 2020-03-06 13:03:46
回答 1查看 529关注 0票数 0

我正试图用开关来保护我的数控系统的门,这些开关会向我的笔记本电脑发送信号(我的电脑上有4马赫)。我创建了这个代码,如果门没有锁的话,应该让主轴保持不变,但是我总是收到一个错误,上面说:

代码语言:javascript
复制
[string""]1576 attempt to call global 'SicherheitsKreis' (a Nil value) stack traceback:

我试着移动代码并阅读有关这方面的主题,但是没有任何效果。有人有解决办法吗?这是我所有的密码:

代码语言:javascript
复制
function SicherheitsKreis(Schliesserstate, Oeffnerstate)
   if (Schliesserstate ==0 and Oeffnerstate ==1 ) then 
     mc.mcSpindleSetDirection(inst,0)
   elseif (Schliesserstate == 1 and Oeffnerstate == 0 ) then 
     local sigh = mc.mcSignalGetHandle(inst, mc.OSIG_SPINDLEON);
     local sigState = mc.mcSignalGet State(sigh);
     if (sigState == 1) then 
       mc.mcSpindleSetDirection(inst,0)
     else 
       mc.mcSpindleSetDirection(inst,1);
     end
   else 
     mc.mcSpindleSetDirection(inst,0)
     end
end 

if (mc.mcInEditor() == 1) then
    SicherheitsKreis()
end

我用来调用SicherheitsKreis的代码是:

代码语言:javascript
复制
local inst = mc.mcGetInstance()
local hsigSchliesser = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT8);
local hsigOeffner = mc.mcSignalGetHandle (inst, mc.ISIG_INPUT9);
local Schliesserstate = mc.mcSignalGetState(hsigSchliesser);
local Oeffnerstate = mc.mcSignalGetState(hsigSchliesser); 
 SicherheitsKreis(Schliesserstate, Oeffnerstate)

这个脚本是在Mach 4中键入的,函数被保存为m函数(nach4有免费的m函数,用户可以自定义)在Mach 4的内存中(对于我的计算机,它是m146)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-11 13:08:16

你的代码:

代码语言:javascript
复制
function SicherheitsKreis(Schliesserstate, Oeffnerstate)
...
end

第一种可能是代码在其他函数或其他元素中,所以它不是全局的。第二种可能是在加载这部分代码之前运行SicherheitsKreis(Schliesserstate, Oeffnerstate)。第三(非常不常见)是您用SicherheitsKreis = nil或等效的方式覆盖它。没有其他可能性了。

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

https://stackoverflow.com/questions/60564650

复制
相关文章

相似问题

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