尝试调用全局 "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
或等价物覆盖它。没有其他可能了。
我正在尝试使用向我的笔记本电脑发送信号的开关来固定我的 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
或等价物覆盖它。没有其他可能了。