-
1 # 工控人
-
2 # 工控程式設計
三菱fx3g不支援三角函式指令。
三菱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暫存器裡供程式呼叫。
這是工作量很大的一種方法。
上面暫時想到兩種方法。
另外如果高等數學有印象的話,
也可以用泰勒公式展開三角函式,套用公式編寫程式。
回覆列表
急求三菱fx3g的plc沒有計算三角函式的指令,如何解決
三菱fx3g系列的plc是不支援三角函式指令的如正弦(SIN)、餘弦(COS)、正切(TAN)以及反三角函式指令,這需要3U系列的才支援,這些指令是計算弧度(RAD)的,因此需要把角度數值轉換為弧度值才能用三角指令,而且指令中的數值都是浮點數。那3g中不支援如何實現,除了更換plc外我們可以採用如下方向實現:
按照三角函式數值對照表,把所有的角度和結果輸入到程式中,用到哪個角度就呼叫對應的數值即可,這是最笨的方法,如果要求計算的角度不多的可以採用。按照三角函式的泰勒級數展開式編寫子程式:忽略最後的高階無窮小專案,我們在plc的梯形圖中按照加減乘除的四項執行就能簡單計算出函式值,如下圖中計算正弦函式的sin值,首先把角度轉換為弧度值,按照上述的式子計算,45°的結果為0.705,誤差還是有的,如果要求精度不高的話可以採用此方法。第三種方式就是如果與觸控式螢幕通訊,我們可以使用宏指令中內建函式庫中的數學運算函式進行計算,首先就是把我們的plc的角度值傳輸到觸控式螢幕的資料暫存器中,計算完成結果再傳到plc中,下面是威綸通觸控式螢幕用宏指令編寫三角函式的:macro_command main()
float a,b //定義兩個浮點數a和吧
GetData(a,"Mitsubishi FX3U/FX3G",D,0,1) //獲取plc上的角度值D0並賦值給a
SIN(a,b)//計算出其sin值儲存到b中
SetData(b,"Mitsubishi FX3U/FX3G",D,10,1)//把結果再回傳到plc上的D10中
end macro_command