時間:2024-03-11 09:59:54來源:深圳市雷賽智能控制股份有限公司
自由協(xié)議通訊也稱無協(xié)議通訊,需要根據(jù)對方設(shè)備的通訊數(shù)據(jù)格式編寫一個臨時協(xié)議,雖然隨著標準協(xié)議(Modbus,USS等)的普及,自由協(xié)議通訊應(yīng)用越來越少,但是對于一些小的設(shè)備如掃碼槍、LCD顯示屏等,由于沒有集成標準通訊協(xié)議,所以只能選用自由協(xié)議通訊。以下例程是基于MC532(同平臺其它系列使用方法相同) PLC的RS232及RS485硬件端口與電腦串口調(diào)試助手(用于模擬串口設(shè)備)的自由協(xié)議通信例程說明。
MC532 PLC端設(shè)置及程序編寫
1、添加通訊功能庫
左鍵雙擊【庫管理器】—左鍵單擊【添加庫】,搜索【Serial Communication】,單擊【確定】即可添加完成。
2、創(chuàng)建如圖所示的變量
3、調(diào)用如圖所示的功能塊
4、編寫如圖所示程序 ①調(diào)用COM.Open,此功能塊為打開串口;變量usiListLength為變量pParameterList的數(shù)據(jù)長度(根據(jù)后續(xù)介紹可知,數(shù)據(jù)長度為7);變量pParameterList為指針變量,指針地址指向結(jié)構(gòu)體COM.PARAMETER的數(shù)組aParamsB115200,數(shù)組包含了udiPort,udiValue(波特率)、udiBaudrate,udiValue(端口號) 、 udiParity,udiValue(校驗) 、 udiStopBits,udiValue(停止位) 、udiTimeout,udiValue(超時時間) 、udiByteSize,udiValue(數(shù)據(jù)位)及udiBinary,udiValue(二進制參數(shù),啟用二進制模式)7種關(guān)于串口的參數(shù),相關(guān)的變量創(chuàng)建直接參照下列庫文件中的例程,再對參數(shù)進行設(shè)置;變量hCom為結(jié)構(gòu)體CAA.HANDLE數(shù)據(jù)類型,獲取通訊句柄;②udiPort,udiValue:波特率,此次例程設(shè)置波特率為115200;udiBaudrate,udiValue:端口號,2PLC的RS232端口為COM2,第一個RS485端口為COM0,第二個RS485端口為COM1,因此可根據(jù)使用不同硬件端口進行賦值;udiParity,udiValue:校驗類型(奇校驗、偶校驗或無校驗),此次例程設(shè)置偶校驗,賦值COM.PARITY.EVEN ;udiStopBits,udiValue:停止位( ONESTOPBIT/ONE5STOPBIT/TWOSTOPBIT ),此次例程設(shè)置為ONESTOPBIT;udiTimeout,udiValue:超時時間,此次例程設(shè)置成500ms;udiByteSize,udiValue:數(shù)據(jù)位,此次例程設(shè)置成8;udiBinary,udiValue:二進制參數(shù),采取默認值設(shè)置成1即可;設(shè)置完成后由于pParameterList為指針類型,則填入ADR(aParamsB115200)即可;
③調(diào)用COM.Write,此功能塊為串口發(fā)送數(shù)據(jù);變量udiTimeout超時時間,此次例程設(shè)置為500ms;變量hCom為結(jié)構(gòu)體CAA.HANDLE數(shù)據(jù)類型,為通訊句柄,可從Com.Open中的輸出變量hCom獲取;pBuffer為指針類型,數(shù)據(jù)指向串口發(fā)送數(shù)據(jù)緩存的地址,本例程設(shè)置寫入數(shù)值變量為BYTE類型的byWriteData,因此本例程填入ADR(byWriteData);szSize
為寫入數(shù)據(jù)長度,此次例程設(shè)置為10個BYTE數(shù)據(jù)長度,因此填入10;④調(diào)用COM.Read,此功能塊為串口讀取數(shù)據(jù);變量udiTimeout超時時間,此次例程設(shè)置為500ms;變量hCom為結(jié)構(gòu)體CAA.HANDLE數(shù)據(jù)類型,為通訊句柄,可從Com.Open
中的輸出變量
hCom獲取;pBuffer為指針類型,數(shù)據(jù)指向串口讀取數(shù)據(jù)緩存的地址,本例程設(shè)置寫入數(shù)值變量為BYTE類型的byReadData,因此本例程填入ADR(byReadData);szBuffer為從串口緩存讀取數(shù)據(jù)的大小,此次例程設(shè)置為10個BYTE數(shù)據(jù)長度,因此填入10;⑤調(diào)用COM.Close,此功能塊為關(guān)閉串口;變量hCom為結(jié)構(gòu)體CAA.HANDLE數(shù)據(jù)類型,為通訊句柄,可從Com.Open中的輸出變量hCom獲取。
打開串口助手,設(shè)置相關(guān)參數(shù)
1、打開計算機管理,查看計算機串口端口號(本次例程使用USB轉(zhuǎn)串口,端口號為COM4)
2、打開串口助手軟件(大家可自行在網(wǎng)絡(luò)上搜索購買,使用方法基本類似)并設(shè)置相關(guān)參數(shù)
【端口】COM4(計算機端口號);【波特率】115200;【數(shù)據(jù)位】8;【校驗位】E偶;【停止位】1;左鍵單擊選擇【輸入 HEX】及【顯示HEX】,設(shè)置以16進制數(shù)據(jù)類型進行寫入及顯示;左鍵單擊【打開串口】即可。
PLC與電腦端做數(shù)據(jù)發(fā)送及讀取
1、PLC發(fā)送數(shù)據(jù),電腦端讀取數(shù)據(jù)
觸發(fā)COM.Open打開串口端口,對byWriteData賦值十進制數(shù)65(16進制為0x41)后觸發(fā)COM.Write,可見電腦端可讀取PLC發(fā)送的數(shù)值。
2、電腦端發(fā)送數(shù)據(jù),PLC端讀取數(shù)據(jù)
通過串口助手發(fā)送16進制數(shù)值0x86;觸發(fā)COM.Open打開串口端口,關(guān)閉串口數(shù)據(jù)寫入功能塊,觸發(fā)COM.Read 功能塊,可成功讀取16進制數(shù)值0x86(十進制為134)
-END-
中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。