技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > VC環(huán)境下三菱PLC與微機(jī)的串行通信

VC環(huán)境下三菱PLC與微機(jī)的串行通信

時(shí)間:2018-01-10 10:52:21來源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語:?可編程控制器(PLC)是集計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)為一體的新型自動(dòng)控制裝置。由于體積小、可靠性高以及組態(tài)靈活等優(yōu)點(diǎn),PLC在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用

0[align=center]引言

可編程控制器(PLC)是集計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)、通信技術(shù)為一體的新型自動(dòng)控制裝置。由于體積小、可靠性高以及組態(tài)靈活等優(yōu)點(diǎn),PLC在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。將PC機(jī)與可編程控制器組合起來,充分利用PC機(jī)強(qiáng)大的人機(jī)接口功能、豐富的應(yīng)用軟件和低廉的價(jià)格來共同實(shí)現(xiàn)管理、控制一體化成為一個(gè)新的發(fā)展趨勢。本文重點(diǎn)介紹在Windows2000環(huán)境下如何利用VC來實(shí)現(xiàn)PC機(jī)與三菱PLC之間的串行通訊。

1三菱PLC與計(jì)算機(jī)之間通信協(xié)議

FX2系列PLC與計(jì)算機(jī)之間的通信采用RS-232標(biāo)準(zhǔn),其傳輸速率固定為9600bps,奇偶校驗(yàn)位采用偶校驗(yàn)。數(shù)據(jù)格式如表1所示。數(shù)據(jù)以幀為單位發(fā)送和接收。一個(gè)多字符幀由圖1所示的五部分組成,其中和校驗(yàn)值是將命令碼STX——ETX之間的字符的ASCII碼(十六進(jìn)制數(shù))相加,取得所得和的最低二位數(shù)。STX和ETX分別表示該字符幀的起始標(biāo)起和結(jié)束標(biāo)志。

(1)起始字元(STX):ASCII碼的起始字元STX對應(yīng)的16進(jìn)制數(shù)位0x02。無論命令信息還是回應(yīng)信息,它們的起始字元均為STX,接收方以此來判知傳輸資料的開始。

(2)命令號碼:為兩位16進(jìn)制數(shù)。所謂命令號碼是指上位機(jī)要求下位機(jī)所執(zhí)行的動(dòng)作類別,例如要求讀取或?qū)懭雴吸c(diǎn)狀態(tài)、寫入或讀取暫存器資料、強(qiáng)制設(shè)定、運(yùn)行、停止等。在回應(yīng)信息中,下位機(jī)會(huì)將上位機(jī)接收到的命令號碼原原本本的隨同其它信息一同發(fā)送給上位機(jī)。

(3)元件首地址:對應(yīng)要操作的元件的相應(yīng)的地址。如從D123單元中讀取數(shù)據(jù)時(shí),要把它對應(yīng)的地址:0x10F6發(fā)送給PLC。

(4)元件個(gè)數(shù):一次讀取位元件或字元件的數(shù)量。

(5)結(jié)束字元(ETX):ASCII碼的結(jié)束字元ETX對應(yīng)的16進(jìn)制數(shù)為0x03。無論命令信息還是回應(yīng)信息,它們的結(jié)束字元均為ETX,接收方以此來判知此次通訊已結(jié)束。

(6)校驗(yàn)碼(Checksum):校驗(yàn)碼是將STX-ETX之間的ASCII字元的16進(jìn)制數(shù)值以“LRC(LongitudinalRedundancyCheck)”法計(jì)算出1個(gè)Byte長度(兩個(gè)16進(jìn)制數(shù)值00-FFH)的校驗(yàn)碼。當(dāng)下位機(jī)接收到信息后,用同樣的方法計(jì)算出接收信息的校驗(yàn)碼,如果兩個(gè)校驗(yàn)碼相同,則說明傳送正確。

FX2系列與計(jì)算機(jī)之間的通信是以主機(jī)發(fā)出的初始命令,PLC對其做出響應(yīng)的方式進(jìn)行通信的。共有0、1、7、8四種命令,上位機(jī)實(shí)現(xiàn)對PLC的讀寫和強(qiáng)行置位。通過ENQ、ACK和NAK,上位機(jī)協(xié)調(diào)與PLC的通信應(yīng)答。

2編程口操作命令類型

串行通信是計(jì)算機(jī)與其他機(jī)器之間進(jìn)行通信的一種常用方法,在Windows操作系統(tǒng)中提供了實(shí)現(xiàn)各種串行通信的API函數(shù)。通過SC-09編程電纜或FX-232-BD通訊模塊,可以將PC機(jī)和計(jì)算機(jī)串行通信口RS-232連接起來,可以實(shí)現(xiàn)PC機(jī)對PLC的RAM區(qū)數(shù)據(jù)進(jìn)行讀、寫操作。根據(jù)PLC本身所具有的特性,計(jì)算機(jī)可對PLC進(jìn)行以下4種類型的操作:

(1)位元件或字元件狀態(tài)讀操作(CMD0);

(2)位元件或字元件狀態(tài)寫操作(CMD1);

(3)位元件強(qiáng)制ON操作(CMD7);

(4)位元件強(qiáng)制OFF操作(CMD8)。

3軟件編程

(1)串行通信實(shí)現(xiàn)方法

在進(jìn)行以上四種操作之前要對串行通信口進(jìn)行必要的初始化。本人采用了一個(gè)專門針對串行通信的CSerial類,并在Open函數(shù)中進(jìn)行了進(jìn)一步的完善。它由MuMegaTechnologies公司提供的一個(gè)VisualC++類,我們只要理解CSerial類種的幾個(gè)成員函數(shù),就能很方便地實(shí)現(xiàn)串行通信了。以下是該類定義:

classCSerial

{

public:

CSerial();

~CSerial();

BOOLOpen(intnPort,intnBaud,intnParity,intnByteSize,intnStopBits);

BOOLClose(void);

intReadData(void*,int);

intSendData(constchar*,int);

intReadDataWaiting(void);

BOOLIsOpened(void){return(m_bOpened);}

protected:

BOOLWriteCommByte(unsignedchar);

HANDLEm_hIDComDev;

OVERLAPPEDm_OverlappedRead,m_OverlappedWrite;

BOOLm_bOpened;

};

①Serial::Open這個(gè)成員函數(shù)打開通信端口。帶五個(gè)參數(shù),第一個(gè)是串口號,第二個(gè)參數(shù)是數(shù)據(jù)傳輸速率,第三個(gè)是數(shù)據(jù)效驗(yàn)方式,第四個(gè)是數(shù)據(jù)位數(shù),第五個(gè)是數(shù)據(jù)停止位。

②Serial::Close函數(shù)關(guān)閉通信端口。

③CSerial::SendData函數(shù)把數(shù)據(jù)從一個(gè)緩沖區(qū)寫到串行端口。第一個(gè)參數(shù)是緩沖區(qū)指針,其中包含要被發(fā)送的資料;第二個(gè)參數(shù)是發(fā)送的字節(jié)數(shù)。

④CSerial::ReadData函數(shù)從斷口接收緩沖區(qū)讀入數(shù)據(jù)。第一個(gè)參數(shù)是緩沖區(qū)指針,資料將被放入該緩沖區(qū);第二個(gè)參數(shù)緩沖區(qū)的大小。

(2)位元件或字元件狀態(tài)讀操作

操作對象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如表1;在發(fā)送完上述命令格式代碼后,就可以讀取PLC響應(yīng)信息了。響應(yīng)信息格式如圖2;

部分程序代碼:

BOOLCPlcComDlg::ReadPLC(char*Read,char*address,intbytes)

{

CSerialSerial;

charread_BUFFER;

if(Serial.Open(m_com,m_Buad,m_Parity,m_Byte,m_StopBites))

{

Serial.SendData(&ENQ_request,1);//發(fā)送聯(lián)絡(luò)訊號

Sleep(100);

Serial.ReadData(&read_BUFFER,1);//讀取PLC響應(yīng)訊號

if(read_BUFFER==ACK)

{

//初始化變量

//發(fā)送圖2命令格式代碼

ASCII(readdatasum_check,readdata_sum);

//將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)。

if(*readdatasum_CHECK==*readdatasum_check)//和校驗(yàn)

{

//對讀出的數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換成整型數(shù)

for(intj=0;j{

for(i=j*2;iRead[i]=(Read[i]>0x39)?(Read[i]-0x41+0xA):(Read[i]-0x30);

Read_value[j]=(((((Read[j*4+2]<<4)+Read[j*4+3]))+Read[j*4+0])<<4)+Read[j*4+1];

}

returnTRUE;

}

else

returnFALSE;

}

}

}

}

//將整數(shù)轉(zhuǎn)換成ASCII(十六進(jìn)制),并取低二位,

voidCPlcComDlg::ASCII(char*total_databytes,intread_bytes)

{

unsignedintuTmp;

uTmp=read_bytes&0x000f;

total_databytes[1]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA);

uTmp=(read_bytes>>4)&0x000f;

total_databytes[0]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xA);

}

(3)位元件或字元件狀態(tài)寫操作

操作對象元件:PLC內(nèi)部的X、Y、M、S、T、C、D元件;命令格式如圖3所示。

程序代碼(略)。

(4)位元件強(qiáng)制ON操作

操作對象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖4所示。

部分程序代碼如下:

voidCPlcComDlg::ForceOnOpreation(char*Address)

{

CSerialSerial;

charread_BUFFER;

CStringstrtemp;

if(Serial.Open(m_com,9600))

{

Serial.SendData(&ENQ_request,1);

Sleep(100);

Serial.ReadData(&read_BUFFER,1);

if(read_BUFFER==ACK)

{

//初始化變量

//發(fā)送圖4命令格式代碼

ASCII(Sum_Check,sum);//將STX-ETX之間的字符相加,轉(zhuǎn)換成ASCII(十六進(jìn)制),并取和的低二位數(shù)

for(i=0;i<2;i++)

Serial.SendData(&Sum_Check[i],1);//和校驗(yàn)

Sleep(100);

Serial.ReadData(&read_buffer,1);

if(read_buffer==ACK)

returnTRUE;

else

returnFALSE;

}

}

}

(5)位元件強(qiáng)制OFF操作

操作對象元件:PLC內(nèi)部的X、Y、M、S、T、C元件;命令格式如圖5所示。

4實(shí)時(shí)通訊控制界面

本程序能夠?qū)崿F(xiàn)遠(yuǎn)程控制FX系列PLC的運(yùn)行。能讀取位元件的當(dāng)前狀態(tài),以及對它們置位和復(fù)位。能夠讀取字元件的值和往字元件寫值。并能自動(dòng)連續(xù)讀取單個(gè)字元件的值。

圖6通訊界面

5結(jié)論

本程序?qū)崿F(xiàn)了上位機(jī)對三菱PLC的實(shí)時(shí)監(jiān)控,傳送數(shù)據(jù)準(zhǔn)確,這種通信方法不僅成本低,而且簡單、穩(wěn)定、實(shí)用性強(qiáng)。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:單片機(jī)與PLC在工業(yè)應(yīng)用中異同...

下一篇:變頻器作用及工作原理

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號