上位機和三菱FN2x通信實例

應項目需求需要使用上位機軟件和三菱的PLC進行通信,C# 和PLC都是零基礎,

C#的學習過程略,不難,學會空間就好

下面簡述和PLC通信的關鍵步驟:

1、串口設置:

1) 串口線(三菱的422線)

2)串口工具

波特率:9600 (PLC是固定的)

奇偶檢驗:偶校驗  (PLC固定的)

數據位:7 

停止位:1

2、通信測試

上位機:發送 0x05

PLC:迴應0x06(正常)  返回0x15  說明指令無效,看看自己串口設置問題

3、獲取x個點的當前狀態

1)通信格式

讀:

STX CMD x/y地址(4字節) 讀取幾個字節 EXT 校驗
0x02 '0'讀    /   '1'  寫 ‘0’ '0' 'A' '0' ‘0’ ‘2’ 0x03

‘6’

crc1

‘6’

crc2

固定值0x02 0x30 /0x31 0x30 0x30 0x41 0x30 0x30 0x32 固定值 0x36 0x36

 

注 : ‘A’ 不是直接 轉asiic 碼  而是 A =  0x10 ,然後加 0x31 (爲什麼是加0x31而不是0x30 我也不清楚)

校驗值計算:CMD+地址值+讀取字節值+ext = 總和

 

 temp = 總和&0xff 

            a = ((temp >> 4) & 0x0f) > 9 ? ((temp >> 4) & 0x0f) + 7 : ((temp >> 4) & 0x0f);
            b = (temp & 0x0f) > 9 ? ((temp & 0x0f) + 7) : (temp & 0x0f);
            crc1= (byte) ( a + 0x30);
            crc2= (byte)( b + 0x30);

PLC返回:

錯誤返回:0x15

成功返回:

 

STX 第一值 第二值 EXT 校驗
0x02 ‘3’ '5' '8' '4' 0x03

‘D’

crc1

‘7’

crc2

固定值0x02 0x33 0x35· 0x38 0x34 固定值 0x44 0x37

第一值:

y7 y6 y5 y4 y3 y2 y1 y0
0 0 1 1 0 1 0 1
3 5

 

第二值

y17 y16 y15 y14 y13 y12 y11 y10
1 0 0 0 0 1 0 0
8 4

多字節的同理2字節的方式

寫:

STX CMD x/y地址(4字節) 讀取幾個字節 第一值 第二值 EXT 校驗
0x02 '   '1'  寫 ‘0’ '0' 'A'(Y地址) '0' ‘0’ ‘2’ ‘3’ ‘5’ ‘8’ ‘4’ 0x03

‘6’

crc1

‘6’

crc2

固定值0x02 0x31 0x30 0x30 0x41 0x30 0x30 0x32 0x33 0x35 0x38 0x34 固定值 0x33 0x42

第一值:

y7 y6 y5 y4 y3 y2 y1 y0
0 0 1 1 0 1 0 1
3 5

第二值:
 

y17 y16 y15 y14 y13 y12 y11 y10
1 0 0 0 0 1 0 0
8 4


寫入成功返回:0x06

寫入失敗返回:0x15

 

 

PLC寄存器個點的對應關係:

x:  0x0080

y:0x00a0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章