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

Attempt to call global "Sicherheitskreis" (a nil value ) stack traceback

我正在尝试使用向我的笔记本电脑发送信号的开关来固定我的 CNC 的门(我的笔记本电脑上有 4 马赫)。我创建了这个代码,如果门没有锁好,主轴应该保持静止,但我总是收到一条错误消息:

[string""]1576 attempt to call global 'SicherheitsKreis' (a Nil value) stack traceback:

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

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打出来的,这个函数在Mach 4的内存里(我的电脑是m146)保存为一个m函数(nach4有免费的m函数,用户可以自定义)

您的代码:

function SicherheitsKreis(Schliesserstate, Oeffnerstate)
...
end

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