【轉】常用PLC通訊協議


三菱FX系列PLC通訊測試

發送幀(Hex):

起始(STX)

02

命令(CMD)

30

首地址(ADDRESS)

30 30 41 30

字節數(BYTES)

30 31

終止(ETX)

03

校驗和(SUM)

36 35

SUM = CMD + ADDRESS + BYTES +ETX

校驗和計算:30+30+30+41+30+30+31+03=165 累加和超過兩位取低兩位65

發→◇02 30 30 30 41 30 30 31 03 36 35 □從Y0開始讀取一個BYTE Y7-Y0

收←◆02 33 46 03 37 43

接收幀(Hex):

起始(STX)

02

數值(DATA)

33 46

終止(ETX)

03

校驗和(SUM)

37 43

 

接收幀解析:“33”查ASCII表示十六進制“3”即“0011”此時繼電器Y5、Y4開

“46”查ASCII表示十六進制“F”即“1111”此時繼電器Y3、Y2、Y1、Y0開,如下表所示:

Y7

Y6

Y5

Y4

Y3

Y2

Y1

Y0

0

0

 1

1

1

1

1

1

向D123開始的兩個存儲器中寫入1234,ABCD

[17:18:38.339]發→◇02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39 □

[17:18:38.370]收←◆06

ACK (06H) 接收正確

NAK (15H) 接收錯誤

 

[17:18:38.339]發→◇02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39 □

[17:18:38.370]收←◆06

[17:19:32.687]發→◇02 30 31 30 46 36 30 34 33 34 03 37 34 □

[17:19:32.725]收←◆02 33 34 31 32 43 44 41 42 03 44 37 此時讀取的數據即寫入的數據1234,ABCD

附表:

命令

命令碼

目標設備

讀出軟設備狀態值

0

X,Y,M,S,T,C,D

向PLC軟設備寫入值

1

X,Y,M,S,T,C,D

置位

7

X,Y,M,S,T,C

復位

8

X,Y,M,S,T,C

 

參考鏈接:https://blog.csdn.net/caodunchao/article/details/51564484?locationNum=12&fps=1

 

 

歐姆龍CP1E、CP1H系列PLC通訊測試

發送幀:

目的:讀取輸出端當前狀態

[16:13:37.509]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D □

起始

40

@

PLC地址(默認為00)

30 30

0 0

頭編碼

46 41

F A

等待時間

30

0*10ms

ICF

30 30

0 0

DA2

30 30

0 0

SA2

30 30

0 0

SID

30 30

0 0

命令碼

30 31 30 31

0 1 0 1(讀)

功能碼

42 30

B 0

存儲器編號

30 30 36 35

0 0 6 5

存儲器位

30 30

0 0

讀取長度

30 30 30 31

0 0 0 1

FCS校驗

30  37

0 7

結束

2A 0D

* CR

HostLink通訊協議的數據,由4部分組成。

1. 頭代碼

2. FINS命令

3. 異或校驗

4. 結束碼

以下的數據用於串口調試工具下發給PLC,所以以下由上述的1、2部分組成

頭代碼:紅色      FINS命令:藍色

@00FA0000000000101B00064000001

紅色部分數據分析:

@后的1-2位,為PLC地址,默認PLC地址為0,可設定0--31

@后的FA為頭編碼,可為”FA”  “RD”  “WR”

@后的第5位為等待時間,默認為0*10ms

后面的數據從右到左依次是:ICF\DA2\SA2\SID各占一個字節默認為00

讀取CIO100一個字

@00FA0000000000101B00064000001

FCS校驗計算方法:參與計算的數據(起始(含)-讀取長度(含))

示例:0101 EOR 0010 = 0111

高四位異或計算為0100 EOR 0011 EOR 0011…EOR 0011 EOR 0011 = 0000   30

低四位異或計算為0000 EOR 0000 EOR 0000…EOR 0000 EOR 0001 = 0111   37

讀取:0101    寫入:0102

功能碼B0:指定相應寄存器類型 (詳見附表1)

006400: 0064為存儲器的編號(16進制的0064為10進制的100)  

0064后的00為存儲器的位(HEX 00)

0001:讀取1個字

 

接收幀解析:

CIO101H 第7、4通1001 0000 讀出39 30

[16:13:37.566]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 39 30 34 41 2A 0D

起始

40

@

PLC地址(默認為00)

30 30

0 0

頭編碼

46 41

F A

 

30 30

0 0

ICF

34 30

4 0

DA2

30 30

0 0

SA2

30 30

0 0

SID

30 30

0 0

命令碼

30 31 30 31

0 1 0 1(讀)

FINS response code

30 30

0 0

 

30 30

0 0

 

30 30

0 0

Data

39 30

9 0

FCS校驗

34 41

4 A

結束

2A 0D

* CR

 附表:

存儲區名稱

數據類型

CP系列代碼(十六進制)

CIO

 

 

BIT

30

WR

31

HR

32

AR

33

CIO

 

WORD

B0

WR

B1

HR

B2

 

其他注解:

注:232端口接線問題:2、 3、 5(GND)、 6(5V)

讀CIO 101CH4位

發40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D

字符串格式:@00FA00000000000101B0006500000107*CR(歸位鍵)

36 35 (0x65=101)

 

CIO101H 第7、4通1001 0000 讀出39 30

[16:13:37.509]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 35 30 30 30 30 30 31 30 37 2A 0D □

[16:13:37.566]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 39 30 34 41 2A 0D

CIO100H 全斷0000 0000 讀出30 30

[16:12:10.591]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 34 30 30 30 30 30 31 30 36 2A 0D □

[16:12:10.636]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 30 30 34 33 2A 0D

CIO 103 第五位通0010 0000讀出32 30

[16:20:32.089]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 36 37 30 30 30 30 30 31 30 35 2A 0D □

[16:20:32.143]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 32 30 34 31 2A 0D

 

CIO 000 輸入1 、2、 7、 9 、10 讀出36 38 36

0110 1000 0110

[16:26:06.569]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 30 30 30 30 30 30 30 31 30 34 2A 0D □

[16:26:06.621]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 36 38 36 34 42 2A 0D

CIO 001 輸入3讀出 30 38

 0000 1000

[16:29:32.560]發→◇40 30 30 46 41 30 30 30 30 30 30 30 30 30 30 31 30 31 42 30 30 30 30 31 30 30 30 30 30 31 30 35 2A 0D □

[16:29:32.622]收←◆40 30 30 46 41 30 30 34 30 30 30 30 30 30 30 30 31 30 31 30 30 30 30 30 30 30 38 34 42 2A 0D

注:串口參數設置可能因用戶需求不同而不固定,參數需現場實際采集

 參考鏈接:https://blog.csdn.net/gongyejishuhulian/article/details/79718339

 

西門子S7通訊協議測試(基於tcp):

第一次握手報文:

03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A

第一次握手返回:

03 00 00 16 11 D0 00 01 00 05 00 C0 01 0A C1 02 10 00 C2 02 03 01

第二次握手報文:

03 00 00 19 02 F0 80 32 01 00 00 CC C1 00 08 00 00 F0 00 00 01 00 01 03 C0

第二次握手返回:

03 00 00 1B 02 F0 80 32 03 00 00 CC C1 00 08 00 00 00 00 F0 00 00 01 00 01 00 F0

讀取數據:

03 00 00 43 02 F0 80 32 01 00 00 00 05 00 32 00 00 04 04 12 0A 10 02 00 02 00 00 81 00 00 00 12 0A 10 02 00 01 00 00 82 00 00 00 12 0A 10 02 00 01 00 00 83 00 00 00 12 0A 10 02 00 08 00 01 84 00 00 00

 

03 00 00 43 02 F0 80 32 01 00 00 00 05 00 32 00 00 04 04   固定的

12 0A 10 02 固定長度,地址前綴

00 02 讀取數據byte個數:2(16位)

00 00 數據塊編號

81 獲取PLC輸入狀態標識符

00 00 00數據地址偏移量

 

12 0A 10 02 固定長度,地址前綴

00 01 讀取數據byte個數:1(8位)

00 00 數據塊編號

82 獲取PLC輸出狀態標識符

00 00 00數據地址偏移量

 

12 0A 10 02 00 01 00 00 83 00 00 00 12 0A 10 02 00 08 00 01 84 00 00 00

作用不詳,備用

 

收到數據格式(舉例說明):

03 00 00 33 02 F0 80 32 03 00 00 00 05 00 02 00 1E 00 00 04 04

FF 04 00 10 40 02 FF 04 00 08 00 00 FF 04 00 08 00 00 FF 04 00 40 00 00 00 00 00 00 00 00

 

03 00 00 33 02 F0 80 32 03 00 00 00 05 00 02 00 1E 00 00 04 04 固定的

FF 04 00 返回數據前綴

10 有效位數:16(bit)

40 04相當於二進制 0100 0000 0000 0010 意思是A的端口6和B的端口1位高電平,其余為低電平

FF 04 00 08 00 00

FF 04 00 返回數據前綴

08 有效位數:8(bit)(由於s7-200smart系列只有8個輸入口)

02 相當於二進制 0000 0010 即輸出口1為高電平其余為低電平

 

FF 04 00 08 00 00 FF 04 00 40 00 00 00 00 00 00 00 00

未知,備用

 

台達PLC通訊測試

端口設置9600 ,7 ,1 ,EVEN(232端口)

發送幀解析:

[15:51:58.175]發→◇3A 30 31 30 32 30 35 30 30 30 30 30 38 46 30 0D 0A □

起始碼

3A

通訊地址

30 31

0 1

命令碼

30 32

0 2

讀取數據起始地址

30 35 30 30

0 5 0 0

讀取數據長度

30 30 30 38

0 0 0 8

LRC校驗碼

46 30

F 0

結束碼

0D 0A

CR LF

LRC校驗碼計算:01+02+05+08=16 (0001 0000取反:1110 1111 再加1:1111 0000)

 

接收幀解析:輸出0 1 2 5 7 ,有效數據41,37實為A(1010)、7(0111)

[15:51:58.229]收←◆3A 30 31 30 32 30 31 41 37 35 35 0D 0A

起始碼

3A

通訊地址

30 31

0 1

命令碼

30 32

0 2

字節數

30 31

0 1

數據

41 37

A 7

LRC校驗碼

35 35

5 5

結束碼

0D 0A

CR LF

 

讀取輸出端狀態:(地址:0500)

讀取輸入端狀態:(地址:0400)

示例:

[08:41:56.922]發→◇3A 30 31 30 32 30 34 30 30 30 30 30 38 46 31 0D 0A □

[08:41:56.956]收←◆3A 30 31 30 32 30 31 31 32 45 41 0D 0A(1、 4輸入)

 

附表:

命令碼

功能

作用范圍

01

讀線圈狀態

S,Y,M,T,C

02

讀輸入狀態

S,X,Y,M,T,C

03

讀寄存器值

T,C,D

05

設定單一線圈

S,Y,M,T,C

06

預設單一寄存器

T,C,D

15

設定多個線圈

S,Y,M,T,C

16

預設多個寄存器

T,C,D

17

狀態、機種報告

None

 

台達PLC裝置地址

裝置

范圍

有效范圍

地址

S

000-255

 

 

000-127

0000-00FF

S

246-511

0100-01FF

S

512-767

0200-02FF

S

768-1023

0300-03FF

X

000-377(8進制)

000-177(8進制)

0400-04FF

Y

000-377(8進制)

000-177(8進制)

0500-05FF

T

000-255

000-127

0600-06FF

M

000-255

 

 

 

0000-1279

0800-08FF

M

256-511

0900-09FF

M

512-767

0A00-0AFF

M

768-1023

0B00-0BFF

M

1024-1279

0C00-0CFF

C

000-255

000-127

232-255

0E00-0EFF

D

000-255

 

 

000-599

 

100-1143

1000-10FF

D

256-511

1100-11FF

D

512-767

1200-12FF

D

768-1023

1300-13FF

D

1024-1279

1400-14FF

 參考鏈接:http://www.docin.com/p-687084617.html

原文地址:https://www.cnblogs.com/zsvc/p/9406592.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM