加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、了解MC協(xié)議
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

python實(shí)現(xiàn)MC協(xié)議(SLMP 3E幀)的TCP服務(wù)端(篇一)

12/08 07:47
1479
閱讀需 5 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

python實(shí)現(xiàn)MC協(xié)議(SLMP 3E幀)的TCP服務(wù)端是一件稍微麻煩點(diǎn)的事情。它不像modbusTCP那樣,可以使用現(xiàn)成的pymodbus模塊去實(shí)現(xiàn)。但是,我們可以根據(jù)協(xié)議幀進(jìn)行組包,自己去實(shí)現(xiàn)幀的格式,而這一切可以基于socket模塊。本文為第一篇。

一、了解MC協(xié)議

參考文檔:三菱PLC之SLMP協(xié)議報(bào)文說明 - 知乎 (zhihu.com)

1、MC協(xié)議與SLMP協(xié)議

查閱三菱PLC官方文檔,發(fā)現(xiàn)SLMP協(xié)議的3E幀,其實(shí)就是MC協(xié)議的3E幀,因此可通用。

2、3E/4E幀報(bào)文

查閱三菱PLC官方文檔,發(fā)現(xiàn)3E/4E幀報(bào)文格式如下圖所示

3、SLMP的3E幀與4E幀格式的區(qū)別

4E幀的格式相對(duì)靈活,可以用于更復(fù)雜的通信場景,支持更多的命令和參數(shù)。

4、3E幀指令

詳見三菱PLC官方文檔。

5、3E幀請(qǐng)求報(bào)文

SLMP 3E幀:50 00 00 FF FF 03 00 0C 00 10 00 01 04 00 00 00 00 00 A8 05 00

(1)幀頭(Header)不顯示,因?yàn)槭荰CP/IP及UDP/IP用的幀頭。幀頭在外部設(shè)備側(cè)進(jìn)行添加及發(fā)送。此外,通常根據(jù)外部設(shè)備自動(dòng)被添加。

(2)副幀頭(Sub-Header)50 00固定值,占用4字節(jié),沒什么好說的。

(3)請(qǐng)求目標(biāo)網(wǎng)絡(luò)編號(hào)00,占用2字節(jié),表示請(qǐng)求的目標(biāo)網(wǎng)絡(luò)編號(hào)。

(4)請(qǐng)求目標(biāo)站號(hào)FF,占用2字節(jié),表示請(qǐng)求的目標(biāo)站號(hào)。

(5)請(qǐng)求目標(biāo)模塊T/0編號(hào):FF 03,占用4字節(jié),表示請(qǐng)求的目標(biāo)模塊T/0編號(hào)。

(6)請(qǐng)求目標(biāo)多點(diǎn)站號(hào)00,占用2字節(jié),表示請(qǐng)求的目標(biāo)多點(diǎn)站號(hào)。

(7)請(qǐng)求數(shù)據(jù)長0C 00,占用4字節(jié),表示請(qǐng)求數(shù)據(jù)的長度(16字節(jié),即后續(xù)的數(shù)據(jù)部分的長度)。

(8)監(jiān)視定時(shí)器10 00,占用4字節(jié),表示監(jiān)視定時(shí)器的值。

(9)請(qǐng)求數(shù)據(jù):01 04 00 00 00 00 00 A8 05 00,這20個(gè)字節(jié)表示具體的請(qǐng)求數(shù)據(jù),但沒有數(shù)據(jù)本身。

01 04:命令碼,占用4字節(jié),表示讀取請(qǐng)求。

00 00:子命令碼,占用4字節(jié)(通常為0)。

00 :固定值,占用2字節(jié)

00 00 A8 05 00:系統(tǒng)區(qū)域,占用10字節(jié)

(10)幀腳不顯示,因?yàn)槭荰CP/IP及UDP/IP用的頁腳。頁腳在外部設(shè)備側(cè)進(jìn)行添加及發(fā)送。此外,通常根據(jù)外部設(shè)備自動(dòng)被添加。

?

6、3E幀響應(yīng)報(bào)文

SLMP 3E幀:D0 00 00 FF FF 03 00 0C 00 00 00 73 00 00 00 00 00 00 00 00 00

(1)幀頭:不顯示。

(2)副幀頭:D0 00。

(3)請(qǐng)求目標(biāo)網(wǎng)絡(luò)編號(hào):00。

(4)請(qǐng)求目標(biāo)站號(hào):FF。

(5)請(qǐng)求目標(biāo)模塊T/0編號(hào):FF 03。

(6)請(qǐng)求目標(biāo)多點(diǎn)站號(hào):00。

(7)響應(yīng)數(shù)據(jù)長:0C 00。

(8)結(jié)束代碼:00 00 存儲(chǔ)指令處理結(jié)果,正常結(jié)束時(shí)存儲(chǔ)0。異常結(jié)束時(shí)存儲(chǔ)訪問目標(biāo)的出錯(cuò)代碼。

(9)響應(yīng)數(shù)據(jù):73 00 00 00 00 00 00 00 00 00,正常結(jié)束時(shí),存儲(chǔ)對(duì)于指令的讀取數(shù)據(jù)等。?常結(jié)束時(shí),存儲(chǔ)出錯(cuò)響應(yīng)站的信息、與請(qǐng)求報(bào)文相同的指令及子指令、異常結(jié)束時(shí)的響應(yīng)數(shù)據(jù)(通過指令定義的情況下)

(10)幀腳:不顯示。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜