视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
台达PLC通讯协议
2025-10-02 04:45:56 责编:小OO
文档
台达PLC通讯协议原文

1、通讯协议ASCII模式,9600,7,e,1

2、通讯资料格式:

STX头码‘:’(3AH)

ADR1通讯地址:

8-bit位址包含了2个ASCII码

ADR0
CMD1命令码:

8-bit命令包含了2个ASCII码

CMD0
DATA(0)

资料内容:

n个8-bit资料包含了2n个ASCII码

n〈=74个ASCII码

DATA(1)

………
DATA(n-1)

LRC CHK1校验码:

8-bit校验码包含了2个ASCII码

LRC CHK0
END1尾码:

END1=CR(0DH),END0=LF(0AH)

END0
ADR(通讯地址):

PLC通讯地址出厂设定为0X01,因此(ADR1,ADR0)=‘0’,‘1’→=30H,31H

校验码:

校验码采用LRC方式,将ADR1至最后一个资料内容加总,将该值取2的补数,结果即为LRC校验码。

例:

STX‘:’
ADR1

ADR0

‘0’

‘1’

CMD1

CMD0

‘0’

‘3’

启始资料地址‘0’

‘4’

‘0’

‘1’

资料数‘0’

‘0’

‘0’

‘1’

LRC CHK1

LRC CHK0

‘F’

‘6’

END1

END0

CR

LF

01H+03H+04H+01H+00+01H=0AH    0AH的2的补数为F6H

注1:

2补数的求法:(1补数再加1)

0A(H)=00001010(B)先取1补数(将b0-b7反相)得11110101(B),再加1为11110110(B)=F6(H)即为0A(H)的2补数。

注2:

在收到一串完整的通讯命令,要检查这串通讯命令是否有误,只要将(ADR1,0)至(LRC1,0)加总等于0,则通讯无误,否则表示命令中资料有些是错误的。

通讯异常PLC的回应:

PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:

原             因

EXCEPTION CODE
LRC CHK ERROR07
DEIVCE ADDRESS INVALID02
要求的资料超过范围03
COMMAND CODE INVALID01
通讯命令格式INVALID

07
例:使用命令码01读取X000-X017的状态

Field NameExample (Hex)

Heading3A
Slave Address01
Function01
Starting Address Hi04
Starting Address Lo00
Number of  Points Hi00
Number of  Points Lo10
Error Check (LRC)EA
PLC回应:

Field NameExample (Hex)

Heading3A
Slave Address01
Function81
Exception Code02
Error Check (LRC)7C
因为Address 0400 对Function 01是不合法的,所以回应Exception Code=0X02,且Function 01被设为81(b7被设为1),亦即由回应的Function code的MSB被设为1表示PLC回应ERROR MESSAGE,并且由Function code可得知是何种错误。

可用的命令码叙述如下:(每个device的address,请参考最后一页)

CodeNameDescription
01Read Coil StatusS,Y,M,T,C
02Read Input StatusS,X,Y,M,T,C
03Read Holding RegistersT,C,D
05Force Single ColiS,Y,M,T,C
06Preset Single RegisterT,C,D
15Force Multiple ColiS,Y,M,T,C
16Preset Multiple RegisterT,C,D
17Report Slave IDNone
资料字元的格式依命令码而定,依可用的命令码的资料内容分别叙述如下:

Function Code :01,Read Coil Status

Field NameExample (Hex)

Heading3A
Slave Address01
Function01
Starting Address Hi06
Starting Address Lo14
Number of  Points Hi00
Number of  Points Lo25
Error Check (LRC)BF
Number of Points(max)= 255 = 0x00FF

例:从从动装置01读取线圈T20-T56

PC→PLC “:01 01 06 14 00 25 BF CR LF”

PLC→PC “:01 01 05 CD 6B B2 0E 1B E6 CR LF”

Field NameContents
Slave Address01
Function01
Bytes Count05
Data (Coils T27…T20)

CD
Data (Coils T35…T38)

6B
Data (Coils T43…T36)

B2
Data (Coils T51…T44)

0E
Data (Coils T56…T52)

1B
Error Check (LRC)E6
Function Code :02,Read Input Status

Field NameExample (Hex)

Heading3A
Slave Address01
Function02
Starting Address Hi05
Starting Address Lo14
Number of  Points Hi00
Number of  Points Lo25
Error Check (LRC)BF
例:从从动装置01读取接点Y024-Y070

PC→PLC “:01 02 05 14 00 25 BF CR LF”

PLC→PC “:01 02 05 CD 6B B2 0E 1B E5 CR LF”

Field NameContents
Slave Address01
Function02
Bytes Count05
Data (Coils Y033…Y024)

CD
Data (Coils Y043…Y034)

6B
Data (Coils Y053…Y044)

B2
Data (Coils Y063…Y054)

0E
Data (Coils Y070…Y0)

1B
Error Check (LRC)E5
Function Code :03,Read Holding Registet

Field NameExample (Hex)

Heading3A
Slave Address01
Function03
Starting Address Hi06
Starting Address Lo14
Number of  Points Hi00
Number of  Points Lo08
Error Check (LRC)DA
Number of Points(max)= 18(for 16 bit register)= 9(for 32 bit register)

例:从从动装置01读取线圈T20-T27

PC→PLC “:01 03 06 14 00 08 DA CR LF”

PLC→PC “:01 03 10 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 B8 CR LF”

Field NameContents
Slave Address01
Function03
Bytes Count10
Data Hi(T20)

00
Data Lo(T20)

01
Data Hi(T21)

00
Data Lo(T21)

02
Data Hi(T22)

00
Data Lo(T22)

03
Data Hi(T23)

00
Data Lo(T23)

04
Data Hi(T24)

00
Data Lo(T24)

05
Data Hi(T25)

00
Data Lo(T25)

06
Data Hi(T26)

00
Data Lo(T26)

07
Data Hi(T27)

00
Data Lo(T27)

08
Error Check (LRC)B8
Function Code :05,Force Single Coil

Field NameExample (Hex)

Heading3A
Slave Address01
Function05
Coil Address Hi05
Coil Address Lo00
Force Data HiFF
Force Data Lo00
Error Check (LRC)F6
NMNN = 0xFF00…Coil ON

NMNN = 0x0000…Coil OFF

例:强制设定线圈 Y000 ON

PC→PLC “:01 05 05 00 FF 00 F6 CR LF”

PLC→PC “:01 05 05 00 FF 00 F6 CR LF”

Field NameExample (Hex)

Heading3A
Slave Address01
Function05
Coil Address Hi05
Coil Address Lo00
Force Data HiFF
Force Data Lo00
Error Check (LRC)F6
Function Code :06,Preset Single Register

Field NameExample (Hex)

Heading3A
Slave Address01
Function06
Register Address Hi06
Register Address Lo00
Preset Data Hi12
Preset Data Lo34
Error Check (LRC)AD
例:设定暂存器 T0 to 00 03 

PC→PLC “:01 06 06 00 12 34 AD CR LF”

PLC→PC “:01 06 06 00 12 34 AD CR LF”

Field NameExample (Hex)

Heading3A
Slave Address01
Function06
Register Address Hi06
Register Address Lo00
Preset Data Hi12
Preset Data Lo34
Error Check (LRC)AD
Switch(c)

   Case 0 :T0

Q→ :01 06 06 00 12 34 AD CR LF

   Case 1 :C0

Q→ :01 06 0E 00 12 34 AF CR LF

   Case 2 :C232

Q→ :01 06 0E E8 12 34 56 78 EF CR LF

   Case 3 :D10

Q→ :01 06 10 0A 12 34 99 CR LF

   Case 4 :D1000

Q→ :01 06 13 E8 12 34 BA CR LF

Function Code :15,Force Multiple Coils

Field NameExample (Hex)

Heading3A
Slave Address01
Function0F
Coil Address Hi05
Coil Address Lo00
Quantity of Coils Hi00
Quantity of Coils Lo0A
Byte Count02
Force Data HiCD
Force Data Lo01
Error Check (LRC)11
Quantity of Coils(max)= 255 

例:设定线圈 Y007…Y000 = 1100 1101,Y011…Y010 = 01。

PC→PLC “:01 0F 05 00 00 0A 02 CD 01 11 CR LF”

PLC→PC “:01 0F 05 00 00 0A E1 CR LF”

Field NameExample (Hex)

Heading3A
Slave Address01
Function0F
Register To Address Hi05
Register To Address Lo00
Preset Data Hi00
Preset Data Lo0A
Error Check (LRC)E1
Function Code :16,Preset Multiple Register

Field NameExample (Hex)

Heading3A
Slave Address01
Function10
Starting Address Hi06
Starting Address Lo00
Number of Register Hi00
Number of Register Lo02
Byte Count04
Data Hi00
Data Lo0A
Data Hi01
Data Lo02
Error Check (LRC)C6
Number of Register(max)= 16(for 16 bit register)= 8(for 32 bit register)

例:设定暂存器 T0 为 00 0A, T1 为 01 02。

PC→PLC “:01 10 06 00 02 00 04 00 0A 01 02 D6 CR LF”

PLC→PC “:01 10 06 00 00 02 E7 CR LF”

Field NameExample (Hex)

Heading3A
Slave Address01
Function10
Starting Address Hi06
Starting Address Lo00
Number of Register Hi00
Number of Register Lo02
Error Check (LRC)E7
Function Code :17,Report Slave ID

Returns a description of controller present at the slave address, the current status of the slave Run indicator, and other information specific to the slave device.

Field NameExample (Hex)

Heading3A
Slave Address01
Function11
Error Check (LRC)EE
Field NameExample (Hex)

Heading3A
Slave Address01
Function11
Byte Count04
Slave ID01
Run indicator Status

00 = OFF

FF = ON

FF
Data 0 (D1001 HI)40
Data 1 (D1001 LOW)10
Error Check (LRC)9A
台达PLC装置地址(device address)

DeviceRangeEffective Range

Address
S000-255"

000-127

0000-00FF
S246-5110100-01FF
S512-7670200-02FF
S768-10230300-03FF
X000-377(8进制)

000-177(8进制)

0400-04FF
Y000-377(8进制)

000-177(8进制)

0500-05FF
T000-255000-1270600-06FF
M000-255"

0000-1279

0800-08FF
M256-5110900-09FF
M512-7670A00-OAFF
M768-10230B00-0BFF
M1024-12790C00-0CFF
C000-255000-127

232-255

0E00-0EFF
D000-255"

000-599

1000-1143

1000-10FF
D256-5111100-11FF
D512-7671200-12FF
D768-10231300-13FF
D1024-12791400-14FF
台达PLC通讯协议修正译文

1、通讯协议ASCII模式,9600,7,e,1

2、通讯资料格式:

STX头码‘:’(3AH)

ADR1通讯地址:

8-bit位址包含了2个ASCII码

ADR0
CMD1命令码:

8-bit命令包含了2个ASCII码

CMD0
DATA(0)

资料内容:

n个8-bit资料包含了2n个ASCII码

n〈=74个ASCII码

DATA(1)

………
DATA(n-1)

LRC CHK1校验码:

8-bit校验码包含了2个ASCII码

LRC CHK0
END1尾码:

END1=CR(0DH),END0=LF(0AH)

END0
ADR(通讯地址):

PLC通讯地址出厂设定为0X01,因此(ADR1,ADR0)=‘0’,‘1’→=30H,31H

校验码:

校验码采用LRC方式,将ADR1至最后一个资料内容加总,将该值取2的补数,结果即为LRC校验码。

例:

STX‘:’
ADR1

ADR0

‘0’

‘1’

CMD1

CMD0

‘0’

‘3’

启始资料地址‘0’

‘4’

‘0’

‘1’

资料数‘0’

‘0’

‘0’

‘1’

LRC CHK1

LRC CHK0

‘F’

‘6’

END1

END0

CR

LF

01H+03H+04H+01H+00+01H=0AH    0AH的2的补数为F6H

注1:

2补数的求法:(1补数再加1)

0A(H)=00001010(B)先取1补数(将b0-b7反相)得11110101(B),再加1为11110110(B)=F6(H)即为0A(H)的2补数。

注2:

在收到一串完整的通讯命令,要检查这串通讯命令是否有误,只要将(ADR1,0)至(LRC1,0)加总等于0,则通讯无误,否则表示命令中资料有些是错误的。

通讯异常PLC的回应:

PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:

原             因

例外码
校验码错误07
错误的装置地址02
要求的资料超过范围03
命令码错误01
通讯格式错误07
例:使用命令码01读取X000-X017的状态

名称例码 (Hex)

头码3A
从站地址01
命令码01
启始地址高位04
启始地址低位00
资料高位00
资料低位10
校验码(LRC)

EA
PLC回应:

名称例码 (Hex)

头码3A
从站地址01
命令码81
例外码02
校验码(LRC)

7C
因为地址 0400 对命令 01是不合法的,所以回应例外码 = 0X02,且命令 01被设为81(b7被设为1),亦即由回应的命令码的MSB被设为1表示PLC回应错误讯息,并且由命令码可得知是何种错误。

可用的命令码叙述如下:(每个装置的地址,请参考最后一页)

命令码功能作用范围
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
资料字元的格式依命令码而定,依可用的命令码的资料内容分别叙述如下:

命令码 :01,读取线圈状态

名称例码 (Hex)

头码3A
从站地址01
命令01
启始地址高位06
启始地址低位14
资料高位00
资料低位25
校验(LRC)

BF
资料位(max)= 255 = 0x00FF

例:从从动装置01读取线圈T20-T56

PC→PLC “:01 01 06 14 00 25 BF CR LF”

PLC→PC “:01 01 05 CD 6B B2 0E 1B E6 CR LF”

名称内容
从站地址01
命令01
字节数05
数据(线圈 T27…T20)

CD
数据(线圈T35…T38)

6B
数据(线圈T43…T36)

B2
数据(线圈T51…T44)

0E
数据(线圈T56…T52)

1B
校验码E6
命令码 :02,读取输入状态

名称例码 (Hex)

头码3A
从站地址01
命令02
启始地址高位05
启始地址低位14
资料高位00
资料低位25
校验(LRC)

BF
例:从从动装置01读取接点Y024-Y070

PC→PLC “:01 02 05 14 00 25 BF CR LF”

PLC→PC “:01 02 05 CD 6B B2 0E 1B E5 CR LF”

名称内容
从站地址01
命令02
字节数05
数据(线圈Y033…Y024)

CD
数据(线圈Y043…Y034)

6B
数据(线圈Y053…Y044)

B2
数据(线圈Y063…Y054)

0E
数据(线圈Y070…Y0)

1B
校验(LRC)

E5
命令码:03,读取寄存器值

名称例码 (Hex)

头码3A
从站地址01
命令03
启始地址高位06
启始地址低位14
读取长度高位00
读取长度低位08
校验(LRC)

DA
读取长度(max)= 18(16位寄存器)= 9(32 位寄存器)

例:从从动装置01读取线圈T20-T27

PC→PLC “:01 03 06 14 00 08 DA CR LF”

PLC→PC “:01 03 10 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 B8 CR LF”

名称内容
从站地址01
命令03
字节数10
数据高位(T20)

00
数据低位(T20)

01
数据高位(T21)

00
数据低位(T21)

02
数据高位(T22)

00
数据低位(T22)

03
数据高位(T23)

00
数据低位(T23)

04
数据高位(T24)

00
数据低位(T24)

05
数据高位(T25)

00
数据低位(T25)

06
数据高位(T26)

00
数据低位(T26)

07
数据高位(T27)

00
数据低位(T27)

08
校验(LRC)

B8
命令码:05,设定单一线圈

名称例码 (Hex)

头码3A
从站地址01
命令05
线圈地址高位05
线圈地址低位00
设定数据高位FF
设定数据低位00
校验(LRC)

F6
NMNN = 0xFF00…线圈 ON

NMNN = 0x0000…线圈 OFF

例:强制设定线圈 Y000 ON

PC→PLC “:01 05 05 00 FF 00 F6 CR LF”

PLC→PC “:01 05 05 00 FF 00 F6 CR LF”

名称例码 (Hex)

头码3A
从站地址01
命令05
线圈地址高位05
线圈地址低位00
设定数据高位FF
设定数据低位00
校验(LRC)

F6
命令码:06,预设单一寄存器

名称例码 (Hex)

头码3A
从站地址01
命令06
预设地址高位06
预设地址低位00
预设数据高位12
预设数据低位34
校验(LRC)

AD
例:设定暂存器 T0 to 00 03 

PC→PLC “:01 06 06 00 12 34 AD CR LF”

PLC→PC “:01 06 06 00 12 34 AD CR LF”

名称例码 (Hex)

头码3A
从站地址01
命令06
预设地址高位06
预设地址低位00
预设数据高位12
预设数据低位34
校验(LRC)

AD
Switch(c)

   Case 0 :T0

Q→ :01 06 06 00 12 34 AD CR LF

   Case 1 :C0

Q→ :01 06 0E 00 12 34 AF CR LF

   Case 2 :C232

Q→ :01 06 0E E8 12 34 56 78 EF CR LF

   Case 3 :D10

Q→ :01 06 10 0A 12 34 99 CR LF

   Case 4 :D1000

Q→ :01 06 13 E8 12 34 BA CR LF

命令码:15,设定多个线圈

名称例码 (Hex)

头码3A
从站地址01
命令0F
线圈地址高位05
线圈地址低位00
线圈数量高位00
线圈数量低位0A
位元数02
设定数据高位CD
设定数据低位01
校验(LRC)

11
线圈数量(max)= 255 

例:设定线圈 Y007…Y000 = 1100 1101,Y011…Y010 = 01。

PC→PLC “:01 0F 05 00 00 0A 02 CD 01 11 CR LF”

PLC→PC “:01 0F 05 00 00 0A E1 CR LF”

名称例码 (Hex)

头码3A
从站地址01
命令0F
寄存器地址高位05
寄存器地址低位00
预设数据高位00
预设数据低位0A
校验(LRC)

E1
命令码:16,预设多个寄存器

名称例码 (Hex)

头码3A
从站地址01
命令10
启始地址高位06
启始地址低位00
资料高位寄存器数目00
资料低位02
字节数04
数据高位00
数据低位0A
数据高位01
数据低位02
校验(LRC)

C6
字节数(max)= 16(16位寄存器)= 8(32位寄存器)

例:设定暂存器 T0 为 00 0A, T1 为 01 02。

PC→PLC “:01 10 06 00 00 02 04 00 0A 01 02 D6 CR LF”

PLC→PC “:01 10 06 00 00 02 E7 CR LF”

名称例码 (Hex)

头码3A
从站地址01
命令10
启始地址高位06
启始地址低位00
资料高位00
资料低位02
校验(LRC)

E7
命令码:17,读取从站 ID

名称例码 (Hex)

头码3A
从站地址01
命令17
校验(LRC)

EE
名称例码 (Hex)

头码3A
从站地址01
命令11
位元数04
从站 ID

01
运行状态指示

00 = OFF        FF = ON

FF
数据 0 (D1001 高)

40
数据 1 (D1001 低)

10
校验 (LRC)

9A
台达PLC装置地址

装置范围有效范围地址
S000-255"

000-127

0000-00FF
S246-5110100-01FF
S512-7670200-02FF
S768-10230300-03FF
X000-377(8进制)

000-177(8进制)

0400-04FF
Y000-377(8进制)

000-177(8进制)

0500-05FF
T000-255000-1270600-06FF
M000-255"

0000-1279

0800-08FF
M256-5110900-09FF
M512-7670A00-OAFF
M768-10230B00-0BFF
M1024-12790C00-0CFF
C000-255000-127

232-255

0E00-0EFF
D000-255"

000-599

1000-1143

1000-10FF
D256-5111100-11FF
D512-7671200-12FF
D768-10231300-13FF
D1024-12791400-14FF

下载本文
显示全文
专题