主要硬件設(shè)備:三菱PLC與臺(tái)達(dá)變頻器VFD-M通訊僅供參考案例。
通信格式:MODBUS ASCII,9600,7,E,1,停止位2,變頻器地址01。
IF( M0 )THEN? //*M0為觸摸屏上的變頻器啟動(dòng)按鈕*如果為真啟動(dòng)
Y11:=1; //Y11變頻器電源接通
Y5:=1; //Y5為運(yùn)行指示燈
ELSE //如果為假
Y11:=0; //y11停止
Y5:=0; ? //Y5指示燈滅
M2:=0;
M3:=0;
M4:=0;
M5:=0;//修改頻率的數(shù)據(jù)發(fā)送狀態(tài)位,起到同時(shí)只能發(fā)送一次數(shù)據(jù)的作用變頻器關(guān)閉的話,將各參數(shù)按鈕復(fù)位
END_IF;
IF( LDP( 1,M8123 ) )THEN //上沿脈沖,*數(shù)據(jù)接收完畢的話,復(fù)位m8123數(shù)據(jù)接收完畢標(biāo)志
rst(1,M8123);
END_IF;
IF ( M8002 ) THEN
M8161:=1; //8位數(shù)據(jù)處理模式
D8120:=H0C88; //設(shè)置通信格式*通信格式:MODBUS ASCII,9600,7,E,1,停止位2,
END_IF;
IF( M8000 AND LDP( 1,M6 ) )THEN? //M6為修改變頻器頻率按鈕
D10:=H003A; ? //設(shè)置傳送的內(nèi)容,根據(jù)變頻器功能碼和變頻器寄存器地址設(shè)置,
D25:=H000D;
D26:=H000A;
D101:=H0001;
D102:=H0003;
D103:=H0020;
D104:=H0001;
D105:=D115;//往變頻器的H2001地址寫一個(gè)頻率數(shù)據(jù)內(nèi)容D115,D115通過(guò)觸摸屏輸入元件傳入,因此在觸摸屏上寫入頻率內(nèi)容輸入即可更改變頻器運(yùn)行頻率
D106:=H0000;
ASCI( TRUE ,D101, 2,D11);
ASCI( TRUE ,D102, 2,D13);
ASCI( TRUE ,D103, 2,D15);
ASCI( TRUE ,D104, 2,D17);
ASCI( TRUE ,D105, 2,D19);
ASCI( TRUE ,D106, 2,D21); //將傳送內(nèi)容轉(zhuǎn)換成ASCII碼
ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
SUB_E( TRUE , 256 , D110, D28); //計(jì)算數(shù)據(jù)內(nèi)容的LRC碼
ASCI( TRUE ,D28, 2,D23); //將LRC碼寫入d23,d24
RS( TRUE, D10 , 17 , 17, D50 );//設(shè)置傳送數(shù)據(jù)內(nèi)容為D10開始的17個(gè)D寄存器里的內(nèi)容
M8122:=1; //傳送開始
END_IF;
IF( LDP( 1,M2 ) ) THEN
M10:=1;
M11:=0;
M12:=0;//當(dāng)觸摸屏正轉(zhuǎn)M2按鈕按下時(shí),設(shè)置M10發(fā)送數(shù)據(jù)標(biāo)志,并切換觸摸屏上的按鈕狀態(tài),其他按鈕為假。
END_IF;
IF( ldp( 1,M3 ) ) THEN
M10:=1;
M11:=0;
M12:=0; //當(dāng)觸摸屏反轉(zhuǎn)M3按鈕按下時(shí),設(shè)置M10發(fā)送數(shù)據(jù)標(biāo)志,并切換觸摸屏上的按鈕狀態(tài),其他按鈕為假
END_IF;
IF( ldp( 1,M4 ) ) THEN
M5:=1;
M3:=0;
M2:=0; //當(dāng)觸摸屏停止按鈕按下時(shí),設(shè)置M5發(fā)送數(shù)據(jù)標(biāo)志,并切換觸摸屏上的按鈕狀態(tài),其他按鈕為假
END_IF;
IF( ldf( 1,M8122 ) ) THEN
M10:=0;? //數(shù)據(jù)發(fā)送成功以后,將M10置0,不再繼續(xù)發(fā)送
END_IF;
IF( ldp( 1,M2 ) AND M5 ) THEN? //M2為變頻器正轉(zhuǎn)按鈕
D10:=H003A;
D25:=H000D;
D26:=H000A;
D101:=H0001;
D102:=H0006;
D103:=H0020;
D104:=H0000;
D105:=H0000;
D106:=H0012;//設(shè)置傳送的內(nèi)容,根據(jù)變頻器功能碼和變頻器寄存器地址設(shè)置
ASCI( TRUE ,D101, 2,D11);
ASCI( TRUE ,D102, 2,D13);
ASCI( TRUE ,D103, 2,D15);
ASCI( TRUE ,D104, 2,D17);
ASCI( TRUE ,D105, 2,D19);
ASCI( TRUE ,D106, 2,D21);//將傳送內(nèi)容轉(zhuǎn)換成ASCII碼
ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
SUB_E( TRUE , 256 , D110, D28);//計(jì)算數(shù)據(jù)內(nèi)容的LRC碼
ASCI( TRUE ,D28, 2,D23);//將LRC碼寫入d23,d24
RS( TRUE, D10 , 17 , 0, D50 );//設(shè)置傳送數(shù)據(jù)內(nèi)容為D10開始的17個(gè)D寄存器里的內(nèi)容
M8122:=1; //傳送開始
END_IF;
IF( ldp( 1,M3 ) AND M5 ) THEN//M3為變頻器反轉(zhuǎn)按鈕
D10:=H003A;
D25:=H000D;
D26:=H000A;
D101:=H0001;
D102:=H0006;
D103:=H0020;
D104:=H0000;
D105:=H0000;
D106:=H0022;//設(shè)置傳送的內(nèi)容,根據(jù)變頻器功能碼和變頻器寄存器地址設(shè)置
ASCI( TRUE ,D101, 2,D11);
ASCI( TRUE ,D102, 2,D13);
ASCI( TRUE ,D103, 2,D15);
ASCI( TRUE ,D104, 2,D17);
ASCI( TRUE ,D105, 2,D19);
ASCI( TRUE ,D106, 2,D21);//將傳送內(nèi)容轉(zhuǎn)換成ASCII碼
ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
SUB_E( TRUE , 256 , D110, D28);//計(jì)算數(shù)據(jù)內(nèi)容的LRC碼
ASCI( TRUE ,D28, 2,D23);//將LRC碼寫入d23,d24
RS( TRUE, D10 , 17 , 0, D50 );//設(shè)置傳送數(shù)據(jù)內(nèi)容為D10開始的17個(gè)D寄存器里的內(nèi)容
M8122:=1;? //傳送開始
END_IF;
IF( ldp( 1,M4 ) AND M5 ) THEN? //M4為變頻器停止按鈕
D10:=H003A;
D25:=H000D;
D26:=H000A;
D101:=H0001;
D102:=H0006;
D103:=H0020;
D104:=H0000;
D105:=H0000;
D106:=H0001;//設(shè)置傳送的內(nèi)容,根據(jù)變頻器功能碼和變頻器寄存器地址設(shè)置
ASCI( TRUE ,D101, 2,D11);
ASCI( TRUE ,D102, 2,D13);
ASCI( TRUE ,D103, 2,D15);
ASCI( TRUE ,D104, 2,D17);
ASCI( TRUE ,D105, 2,D19);
ASCI( TRUE ,D106, 2,D21);//將傳送內(nèi)容轉(zhuǎn)換成ASCII碼
ADD_E( TRUE , D101,D102,D103,D104,D105,D106 , D110);
SUB_E( TRUE , 256 , D110, D28);//計(jì)算數(shù)據(jù)內(nèi)容的LRC碼
ASCI( TRUE ,D28, 2,D23);//將LRC碼寫入d23,d24
RS( TRUE, D10 , 17 , 0, D50 );//設(shè)置傳送數(shù)據(jù)內(nèi)容為D10開始的17個(gè)D寄存器里的內(nèi)容
M8122:=1; //傳送開始
END_IF;
以上ST語(yǔ)言供參孝.
rs指令的參數(shù)和功能等內(nèi)容請(qǐng)參考FX編程器的通信篇手冊(cè)。
變頻器參數(shù)地址,功能碼使用以及參數(shù)內(nèi)容設(shè)置,請(qǐng)參考變頻器手冊(cè)上的通信篇設(shè)置。
---------------------
評(píng)論