尝试调用全局变量“Sicherheitskreis”(一个空值)堆栈回溯

我正在尝试使用可以向我的笔记本电脑发送信号的开关来保护我的CNC门(我在上面有Mach 4)。我创建了这段代码,应该使主轴保持静止,如果门没有锁定,但我总是得到一个错误,说:

[string""]1576尝试调用全局变量'SicherheitsKreis'(一个空值)堆栈回溯:

我已经尝试将代码移动并阅读关于此的主题,但不起作用。 有人有解决方案吗? 这是我所有的代码:

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的代码是:

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)

点赞
用户7746452
用户7746452

你的代码:

function SicherheitsKreis(Schliesserstate, Oeffnerstate)
...
end

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

2020-03-11 13:08:16