FP93 调节器通讯指南
本资料和开发的学习软件,作为用户学习 FP93 仪表通讯编程的参考,不足之处请予以指正。
南京汇皆奥自动化科技有限公司
电话:025-83767526 83767527 传真:83767527
──── 目录 ────
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_CR 2.STX_ETX_CRLF 3.@_:_CR
4.3.2 通讯发送格式
a
⑴
STX
STX
b
⑵
0
0
⑶
1
1
c
⑷
1
1
d
⑸
R
W
e
⑻
0
8
⑹
0
0
⑺
1
1
⑼
0
c
f
⑽
0
0
g
⑾
----
,****
h
⑿
ETX
ETX
i
⒀
D
7
⒁
A
8
j
⒂
CR
CR
1. 通讯发送格式的解释
a 通讯的起始符,[⑴一位,STX:(02H)或 ”@”(40H)]
b 通讯下位机地址[⑵、⑶两位],由 8 位二进制组成。地址范围 1~99(1:0000 0001~0110 0110),这
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)]。所有的数据和命令再此位之前都以发送完成,遇到
此字符表明结束。
i BCC 块校验 [⒀、⒁两位] 三种 BCC 块校验和无校验。上位机的 BCC 校验应通过软件处理。仪表的 BCC
校验可在[1-34]窗口设置。当 BCC 校验结果有错误时,将没有应答。BCC 校验数据被分成高 4 位和低
4 位,并被转换成 ASCII 码,
⒀:高 4 位的 ASCII 码。⒁:低 4 位的 ASCII 码。
1).ADD 块校验 (加校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT D A CR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=1DAH
BCC 校验结果 ⒀:"D"=44H ⒁:"A"=41H
2).ADD_TWO’S CMP 块校验(求补校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT D A CR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=26H
BCC 校验结果 ⒀:"2"=32H ⒁:"6"=36H
3).XOR 块校验(异或校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT 5 0 CR
(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
d
⑸
R
W
c
⑷
1
1
b
⑵
0
0
⑶
1
1
h
⑿
ETX
ETX
g
⑾
,****
----
e
⑹
0
0
⑺
1
1
i
⒀
3
4
⒁
C
E
j
⒂
CR
CR
1. 通讯应答格式的解释
a 通讯的起始符,[⑴一位,STX:(02H)或 ”@”(40H)]
b 通讯下位机地址[⑵、⑶两位],由 8 位二进制组成。地址范围 1~99(1:0000 0001~0110 0110),这
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)]。所有的数据和命令再此位之前都以发送完成,遇到
此字符表明结束。
i BCC 块校验 [⒀、⒁两位] 三种 BCC 块校验和无校验。上位机的 BCC 校验应通过软件处理。仪表的 BCC
校验可在[1-34]窗口设置。当 BCC 校验结果有错误时,将没有应答。BCC 校验数据被分成高 4 位和低
4 位,并被转换成 ASCII 码,
⒀:高 4 位的 ASCII 码。⒁:低 4 位的 ASCII 码。
1).ADD 块校验 (加校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT D A CR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=1DAH
BCC 校验结果 ⒀:"D"=45H ⒁:"A"=41H
2).ADD_TWO’S CMP 块校验(求补校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT 2 6 CR
(02H)+(30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=26H
BCC 校验结果 ⒀:"2"=32H ⒁:"6"=36H
3).XOR 块校验(异或校验)
例:STX 0 1 1 R 0 1 0 0 0 EXT 5 0 CR
(02H) (30H)+(31H)+(31H)+(52H)+(30H)+(31H)+(30H)+(30H)+(30H)+(03H)=50H
BCC 校验结果 ⒀:"5"=35H ⒁:"0"=30H
j 回车符[⒂一位 CR(0DH)] 全文结束符既回车符。
e
4).None 无校验
4.3.4 读命令、写命令及应答举例
1.读命令
f
d
⑽
⑸
4
R
34H
52H
d:这位表明这是一个读命令。
e:这位表明这个读命令是读控制输出的比例带 1 的值。
f:这位表明这读命令要从这个命令后连续读多少个参数。
具体含义如下:
⑹
0
30H
⑺
4
34H
⑼
0
30H
⑻
0
30H
这位表明这个读命令是读的控制输出的比例带 1 =0400H (十六进制)
=0000 0100 0000 0000 (二进制)
这位表明这读命令要读多少个参数。 =4H
(实际读取参数的个数) =5(4+1)
=)0100 (二进制)
=4 (十进制)
g
e
7
37H
8
38H
E
45H
0
30H
0
30H
,
2CH
0
30H
⑺
0
30H
⑹
0
30H
………………
…………………
…………………
第一数据项 ⑾ 第二数据项
0
30H
2.正确的应答
D
⑸
R
1
52H
31H
d:这位表明应答的是一个读命令。
e:这位表明这是一个应答代码<0(30H) 0 (30H) 正确的应答>。(详见应答代码表)
g:这位表明这应答的读命令返回的数据项。
3.不正确的读命令应答
D
⑸
R
52H
⑹
0
30H
⑺
7
37H
0
30H
第五数据项
0
30H
0
30H
3
33H
e
d:这位表明应答的是一个读命令。
e:表明这是一个应答代码<0(30H)7(30H)是数据格式错误的应答>。(详见应答代码表)
4.写命令
注:写命令时,应先将 COM 模式至成 COM 状态。由 LOC 状态转换成 COM 状态不能由仪表窗口完成,只能由
上位机完成。由 COM 状态转换成 LOC 状态上位机、仪表窗口均可完成。
d
e
g
f
⑾
2
32H
8
38H
0
30H
0
30H
,
2CH
⑻
0
30H
⑽
0
30H
⑼
0
30H
⑺
4
34H
⑹
0
30H
⑸
W
57H
d:这位表明应答的是一个写命令。
e:这位表明这个命令是写的控制输出比例带 1 的值。
f:这位表明这个命令要写 1 个参数。(写命令时这位固定为 0)
g 通讯数据[⑾这位的数据量决定于这位的数据,既这位的数据长度不定]。数据总是以”,”(2CH),数据
项与数据项之间不需要任何分割符。数据的长度主要取决于第⑽的方式。每一个数据项由 16 位二进
制代码组成(1 个字),每 4 位被分成一个数据单元,同时每个数据单元又被转换成 ASCII 数据。
具体含义如下:
这位表明这个写命令是写的控制输出 1 的比例带参数 =0400H (十六进制)
=0000 0100 0000 0000 (二进制)
这位表明这读命令要写多少个参数。 =0H
=0000 (二进制)
=0 (十进制)
(实际写参数的个数) =1 (0+1)
被写入的具体数据 =0028H (十六进制)
=0000 0000 0010 1000 (二进制)
=40 (十进制)
e
5.正确的写命令应答
d
⑸
W
57H
⑹
0
30H
⑺
0
30H
d:这位表明这是一个写应答的命令。
e:表明这是一个应答代码<0(30H)0(30H)是一个写命令的正确应答>。(详见 4-4 应答代码表)
6.不正确的写命令应答举例
d
⑸
W
57H
⑹
0
30H
⑺
9
30H
e
d:这位表明这是一个写应答的命令。
e:表明这是一个应答代码<0(30H)9(39H)是一个不正确写命令的应答>。(详见应答代码表)
4-4 应答代码表
应答代码
二进制码
ASCII
代码类型
代码类型的详细说明
0000 0000 “0”,”0”:30H,30H 正确的应答
读、写命令的正确应答
0000 0001 “0”,”1”:30H,31H 硬件错误
0000 0111 “0”,”7”:30H,37H 格式错误
0000 1000 “0”,”8”:30H,38H 命令或数据的数量
0000 1001 “0”,”9”:30H,39H 数据错误
错误
0000 1010 “0”,”A”:30H,41H 执行命令错误
0000 1011 “0”,”B”:30H,42H 写模式错误
0000 1100 “0”,”C”:30H,43H 其他或操作错误
当发生硬件错误例如帧溢出或
奇偶校验错误被检测到时。
格式上和设计的固定格式不符。
命令代码或数据的数量和设计
的要求不同。
被写入的数据不是有效的可被
设定的范围
执行命令的接收是在一定条件
下的(例如 AT),否则将不被执
行
一些类型的数据在某一时刻将
不能及时
被写入。这种数据写入应在这种
数据允许写入的时刻写入。
写命令中的特殊数据或操作,不
能被加入或接收。
小数点的表示方法:将小数点去掉后,直接连同小数点后的数转换成十六进制数。小数点的位置与使
用的量程有关。这四位十六进制代码(16 位二进制码)的使用范围(-32768~32767)。
例: 十进制 十六进制
20.0% → 200 → 008C
99.99 → 9999 → 270F
-40.00℃ → -4000 → F060
4-5 通讯命令表
命令代码
(十六进制)
参数
参数的详细说明
0040
0041
0042
0043
序列代码 1
序列代码 2
序列代码 3
序列代码 4
这 4 个序列代码不能同时被读取。
读/写
读
读
读
读
这些命令由 16 位二进制组成,被分成高 8 位和低 8 位两个单元。不用的地址用”0”填充。
例:SR91 命令 高 4 位 低 4 位 高 4 位 低 4 位
0040 “F” “P” 46H 50H
0041 “9” “3” 39H 33H
0042 00H 00H
0043 00H 00H
命令代码
(十六进制)
0100
0101
0102
0103
参数
PV_W
SV_W
参数的详细说明
测量值
当前执行的设定值
OUT1_W 控制输出的值
保留
值被固定为 0000H
读/写
读
读
读
读
0104
0105
0106
0107
EXE_FLG 执行标志(不执行时=0)
EV_FLG 事件输出标志(无事件输出时=0000)
保留
值被固定为 0000H
EXE_PID 当前执行的 PID 号
读
读
读
读
EXE_FLG 和 EV_FLG 的详细说明如下:
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
EXE_FLG 0 0 0 0 0 0 0 COM 0 0 0 0 0 0 MAN AT
EV_FLG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 EV2 EV1
.上限超量程时,EV_FLG 的将被赋值为 7FFFH。
.下限超量程时,EV_FLG 的将被赋值为 7FFFH。
DI 开关状态标志位
DI_FLG
010B
读
DI_FLG 的详细说明如下:
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
DI_FLG 0 0 0 0 0 0 0 COM 0 0 0 0 DI4 DI3 DI2 DI1
0110
0111
0112
0113
0114
0115
0120
0121
0122
0123
0124
0125
0126
UNIT
单位 0=℃ 1=℉
RANGE
测量范围(见测量范围代码表)
保留
保留
DP
SC_L
SC_H
E_PRG
E_PTN
保留
E_RPT
E_STP
E_TIM
E_PID
小数点位置 0=无 1=0.1 2=0.01 3=0.001
测量范围下限值 -1999~9989
测量范围上限值 -1989~9999
程序执行标志
当前执行的曲线号
保留
曲线重复次数
当前执行曲线的步
当前执行步的剩余时间
当前执行的 PID 号
读
读
读
读
读
读
读
读
读
读
读
读
E_PRG 的详细说明如下:
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
E_PRG PRG 0 0 0 0 UP LVL DW 0 0 0 0 0 GUA HLD RUN
PRG 1:程序状态 0:定值状态 GUA 1:确保平台 0:无确保平台
UP 1:程序状态 0:定值状态 HLD 1:程序保持 0:无程序保持
LVL 1:程序状态 0:定值状态 RUN 1:运行 0:无运行
DW 1:程序状态 0:定值状态
.程序复位时,E_PRG 被赋值为 7FFFH。
0182
0183
0184
0185
OUT1_W 在手动方式下设置输出的值
保留
保留
AT
MAN
自整定 0=不执行,1=执行
手动 0=自动, 1=手动
018C
COM
通讯 0=本机, 1=通讯
写
写
写
写
写