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



我正试图用向我的笔记本电脑发送信号的开关来固定我的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的内存中的m函数(nach4有用户可以自定义的免费m函数((对于我的电脑来说,它是m146(

您的代码:

function SicherheitsKreis(Schliesserstate, Oeffnerstate)
...
end

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

最新更新