FP93通讯协议.docx
《FP93通讯协议.docx》由会员分享,可在线阅读,更多相关《FP93通讯协议.docx(51页珍藏版)》请在冰豆网上搜索。
![FP93通讯协议.docx](https://file1.bdocx.com/fileroot1/2023-1/9/ad7e50b5-5702-431f-a118-197ddfe6918e/ad7e50b5-5702-431f-a118-197ddfe6918e1.gif)
FP93通讯协议
FP93调节器通讯指南2002.10
特别指出:
未搞清本文内容前,请不要上电操作。
────目录────
1.软件清单
2.FP93通讯协议及基础知识
3.通讯协议以及BASIC程序方法
4.BASICA的程序通讯软件说明:
5.附录:
A.通讯串口接线方法
B.有关RS422/485通讯口的技术数据
1.软件清单
在软盘内,提供了下述的软件和资料
FP93通讯协议.DOC
BASICA.EXE-BASIC语言(DOS环境下)
MR13.BAS-BASIC程序的PC机232口422口测试软件
2.FP93通讯协议
1)串口接线
①计算机与带RS-232C通讯口的连线
②计算机与希曼顿RS-232C/RS-485A通讯变换器连线
③RS-232C/RS-485通讯变换器与仪表RS-485通讯口的连线
④D型25针、九针串口接线对照表
2)通讯协议
3)参数设置
设置调节器通讯地址和使用的PC机串口,及通讯参数设置。
3.进入通讯命令学习前的准备工作
3-1.初次连接系统的准备工作(仪表未连接)
1.)参照串口接线窗口和附录A.通讯串口接线方法,对系统进行正确的接线。
2.)PC机RS232通讯口正常(包括地线、握手信号),将SD,RD端短接。
3.)RS232接口至RS232/RS485转换器连线是否正确。
注意:
9针与25针串口的定义区别。
4.)参见希曼顿232C/RS422或232/RS485转换器C28A的自检方法,检查通讯转换器。
5.)RS232/RS485或RS232/RS422转换器到仪表通讯口的连线正确。
如果远距离通讯(1200米),利用示波测量发送波形的前沿,确定通讯线路的传输品质,选择合适的通讯波特率。
注:
如采用PC机内式转换卡,可省去前两步骤。
其它的操作:
连接仪表且上电,确信仪表已进行了有关的通讯参数(地址、波特率)设定。
在学习软件中相应的画面应设置与仪表相一致的PC机通讯地址和字符参数,否则将不能正常通讯。
注:
仪表的有关设定请参阅FP93操作流程图
4.通讯协议以及BASIC程序方法
4-1.通讯的含意
RS232接口,只能单台点对点的通迅,不能进行总线的并联,但通讯软件和485方式相同
┌─────────────────────────────┐
│┌───────┐│
││上位机的 │ 485通讯示意图│
││485││
││通讯接口 ││
│└──┬─┬──┘│
│││发送/接收双向数据总线│
││├─────────┬─────────┐│
││││││
│├─┼───────┬─┼───────┐││
│┌─┴─┴─┐┌─┴─┴─┐┌─┴─┴─┐│
││FP93-
(1)││FP93-
(2)│..│FP93(99)││
│└─────┘└─────┘└─────┘│
└─────────────────────────────┘
RS485通讯采用差动的两线发送,两线接收的双向数据总线两线制方式。
上位机和下位调节器的内部接收器的接收高(RD+)和低(RS-)线以及内部发送器的发送高(SD+)和低(SD-)线都挂在数据总线上,平时内部发送器的发送线处于高阻关闭态。
如下图通讯过程示意图所示,通常上位机是讲者,下位调节器是听者,并按主、从方式进行通讯,多台仪表的通讯靠地址(设备号)的不同来区分。
通讯中,发送方需将发送线置于低阻态。
发送完成后,发送线需重新恢复到高阻关闭态。
接收方在接收数据完成后,又成为发送方。
因此,RS485接口存在着双向数据总线转换冲突问题。
在上位机可由软件调整,下位可由仪表的RS485延时时间窗口调整。
注意:
通讯时,上位机必须根据调节器设定的地址,共同约定的数据格式,波特率等通讯规约,发送通讯文件,下位调节器在接收地址符合,接收字符格式和校验正确后才能进行正常的通讯。
4-2.通讯协议说明:
通讯协议的通讯过程示意图
上位机调节器
┏━━━━━┓发送
┃发送全文件┃ ───────────>(接收)
┗━━━━━┛ ↓
返回┏━━━━━┓
(接收) <───────────┃返回全文件┃
┗━━━━━┛
4-3.发送全文件和返回全文件的组成
4.3.1通讯控制符的三种格式:
1.STX_ETX_CR2.STX_ETX_CRLF3.@_:
_CR
4.3.2通讯发送格式
a
⑴
STX
STX
b
c
⑷
1
1
d
⑸
R
W
e
f
⑽
0
0
g
⑾
----
****
h
⑿
ETX
ETX
i
j
⑵
0
0
⑶
1
1
⑹
0
0
⑺
1
1
⑻
0
8
⑼
0
c
⒀
D
7
⒁
A
8
⒂
CR
CR
1.通讯发送格式的解释
a通讯的起始符,[⑴一位,STX:
(02H)或”@”(40H)]
b通讯下位机地址[⑵、⑶两位],由8位二进制组成。
地址范围1~99(1:
00000001~01100110),这8位二进制码被分成高4位和低4位,其中高4位被送入⑵中,低4位被送入⑶,并转换成ASCII码。
c通讯下位机地址的子地址[⑷一位],这位被固定为1(31H)。
d通讯命令类型[⑸一位]。
”R”(52H),表明在上位机发送或仪表应答中的读命令。
”W”(57H),,表明在上位机发送或仪表应答中的写命令。
”B”表明在上位机以广播方式发送命令,但FP93不支持广播方式,”B”
只作为预留命令。
e通讯命令代码[⑹、⑺、⑻、⑼四位]。
是16位二进制代码(0~65535),这16位被分成四组,并转换成相应的ASCII码。
命令代码详见命令代码表。
f通讯命令连续读代码[⑽一位]。
表明上位机要连续读取多少个参数。
这位取值范围”0”(30H)~”9”(39H),十个数。
实际的连续读参数的个数=该位数值+1,写命令时,这一位被固定为”0”(30H)(一个)。
g数据项[⑾这位的数据长度决定于这位的数据量,既这位的数据长度不定]。
此项一般用于应答中。
数据总是以”,”(2CH)为数据项的句首。
数据项与数据项之间不需要任何分割符。
数据长度主要取决于第⑽的方式。
每一个数据项由16位二进制代码组成(1个字),每4位被分成一个数据单元,同时每个数据单元又被转换成ASCII数据。
当⑸位为”R”读命令时,此位不用。
”,”
2CH
第一数据项
第二数据项
…………………
…………………
…………………
…………………
第N数据项
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
h数据发送结束符[⑿一位,ETX(03H)或”:
”(3AH)]。
所有的数据和命令再此位之前都以发送完成,遇到此字符表明结束。
iBCC块校验[⒀、⒁两位]三种BCC块校验和无校验。
上位机的BCC校验应通过软件处理。
仪表的BCC校验可在[1-34]窗口设置。
当BCC校验结果有错误时,将没有应答。
BCC校验数据被分成高4位和低4位,并被转换成ASCII码,
⒀:
高4位的ASCII码。
⒁:
低4位的ASCII码。
1).ADD块校验(加校验)
例:
STX011R01000EXTDACR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=1DAH
BCC校验结果⒀:
"D"=44H⒁:
"A"=41H
2).ADD_TWO’SCMP块校验(求补校验)
例:
STX011R01000EXTDACR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=26H
BCC校验结果⒀:
"2"=32H⒁:
"6"=36H
3).XOR块校验(异或校验)
例:
STX011R01000EXT50CR
(02H)(30H)(31H)(31H)(52H)(30H)(31H)(30H)(30H)(39H)(03H)=50H
BCC校验结果⒀:
"5"=35H⒁:
"0"=30H
j回车符[⒂一位CR(0DH)]全文结束符既回车符。
4).None无校验
4.3.3通讯应答格式
a
⑴
STX
STX
b
c
⑷
1
1
d
⑸
R
W
e
g
⑾
****
----
h
⑿
ETX
ETX
i
j
⑵
0
0
⑶
1
1
⑹
0
0
⑺
1
1
⒀
3
4
⒁
C
E
⒂
CR
CR
1.通讯应答格式的解释
a通讯的起始符,[⑴一位,STX:
(02H)或”@”(40H)]
b通讯下位机地址[⑵、⑶两位],由8位二进制组成。
地址范围1~99(1:
00000001~01100110),这8位二进制码被分成高4位和低4位,其中高4位被送入⑵中,低4位被送入⑶,并转换成ASCII码。
c通讯下位机地址的子地址[⑷一位],这位被固定为1。
d通讯命令类型[⑸一位]。
”R”(52H),表明在上位机发送或仪表应答中的读命令。
”W”(57H),,表明在上位机发送或仪表应答中的写命令。
”B”(42H)表明在上位机以广播方式发送命令,但FP93不支持广播方式,”B”只作为预留命令。
e应答代码[⑹、⑺两位]。
是8位二进制代码(0~255),这8位被分成高4位和低4位,并转换成相应的ASCII码。
应答代码详见应答代码表。
⑹:
高4位的ASCII码。
⑺:
低4位的ASCII码。
g通讯数据[⑾这位的数据量决定于这位的数据,既这位的数据长度不定]。
数据总是以”,”(2CH)开头,数据项与数据项之间不需要任何分割符。
数据的长度主要取决于第⑽的方式。
每一个数据项由16位二进制代码组成(1个字),每4位被分成一个数据单元,同时每个数据单元又被转换成ASCII数据。
当⑸位为”W”写命令时,此位不用。
”,”
2CH
第一数据项
第二数据项
…………………
…………………
…………………
…………………
第N数据项
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
高位
第一
单元
第二
单元
第三
单元
低位
第四
单元
h数据发送结束符[⑿一位,ETX(03H)或”:
”(3AH)]。
所有的数据和命令再此位之前都以发送完成,遇到此字符表明结束。
iBCC块校验[⒀、⒁两位]三种BCC块校验和无校验。
上位机的BCC校验应通过软件处理。
仪表的BCC校验可在[1-34]窗口设置。
当BCC校验结果有错误时,将没有应答。
BCC校验数据被分成高4位和低4位,并被转换成ASCII码,
⒀:
高4位的ASCII码。
⒁:
低4位的ASCII码。
1).ADD块校验(加校验)
例:
STX011R01000EXTDACR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=1DAH
BCC校验结果⒀:
"D"=45H⒁:
"A"=41H
2).ADD_TWO’SCMP块校验(求补校验)
例:
STX011R01000EXT26CR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=26H
BCC校验结果⒀:
"2"=32H⒁:
"6"=36H
3).XOR块校验(异或校验)
例:
STX011R01000EXT50CR
(02H)(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=50H
BCC校验结果⒀:
"5"=35H⒁:
"0"=30H
j回车符[⒂一位CR(0DH)]全文结束符既回车符。
4).None无校验
4.3.4读命令、写命令及应答举例
1.读命令
d
⑸
R
52H
e
f
⑽
4
34H
⑹
0
30H
⑺
4
34H
⑻
0
30H
⑼
0
30H
d:
这位表明这是一个读命令。
e:
这位表明这个读命令是读控制输出的比例带1的值。
f:
这位表明这读命令要从这个命令后连续读多少个参数。
具体含义如下:
这位表明这个读命令是读的控制输出的比例带1=0400H(十六进制)
=0000010000000000(二进制)
这位表明这读命令要读多少个参数。
=4H
=)0100(二进制)
=4(十进制)
(实际读取参数的个数)=5(4+1)
2.正确的应答
D
⑸
R
52H
e
g
第五数据项
⑹
0
30H
⑺
0
30H
第一数据项⑾第二数据项
2CH
0
30H
0
30H
1
31H
E
45H
0
30H
0
30H
7
37H
8
38H
………………
…………………
…………………
0
30H
0
30H
0
30H
3
33H
d:
这位表明应答的是一个读命令。
e:
这位表明这是一个应答代码<0(30H)0(30H)正确的应答>。
(详见应答代码表)
g:
这位表明这应答的读命令返回的数据项。
3.不正确的读命令应答
D
⑸
R
52H
e
⑹
0
30H
⑺
7
37H
d:
这位表明应答的是一个读命令。
e:
表明这是一个应答代码<0(30H)7(30H)是数据格式错误的应答>。
(详见应答代码表)
4.写命令
注:
写命令时,应先将COM模式至成COM状态。
由LOC状态转换成COM状态不能由仪表窗口完成,只能由上位机完成。
由COM状态转换成LOC状态上位机、仪表窗口均可完成。
d
⑸
W
57H
e
f
⑽
0
30H
g
⑾
⑹
0
30H
⑺
4
34H
⑻
0
30H
⑼
0
30H
2CH
0
30H
0
30H
2
32H
8
38H
d:
这位表明应答的是一个写命令。
e:
这位表明这个命令是写的控制输出比例带1的值。
f:
这位表明这个命令要写1个参数。
(写命令时这位固定为0)
g通讯数据[⑾这位的数据量决定于这位的数据,既这位的数据长度不定]。
数据总是以”,”(2CH),数据项与数据项之间不需要任何分割符。
数据的长度主要取决于第⑽的方式。
每一个数据项由16位二进制代码组成(1个字),每4位被分成一个数据单元,同时每个数据单元又被转换成ASCII数据。
具体含义如下:
这位表明这个写命令是写的控制输出1的比例带参数=0400H(十六进制)
=0000010000000000(二进制)
这位表明这读命令要写多少个参数。
=0H
=0000(二进制)
=0(十进制)
(实际写参数的个数)=1(0+1)
被写入的具体数据=0028H(十六进制)
=0000000000101000(二进制)
=40(十进制)
5.正确的写命令应答
d
⑸
W
57H
e
⑹
0
30H
⑺
0
30H
d:
这位表明这是一个写应答的命令。
e:
表明这是一个应答代码<0(30H)0(30H)是一个写命令的正确应答>。
(详见4-4应答代码表)
6.不正确的写命令应答举例
d
⑸
W
57H
e
⑹
0
30H
⑺
9
30H
d:
这位表明这是一个写应答的命令。
e:
表明这是一个应答代码<0(30H)9(39H)是一个不正确写命令的应答>。
(详见应答代码表)
4-4应答代码表
应答代码
代码类型
代码类型的详细说明
二进制码
ASCII
00000000
“0”,”0”:
30H,30H
正确的应答
读、写命令的正确应答
00000001
“0”,”1”:
30H,31H
硬件错误
当发生硬件错误例如帧溢出或奇偶校验错误被检测到时。
00000111
“0”,”7”:
30H,37H
格式错误
格式上和设计的固定格式不符。
00001000
“0”,”8”:
30H,38H
命令或数据的数量错误
命令代码或数据的数量和设计的要求不同。
00001001
“0”,”9”:
30H,39H
数据错误
被写入的数据不是有效的可被设定的范围
00001010
“0”,”A”:
30H,41H
执行命令错误
执行命令的接收是在一定条件下的(例如AT),否则将不被执行
00001011
“0”,”B”:
30H,42H
写模式错误
一些类型的数据在某一时刻将不能及时
被写入。
这种数据写入应在这种数据允许写入的时刻写入。
00001100
“0”,”C”:
30H,43H
其他或操作错误
写命令中的特殊数据或操作,不能被加入或接收。
小数点的表示方法:
将小数点去掉后,直接连同小数点后的数转换成十六进制数。
小数点的位置与使用的量程有关。
这四位十六进制代码(16位二进制码)的使用范围(-32768~32767)。
例:
十进制十六进制
20.0%→200→008C
99.99→9999→270F
-40.00℃→-4000→F060
4-5通讯命令表
命令代码
(十六进制)
参数
参数的详细说明
读/写
0040
序列代码1
这4个序列代码不能同时被读取。
读
0041
序列代码2
读
0042
序列代码3
读
0043
序列代码4
读
这些命令由16位二进制组成,被分成高8位和低8位两个单元。
不用的地址用”0”填充。
例:
SR91命令高4位低4位高4位低4位
0040“F”“P”46H50H
0041“9”“3”39H33H
004200H00H
004300H00H
命令代码
(十六进制)
参数
参数的详细说明
读/写
0100
PV_W
测量值
读
0101
SV_W
当前执行的设定值
读
0102
OUT1_W
控制输出的值
读
0103
保留
值被固定为0000H
读
0104
EXE_FLG
执行标志(不执行时=0)
读
0105
EV_FLG
事件输出标志(无事件输出时=0000)
读
0106
保留
值被固定为0000H
读
0107
EXE_PID
当前执行的PID号
读
EXE_FLG和EV_FLG的详细说明如下:
D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
EXE_FLG0000000COM000000MANAT
EV_FLG00000000000000EV2EV1
.上限超量程时,EV_FLG的将被赋值为7FFFH。
.下限超量程时,EV_FLG的将被赋值为7FFFH。
010B
DI_FLG
DI开关状态标志位
读
DI_FLG的详细说明如下:
D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
DI_FLG0000000COM0000DI4DI3DI2DI1
0110
UNIT
单位0=℃1=℉
读
0111
RANGE
测量范围(见测量范围代码表)
读
0112
保留
保留
0113
DP
小数点位置0=无1=0.12=0.013=0.001
读
0114
SC_L
测量范围下限值-1999~9989
读
0115
SC_H
测量范围上限值-1989~9999
读
0120
E_PRG
程序执行标志
读
0121
E_PTN
当前执行的曲线号
读
0122
保留
保留
读
0123
E_RPT
曲线重复次数
读
0124
E_STP
当前执行曲线的步
读
0125
E_TIM
当前执行步的剩余时间
读
0126
E_PID
当前执行的PID号
读
E_PRG的详细说明如下:
D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0
E_PRGPRG0000UPLVLDW00000GUAHLDRUN
PRG1:
程序状态0:
定值状态GUA1:
确保平台0:
无确保平台
UP1:
程序状态0:
定值状态HLD1:
程序保持0:
无程序保持
LVL1:
程序状态0:
定值状态RUN1:
运行0:
无运行
DW1:
程序状态0:
定值状态
.程序复位时,E_PRG被赋值为7FFFH。
0182
OUT1_W
在手动方式下设置输出的值
写
0183
保留
保留
写
0184
AT
自整定0=不执行,1=执行
写
0185
MAN
手动0=自动,1=手动
写
018C
COM
通讯0=本机,1=通讯
写
0190
RST
复位/运行0=复位,1=运行
写
0191
HLD
程序保持0=释放保持,1=保持
写
0192
ADV
程序跳步0=不执行,1=跳步
写
0300
SV1
定值方式的SV值
写
030A
SV_L
SV下