三菱PLC某些型號是不支持三角函數指令的。
FX3係列的編程手冊有介紹三角函數指令的使用,
但創建FX3G程序時,在編程軟件裏卻不能輸入三角函數指令,如SIN。
因為隻有FX3U,FX3UC才支持,如下圖,為編程手冊對三角函數Sin的介紹。
僅支持FX3U,FX3UC
如何解決?
1.通過觸摸屏的三角函數間接實現。
一般設備都會配合人機界麵進行設計,所以可以通過觸摸屏的宏指令間接實現。
在屏裏麵讀取三菱PLC的角度數據,
調用屏的三角函數,如sin進行數據轉換,
將轉換的結果再傳回PLC。
下麵是在威綸屏裏,通過宏指令實現的效果。
對應宏指令代碼為
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)
SIN(nDegree, fSIN)
fSIN = fSIN*120
SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 0, 1)
//
GetData(nDegree, "Local HMI", LW, 1, 1)
nDegree = nDegree+2
if nDegree >= 361 then
nDegree = 0
end if
SetData(nDegree, "Local HMI", LW, 1, 1)
SIN(nDegree, fSIN)
fSIN = fSIN*120
SetData(fSIN, "Mitsubishi FX3U/FX3G", D, 2, 1)
bON=false
SetData(bON, "Local HMI", LB, 0, 1)
end macro_command
2.通過查表方法獲取。
如下圖,可以事先通過查詢三角函數表,
將角度對應數值以常數的形式保存到PLC寄存器裏供程序調用。
這是工作量很大的一種方法。
上麵暫時想到兩種方法。
另外如果高等數學有印象的話,
也可以用泰勒公式展開三角函數,套用公式編寫程序。