三菱fx3u使用st語言adprw指令通過485-adp-mb模塊與臺達變頻器進行通信
作者:東莞市天翔環境工程有限公司,廣東東極環保科技有限公司
使用ST語言作爲PLC控制程序編寫的通信方面的資料比較少,網絡上找不到相應的資料,實際測試一段時間後編寫成功,所以有意將方法和程序分享出來。
因本人學習PLC只有2個多月,在程序,指令,硬件等使用方面難免出現不夠嚴謹的方法,因此本文只給有需要了解這些內容的人或需要熟悉這類程序的人做通信參考。
本文程序均經過測試,在硬件環境相同的情況下可順利執行相應動作。
主要硬件設備:FX3u-32MT,FX3u-485-BD,FX3u-485-ADP-MB,臺達變頻器VFD-M
通信格式:MODBUS ASCII,9600,7,E,1,停止位2,變頻器地址01。
變頻器參數地址,功能碼使用以及參數內容設置,請參考變頻器手冊上的通信篇設置。
adprw指令的參數和功能碼等內容請參考FX3U通信篇手冊。
IF( M0 )THEN (*M0爲觸摸屏上的變頻器開關按鈕*)
Y11:=1;(*Y11變頻器電源接通*)
Y5:=1;(*Y5爲運行指示燈,可接可不接*)
ELSE
Y11:=0;
Y5:=0;
M2:=0;
M3:=0;
M4:=0;
M5:=0;
M7:=0;(*修改頻率的數據發送狀態位,與M5作用一樣起到同時只能發送一次數據*)
(*變頻器關閉的話,將各參數按鈕復位*)
END_IF;
IF( M8002 )THEN(*初始化通道2,寫入通信格式D8420,通信協議D8421,設置超時,重試等數據*)
MOV( MOV( MOV( MOV( MOV( MOV( MOV( MOV( M8411, H1088, D8420 ), H101, D8421 ), K2000, D8429 ), K400, D8430 ), K10,D8431 ), K3, D8432 ), H1, D8435 ), K100, D8436 );
(*經過測試,在ST語言內必須使用這個MOV嵌套方法設置通信參數,不能使用“=”直接賦值,否則無效無法通信,原因不明,如果你知道的話請告訴我,因爲這違背ST語言的編程方式。*)
END_IF;
IF( M6 AND M7 )THEN(*M6爲修改變頻器頻率按鈕*)
adprw( 1,H1,H6,H2001,k1,D115 );(*發送數據,往變頻器的H2001地址寫一個頻率數據內容D115,D115通過觸摸屏輸入元件傳入,因此在觸摸屏上寫入頻率內容輸入即可更改變頻器運行頻率*)
IF( M8029 )THEN(*發送完成的話復位通信狀態標誌*)
M7:=0;
END_IF;
END_IF;
IF( ldp( 1,M2 ) ) THEN
M5:=1;
M3:=0;
M4:=0;
(*當觸摸屏上的正轉按鈕按下時,設置M5發送數據標誌,並切換觸摸屏上的按鈕狀態,其他按鈕置0*)
END_IF;
IF( ldp( 1,M3 ) ) THEN
M5:=1;
M2:=0;
M4:=0;
(*當觸摸屏上的反轉按鈕按下時,設置M5發送數據標誌,並切換觸摸屏上的按鈕狀態,其他按鈕置0*)
END_IF;
IF( ldp( 1,M4 ) ) THEN
M5:=1;
M3:=0;
M2:=0;
END_IF;
IF( ldp( 1,M6 ) ) THEN
M7:=1;
(*當觸摸屏上的停止按鈕按下時,設置M5發送數據標誌,並切換觸摸屏上的按鈕狀態,其他按鈕置0*)
END_IF;
IF( M2 AND M5 ) THEN(*M2爲變頻器正轉按鈕*)
adprw( 1,H1,H6,H2000,k1,H12);(*發送數據,往變頻器的H2000地址寫一個正轉數據內容H12*)
IF( M8029 )THEN(*發送完成的話復位通信狀態標誌*)
M5:=0;
END_IF;
END_IF;
IF( M3 AND M5 ) THEN(*M3爲變頻器反轉按鈕*)
adprw( 1,H1,H6,H2000,k1,H22);(*發送數據,往變頻器的H2000地址寫一個反轉數據內容H22*)
IF( M8029 )THEN(*發送完成的話復位通信狀態標誌*)
M5:=0;
END_IF;
END_IF;
IF( M4 AND M5 ) THEN(*M4爲變頻器停止按鈕*)
adprw( 1,H1,H6,H2000,k1,H1);(*發送數據,往變頻器的H2000地址寫一個停止數據內容H1*)
IF( M8029 )THEN(*發送完成的話復位通信狀態標誌*)
M5:=0;
END_IF;
END_IF;