三菱PLC通信協(xié)議說明及測(cè)試
前言
三菱MC協(xié)議是開發(fā)三菱系列PLC必須掌握的一種通信協(xié)議,其目的是讓外部設(shè)備,可以通過串行通信模塊C24或以太網(wǎng)接口模塊E71,實(shí)現(xiàn)對(duì)可編程控制器CPU的數(shù)據(jù)訪問。
MC協(xié)議是Melsec協(xié)議的簡(jiǎn)稱。
通信幀類型
外部設(shè)備通過C24/E71訪問可編程控制器CPU時(shí),可以選擇不同的通信幀及數(shù)據(jù)格式來實(shí)現(xiàn),具體如下所示:

通信幀命名規(guī)格
通信幀命名格式如下:
xxx 兼容 n m 幀(示例: QnA 兼容 3C 幀、QnA 兼容 3E 幀)
1、xxx 用于表示與以前產(chǎn)品模塊的指令兼容性的對(duì)象可編程控制器 CPU
A ?: A 系列可編程控制器 CPU
QnA ?: QnA 系列可編程控制器 CPU
2、n對(duì)應(yīng)的以前產(chǎn)品模塊的幀
1 : 兼容 A 系列的計(jì)算機(jī)鏈接模塊、以太網(wǎng)接口模塊支持的指令的通信幀
2 : 兼容 QnA 系列串行通信模塊支持的 QnA 簡(jiǎn)易幀
3 : QnA 系列串行通信模塊支持的 QnA 幀及兼容 QnA 系列以太網(wǎng)接口模塊支持的通信幀
4 : 兼容 QnA 系列串行通信模塊支持的 QnA 擴(kuò)展幀
3、m是指相應(yīng)幀進(jìn)行數(shù)據(jù)通信的對(duì)象模塊
C : C24
E : E71
通信方式
從前面的描述,我們可以知道,MC協(xié)議是兼容串口通信和以太網(wǎng)通信的。
一般我們使用比較多的是以太網(wǎng)通信,對(duì)于FX5U系列/Q系列/Qna系列/L系列的PLC,通常會(huì)使用QnA兼容3E幀,對(duì)于FX3U系列,我們需要加以太網(wǎng)模塊,采用A兼容1E幀。
對(duì)于串口設(shè)備,一般會(huì)使用QnA兼容2C幀和QnA兼容4C幀。
通信編碼格式有ASCII和二進(jìn)制兩種方式,通過二進(jìn)制編碼數(shù)據(jù)進(jìn)行的通信與通過ASCII編碼數(shù)據(jù)進(jìn)行的通信相比,前者的通信數(shù)據(jù)量約為后者的二分之一,因此二進(jìn)制編碼的方式可縮短通信時(shí)間。
通過MC協(xié)議進(jìn)行的數(shù)據(jù)通信,一般情況下都是以半雙工通信進(jìn)行。
對(duì)可編程控制器CPU進(jìn)行訪問時(shí),應(yīng)在接收到來自于可編程控制器CPU側(cè)的對(duì)應(yīng)于之前發(fā)送的指令報(bào)文的響應(yīng)報(bào)文后,再發(fā)送下一個(gè)指令報(bào)文。
在響應(yīng)報(bào)文的接收完畢之前,不能發(fā)送下一個(gè)指令報(bào)文

PLC設(shè)置
三菱PLC如果要走M(jìn)C協(xié)議,是不需要額外編程的,但是需要做一些簡(jiǎn)單的配置。
1.在右側(cè)工程欄中雙擊PLC參數(shù);

2、在彈框中選擇內(nèi)置以太網(wǎng)端口設(shè)置,設(shè)置IP,設(shè)置通信數(shù)據(jù)代碼設(shè)置,勾選允許RUN中寫入;

3.點(diǎn)擊打開設(shè)置,在彈框第一欄中選擇TCP協(xié)議,MC協(xié)議,端口號(hào)根據(jù)自己需求設(shè)置比如4999,然后設(shè)置結(jié)束,設(shè)置結(jié)束,重新下載PLC程序;

4、斷電重啟PLC。
協(xié)議幀
通過以上了解之后,下面我們對(duì)協(xié)議幀進(jìn)行更深入地了解,為了方便起見,我們以以太網(wǎng)的Qna兼容3E幀為例進(jìn)行說明,其他的幀都是大同小異。
協(xié)議幀一般分為三種,分別是請(qǐng)求幀、響應(yīng)幀及異常幀。
請(qǐng)求幀:表示發(fā)送請(qǐng)求的報(bào)文。
響應(yīng)幀:如果請(qǐng)求正確,控制器CPU會(huì)以響應(yīng)幀進(jìn)行返回。
異常幀:如果請(qǐng)求錯(cuò)誤,CPU會(huì)以異常幀返回。
讀取請(qǐng)求幀報(bào)文格式:

讀取響應(yīng)幀報(bào)文格式:

讀取異常幀報(bào)文格式:

寫入請(qǐng)求幀報(bào)文格式:

寫入響應(yīng)幀報(bào)文格式:

寫入異常幀報(bào)文格式:

實(shí)際案例
讀取案例:讀取從D0開始的5個(gè)寄存器,我們結(jié)合協(xié)議文檔,按照?qǐng)?bào)文格式進(jìn)行報(bào)文拼接。
發(fā)送報(bào)文如下:
副頭部:0x50 0x00
網(wǎng)絡(luò)編號(hào):0x00
PLC編號(hào):0xFF
請(qǐng)求目標(biāo)模塊I/O編號(hào):0xFF 0x03
請(qǐng)求目標(biāo)模塊站號(hào):0x00
請(qǐng)求數(shù)據(jù)長度:0x0C 0x00
CPU監(jiān)視定時(shí)器:0x0A 0x00
指令:0x01 0x04
子指令:0x00 0x00
起始軟元件:0x00 0x00 0x00
軟元件代碼:0xA8
軟元件點(diǎn)數(shù):0x05 0x00
響應(yīng)報(bào)文如下:
副頭部:0xD0 0x00
網(wǎng)絡(luò)編號(hào):0x00
PLC編號(hào):0xFF
請(qǐng)求目標(biāo)模塊I/O編號(hào):0xFF 0x03
請(qǐng)求目標(biāo)模塊站號(hào):0x00
響應(yīng)數(shù)據(jù)長度:0x0C 0x00
結(jié)束代碼:0x00 0x00
軟元件數(shù)據(jù):0x0B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
網(wǎng)絡(luò)調(diào)試助手測(cè)試結(jié)果:

這樣就知道了D0-D4分別為0x0B 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00,將其轉(zhuǎn)換成數(shù)據(jù),就是11,0,0,0,0。
其他存儲(chǔ)區(qū)的讀寫也是同樣的原理。
附錄


更多內(nèi)容可以持續(xù)關(guān)注UP呦