我正试图用向我的笔记本电脑发送信号的开关来固定我的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
或等效的方法覆盖它。没有其他的可能性。