台达PLC通讯协议.docx
《台达PLC通讯协议.docx》由会员分享,可在线阅读,更多相关《台达PLC通讯协议.docx(15页珍藏版)》请在冰豆网上搜索。
台达PLC通讯协议
台达PLC通讯协议V1.12通讯接口RS-232CRS-485
2.通讯协议ASCII模式,9600(传输速率),偶同位,1个起始位,1个停止位
9600,7,e,1
3.通讯资料格式
STX起始字符‘:
’(3AH)
ADR1通讯地址:
ADR08-bit地址包含了2个ASCII码
CMD1命令码:
CMD08-bit命令包含了2个ASCII码
DATA(0)资料内容:
DATA
(1)n个8-bit资料包含了2n个ASCII码
……….n<=74个ASCII码
DATA(n-1)
LRCCHK1侦误值:
LRCCHK08-bit侦误值包含了2个ASCII码
END1结束字符:
END0END1=CR(0DH),END0=LF(0AH)
ADR(通讯地址)
PLC通讯地址出厂设定值为0x01,因此(ADR1,ADR0)=’0’,’1’’0’=30H,‘1’=31H
LRCCHK(侦误值)CMD(命令指令)及DATA(数据字符)
LRCCHK(侦误值)
侦错方式采用LRC(LongitudinalRedundancyCheck)侦误值。
LRC侦误值乃是将ADR1至最后
一个资料内容加总,将该值取2补码(2’sComplement)得到之结果即为LRC侦误值。
附录-3
例:
STX‘:
’
ADR1‘0’
ADR0‘1’
CMD1‘0’
CMD0‘3’
起始资料地址‘0’
‘4’
‘0’
‘1’
资料数‘0’
‘0’
‘0’
‘1’
LRCCHK1‘F’
LRCCHK0‘6’
END1CR
END0LF
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的响应:
附录-4
PLC收到完整的通讯命令时,会判断命令是否有效,造成无效的原因有:
原因EXCEPTIONCODE
LRCCHKERROR07
DEIVCEADDRESSINVALID02
要求的资料超过范围03
COMMANDCODEINVALID01
通讯命令格式INVALID07
例:
使用命令码01读取X000~X017的状态
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function01
StartingAddressHi04
StartingAddressLo00
NumberofPointsHi00
NumberofPointsLo10
ErrorCheck(LRC)EA
附录-5
PLC响应:
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function81
ExceptionCode02
ErrorCheck(LRC)7C
因为Address0400对Function01是不合法的,所以响应Exceptioncode=0x02,且Function01
被设为81(b7被设为1),亦即由响应的Functioncode的MSB被设为1表示PLC响应ERROR
MESSAGE,并且由Exceptioncode可得知是何种错误。
可用之命令码叙述如下:
(每个device的address,请参考最后一页)
CodeNameDescription
01ReadCoilStatusS,Y,M,T,C
02ReadInputStatusS,X,Y,M,T,C
03ReadHoldingRegistersT,C,D
05ForceSingleCoilS,Y,M,T,C
06PresetSingleRegisterT,C,D
15ForceMultipleCoilsS,Y,M,T,C
16PresetMultipleRegisterT,C,D
17ReportSlaveIDNone
附录-6
资料字符之格式依命令码而定,依可用之命令码的资料内容分别叙述如下:
FunctionCode:
01,ReadCoilStatus
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function01
StartingAddressHi06
StartingAddressLo14
NumberofPointsHi00
NumberofPointsLo25
ErrorCheck(LRC)BF
NumberofPoints(max)=255=0x00FF
例:
由从动装置(slavedevice)01读取线圈T20~T56
PC→PLC“:
010106140025BFCRLF”
PLC→PC“:
010105CD6BB20E1BD6CRLF”
FieldNameContents
SlaveAddress01
Function01
BytesCount05
Data(CoilsT27…T20)CD
Data(CoilsT35…T38)6B
Data(CoilsT43…T36)B2
Data(CoilsT51…T44)0E
Data(CoilsT56…T52)1B
ErrorCheck(LRC)E6
FunctionCode:
02,ReadInputStatus
附录-7
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function02
StartingAddressHi05
StartingAddressLo14
NumberofPointsHi00
NumberofPointsLo25
ErrorCheck(LRC)BF
例:
由从动装置01读取接点Y024~Y070
PC→PLC“:
010205140025BFCRLF”
PLC→PC“:
010105CD6BB20E1BE5CRLF”
FieldNameContents
SlaveAddress01
Function02
BytesCount05
Data(CoilsY033…Y024)CD
Data(CoilsY043…Y034)6B
Data(CoilsY053…Y044)B2
Data(CoilsY063…Y054)0E
Data(CoilsY070…Y064)1B
ErrorCheck(LRC)E5
附录-8
FunctionCode:
03,ReadHoldingRegister
HoldingRegister:
T,C,D
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function03
StartingAddressHi06
StartingAddressLo14
NumberofPointsHi00
NumberofPointsLo08
ErrorCheck(LRC)DA
NumberofPoints(max)
=18(for16bitregister)
=9(for32bitregister)
例:
由从动装置01读取线圈T20~T27
PC→PLC“:
010306140008DACRLF”
PLC→PC“:
01031000010002000300040005000600070008B8CRLF”
3A303130333130303030303030303030303030303030303030303030303030303030303030303045430D0A
3A30B13033B1303030303030303030303030303030303030303030303030303030303030303030C5C38D0A
3A8A30A6833082308230823082308230823082308230823082302AC363E1
FieldNameContents
SlaveAddress01
Function03
BytesCount10
DataHi(T20)00
DataLo(T20)01
DataHi(T21)00
DataLo(T21)02
DataHi(T22)00
附录-9
DataLo(T22)03
DataHi(T23)00
DataLo(T23)04
DataHi(T24)00
DataLo(T24)05
DataHi(T25)00
DataLo(T25)06
DataHi(T26)00
DataLo(T26)07
DataHi(T27)00
DataLo(T27)08
ErrorCheck(LRC)B8
FunctionCode:
05,ForceSingleCoil
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function05
CoilAddressHi05
CoilAddressLo00
ForceDataHiFF
ForceDataLo00
ErrorCheck(LRC)F6
MMNN=0xFF00….CoilON
MMNN=0x0000….CoilOFF
例:
强制设定线圈Y000ON
PC→PLC“:
01050500FF00F6CRLF”
PLC→PC“:
01050500FF00F6CRLF”
附录-10
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function05
CoilAddressHi05
CoilAddressLo00
ForceDataHiFF
ForceDataLo00
ErrorCheck(LRC)F6
FunctionCode:
06,PresetSingleRegister
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function06
RegisterAddressHi06
RegisterAddressLo00
PresetDataHi12
PresetDataLo34
ErrorCheck(LRC)AD
例:
设定缓存器T0to0003
PC→PLC“:
010606001234ADCRLF”
PLC→PC“:
010606001234ADCRLF”
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function06
附录-11
RegisterT0AddressHi06
RegisterT0AddressLo00
PresetDataHi12
PresetDataLo34
ErrorCheck(LRC)AD
Switch(c)
Case0:
T0
Q→:
010606001234ADCRLF
Case1:
C0
Q→:
01060E001234AFCRLF
Case2:
C232
Q→:
01060EE812345678EFCRLF
Case3:
D10
Q→:
0106100A123499CRLF
Case4:
D1000
Q→:
010613E81234BACRLF
附录-12
FunctionCode:
15,ForceMultipleCoils
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function0F
CoilAddressHi05
CoilAddressLo00
QuantityofCoilsHi00
QuantityofCoilsLo0A
ByteCount02
ForceDataHiCD
ForceDataLo01
ErrorCheck(LRC)11
QuantityofCoils(max)=255
例:
设定线圈Y007…Y000=11001101,Y011…Y010=01.
PC→PLC“:
010F0500000A02CD0111CRLF”
PLC→PC“:
010F0500000AE1CRLF”
附录-13
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function0F
RegisterT0AddressHi05
RegisterT0AddressLo00
PresetDataHi00
PresetDataLo0A
ErrorCheck(LRC)E1
FunctionCode:
16,PresetMultipleRegister
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function10
StartingAddressHi06
StartingAddressLo00
NumberofRegisterHi00
NumberofRegisterLo02
ByteCount04
DataHi00
DataLo0A
DataHi01
DataLo02
ErrorCheck(LRC)C6
附录-14
NumberofRegister(max)
=16(for16bitregister)
=8(for8bitregister)
例:
设定缓存器T0为000A,T1为0102.
PC→PLC“:
01100600020004000A0102D6CRLF”
PLC→PC“:
011006000002E7CRLF”
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function10
StartingAddressHi06
StartingAddressLo00
NumberofRegistersHi00
NumberofRegistersLo02
ErrorCheck(LRC)E7
FunctionCode:
17,ReportSlaveID
Returnsadescriptionofcontrollerpresentattheslaveaddress,thecurrentstatusoftheslaveRun
indicator,andotherinformationspecifictotheslavedevice.
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function11
ErrorCheck(LRC)EE
附录-15
FieldNameExample(Hex)
Heading3A
SlaveAddress01
Function11
ByteCount04
SlaveID01
RunIndicatorStatus
00=OFF
FF=ON
FF
Data0(D1001HI)40
Data1(D1001LOW)10
ErrorCheck(LRC)9A
附录-16
台达DVP系列PLC装置地址(DEVICEADDRESS)
DeviceRangeEffectiveRangeAddress
S000~255000~1270000~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~2550000~12790800~08FF
M256~5110900~09FF
M512~7670A00~0AFF
M768~10230B00~0BFF
M1024~12790C00~0CFF
C000~255000~127
232~255
0E00~0EFF
D000~255000~5991000~10FF
D256~5111000~11431100~11FF
D512~7671200~12FF
D768~10231300~13FF
D1024~12791400~14FF
高考是我们人生中重要的阶段,我们要学会给高三的自己加油打气