三菱PLC某些型号是不支持三角函数指令的。
FX3系列的编程手册有介绍三角函数指令的使用,
但创建FX3G程序时,在编程软件里却不能输入三角函数指令,如SIN。
因为只有FX3U,FX3UC才支持,如下图,为编程手册对三角函数Sin的介绍。
仅支持FX3U,FX3UC
(, 下载次数: 2) 上传 点击文件名下载附件 如何解决?1.通过触摸屏的三角函数间接实现。一般设备都会配合人机界面进行设计,所以可以通过触摸屏的宏指令间接实现。在屏里面读取三菱PLC的角度数据,调用屏的三角函数,如sin进行数据转换,将转换的结果再传回PLC。下面是在威纶屏里,通过宏指令实现的效果。 (, 下载次数: 6) 上传 点击文件名下载附件 对应宏指令代码为macro_command main()bool bON=trueSetData(bON, "Local HMI", LB, 0, 1)short nDegree=0float fSIN=0.0//从三菱FX3G获取角度GetData(nDegree, "Mitsubishi FX3U/FX3G", D, 100, 1)//计算角度nDegree对应的sin值。SIN(nDegree, fSIN)//将三角函数计算所得的sin值传回PLC,要注意的是使用了D1,D0.SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)//上面是对问题的回答.//计算结果也可以在界面上以图形显示。GetData(nDegree, "Local HMI", LW, 0, 1)nDegree = nDegree+1if nDegree >= 361 thennDegree = 0end ifSetData(nDegree, "Local HMI", LW, 0, 1)SIN(nDegree, fSIN)fSIN = fSIN*120SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)//GetData(nDegree, "Local HMI", LW, 1, 1)nDegree = nDegree+2if nDegree >= 361 thennDegree = 0end ifSetData(nDegree, "Local HMI", LW, 1, 1)SIN(nDegree, fSIN)fSIN = fSIN*120SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 2, 1)bON=falseSetData(bON, "Local HMI", LB, 0, 1)end macro_command2.通过查表方法获取。如下图,可以事先通过查询三角函数表,将角度对应数值以常数的形式保存到PLC寄存器里供程序调用。这是工作量很大的一种方法。 (, 下载次数: 1) 上传 点击文件名下载附件 上面暂时想到两种方法。另外如果高等数学有印象的话,也可以用泰勒公式展开三角函数,套用公式编写程序。 欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4
1.通过触摸屏的三角函数间接实现。
一般设备都会配合人机界面进行设计,所以可以通过触摸屏的宏指令间接实现。
在屏里面读取三菱PLC的角度数据,
调用屏的三角函数,如sin进行数据转换,
将转换的结果再传回PLC。
下面是在威纶屏里,通过宏指令实现的效果。
(, 下载次数: 6) 上传 点击文件名下载附件 对应宏指令代码为macro_command main()bool bON=trueSetData(bON, "Local HMI", LB, 0, 1)short nDegree=0float fSIN=0.0//从三菱FX3G获取角度GetData(nDegree, "Mitsubishi FX3U/FX3G", D, 100, 1)//计算角度nDegree对应的sin值。SIN(nDegree, fSIN)//将三角函数计算所得的sin值传回PLC,要注意的是使用了D1,D0.SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)//上面是对问题的回答.//计算结果也可以在界面上以图形显示。GetData(nDegree, "Local HMI", LW, 0, 1)nDegree = nDegree+1if nDegree >= 361 thennDegree = 0end ifSetData(nDegree, "Local HMI", LW, 0, 1)SIN(nDegree, fSIN)fSIN = fSIN*120SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)//GetData(nDegree, "Local HMI", LW, 1, 1)nDegree = nDegree+2if nDegree >= 361 thennDegree = 0end ifSetData(nDegree, "Local HMI", LW, 1, 1)SIN(nDegree, fSIN)fSIN = fSIN*120SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 2, 1)bON=falseSetData(bON, "Local HMI", LB, 0, 1)end macro_command2.通过查表方法获取。如下图,可以事先通过查询三角函数表,将角度对应数值以常数的形式保存到PLC寄存器里供程序调用。这是工作量很大的一种方法。 (, 下载次数: 1) 上传 点击文件名下载附件 上面暂时想到两种方法。另外如果高等数学有印象的话,也可以用泰勒公式展开三角函数,套用公式编写程序。 欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4
对应宏指令代码为
macro_command main()
bool bON=true
SetData(bON, "Local HMI", LB, 0, 1)
short nDegree=0
float fSIN=0.0
//从三菱FX3G获取角度
GetData(nDegree, "Mitsubishi FX3U/FX3G", D, 100, 1)
//计算角度nDegree对应的sin值。
SIN(nDegree, fSIN)
//将三角函数计算所得的sin值传回PLC,要注意的是使用了D1,D0.
SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)
//上面是对问题的回答.
//计算结果也可以在界面上以图形显示。
GetData(nDegree, "Local HMI", LW, 0, 1)
nDegree = nDegree+1
if nDegree >= 361 then
nDegree = 0
end if
SetData(nDegree, "Local HMI", LW, 0, 1)
fSIN = fSIN*120
//
GetData(nDegree, "Local HMI", LW, 1, 1)
nDegree = nDegree+2
SetData(nDegree, "Local HMI", LW, 1, 1)
SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 2, 1)
bON=false
end macro_command
2.通过查表方法获取。
如下图,可以事先通过查询三角函数表,
将角度对应数值以常数的形式保存到PLC寄存器里供程序调用。
这是工作量很大的一种方法。
(, 下载次数: 1) 上传 点击文件名下载附件 上面暂时想到两种方法。另外如果高等数学有印象的话,也可以用泰勒公式展开三角函数,套用公式编写程序。 欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4
上面暂时想到两种方法。
另外如果高等数学有印象的话,
也可以用泰勒公式展开三角函数,套用公式编写程序。