通 讯 程 序 简 介

Similar documents
+00DE _01EN.book

MODBUS RTU MODE

Modbus 协议

PMAC9900-E型电力电量测控仪表

Microsoft Word - DH8221规格书_ doc

元 [ 所 ] IA27 ( D ) 下 列 何 項 情 況, 其 夫 妻 所 得 可 免 合 併 申 報? (A) 當 年 度 結 婚 (B) 當 年 度 離 婚 (C) 妻 58 歲, 夫 62 歲 無 所 得 受 其 子 扶 養 (D) 以 上 皆 是 [ 所 ]

EMC VNXe 系列故障排除任务清单

untitled

2. 过程 这里主要使用 gdb 来拆炸弹 当然, 用其他工具来辅助, 应该可以更高效地完成 (gdb) echo ======================= Defuse Phase_1 ==============================\n\n ==================

Microsoft Word - Delta Controller ASCII_RTU_SC

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

MCCB EMI EMI

untitled

untitled


7688使用手冊V10.doc

一 技术特点及应用方式 EIO 技术特点... 3 二 EIO Modbus TCP RTU 命令详解 Modbus TCP 简介 EIO Modbus TCP RTU 报文 EIO 与组态软件 EIO 的编程接口

目录

FY.DOC

PD134Z-2SY用户手册

<3935BCC6A5D2C1CDB6D52E747066>

<4D F736F F D D342D3231D2C7B1EDCCD6C2DBB8E5B1E0D6C6CBB5C3F72E646F63>

/ / (FC 3)...

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

:,,,, ( CIP ) /,. :, ISBN CIP ( 2001) : : 127, : : : ht t p: / / www. nwpup. com : :

G30

2011-论文选集-2.cdr

2 12

SeTAQ 是 山 东 西 泰 克 仪 器 有 限 公 司 的 注 册 商 标 本 说 明 书 未 经 书 面 许 可 不 得 翻 印 修 改 或 引 用 警 告 : 请 专 业 人 员 检 测 和 维 修 本 设 备! 警 告 : 本 仪 表 使 用 24V 直 流 电 源, 请 务 必 正 确

福 建 福 州 市 长 乐 市 电 视 机 影 音 及 配 件 产 品 小 家 电 产 品 长 乐 市 吴 航 洪 鸣 家 用 电 器 维 修 店 长 乐 市 西 洋 北 路 69 号 福 建 福 州 市 平 潭 县 电 视 机 影 音 及 配 件

SIGNUM 3SB3

E170C2.PDF

D 江 苏 汉 邦 建 设 集 团 有 限 公 司 江 苏 邦 实 建 设 工 程 有 限 公 司


<4D F736F F D20C8FDCFE0B5BCB9ECB0B2D7B0B5E7D7D3CABDB6E0B9A6C4DCB5E7C4DCB1EDCAB9D3C3CBB5C3F7CAE95FD3A1CBA2B0E6B1BE>

untitled

51 C 51 isp 10 C PCB C C C C KEIL

Microsoft Word - RemoDAQ-8324用户手册 V1.0.doc

! "! "! # $ # # %#!# $# &# # ()*+, )-.) /# () () 0# 1,2.34, 4*.5)-*36-13)7,) ,9,.).6.(+ :# 13).+;*7 )-,7,<*7,-*=,>,7?#

电子缝纫机 了解缝纫机 缝制基础知识 产品型号 : 885-V60/V61/V62/V63/V64/V65 实用针迹 附录 欢迎访问 常见问题解答 (FAQs) 在这里可以得到产品的支持和


!!"#$ " # " " " " " "$%%& " $%% " "!!

海 南 冯 琳 峰 海 南 省 锅 炉 压 力 容 器 与 特 种 设 备 检 验 所 海 南 省 定 安 县 白 蒙 路 47 号 信 XC 内 蒙 古 冯 磊 赤 峰 市 特 种 设 备 检 验 所 内 蒙 古 赤 峰 市 红 山 区 八 里 铺 油 库 路

bingdian001.com

2.181% 0.005%0.002%0.005% 2,160 74,180, ,000, ,500,000 1,000,000 1,000,000 1,000,000 2

Microsoft Word - 工矿企业电气工程师手册P91例高压网络三相短路计算.do

Ksge

CHAPTER VC#

第5章:汇编语言程序设计

温湿度传感器用户手册-RS485-V1.0

:53 "# $%& % ' # # _(! ], X ) DC?]%'4 ) )M - N 3 U? G 95 N Z[$ 4 ] 9 ]C

<473A5CD7EED0C2776F7264B0E6CBB5C3F7CAE956312E315CD2D1B8C4BAC3B5C4CBB5C3F7CAE95C D CFB5C1D0CBB5C3F7CAE976312E302E6E202E646F63>

Transcription:

ZW3432B 盘装仪表 Modbus_RTU 通讯规约 (Ver C2.01) 青岛青智仪器有限公司

注意 在使用本规约之前, 请认真阅读仪表使用说明书, 熟悉设备, 连接好设备后, 如果仪表带有通讯接口, 请事先用仪表随机光盘中所带的通讯测试软件进行通讯测试 ( 请注意通讯测试软件的规约版本, 版本不一致, 会造成部分数据通讯不成功 ), 在通讯测试成功之后再使用本规约 含有本规约的仪表可以直接与带有 Modbus_rtu 通讯规约的 PLC 直接通讯, 也可以直接与组态软件直接相连 本规约中数据用十进制或十六进制表示, 数据后面带 H 的为十六进制数据, 不带 H 为十进制数据 第 I 页

目 录 字节格式.. 1 1 字节格式 2 通讯数据格式... 1 3 帧格式 1 4 通讯波特率.. 3 5 仪表地址. 3 6 通讯功能码. 3 7 通讯数据 CRC 校验 3 8 仪表数据寄存器地址.. 4 9 扩展模块数据寄存器地址.. 9 附录 1 CRC 校验码的计算 11 附录 2 仪表通讯数据样例 13 第 II 页

概述 : 本规约采用 Modbus 规约 RTU 模式, 可以方便地与多种组态软件相连接, 其通讯驱动与 Modicon Modbus_RTU 格式完全兼容 1 字节格式 : 每字节含 8 位二进制码, 传输时加上一个起始位 (0), 一个停止位 (1), 共 10 位 其传输序列如上图所示,D0 是字节的最低有效位,D7 是字节的最高有效位 先传低位, 后传高位 2 通讯数据格式 : 通讯时数据以字 (WORD 2 字节 ) 的形式回送, 回送的每个字中, 高字节在前, 低字节在后, 如果多个字 ( 如 :2 个字 ) 连续回送 ( 如 : 浮点或长整形 ), 则高字在前, 低字在后 数据类型 寄存器数 字节数 说 明 字节数据 1 1 整形数据 1 2 一次送回, 高字节在前, 低字节在后 长整形数分两个字回送, 高字在前, 低字在后 2 4 浮点数据 3 帧格式 : 3.1 读取仪表寄存器内容 ( 功能码 03H) 3.1.1 上位机发送的帧格式 : 顺序 代 码 示例 说 明 1 仪表地址 1 仪表的通讯地址 (1-255 之间 ) 2 03H 03H 功能码 3 起始寄存器地址高字节 01H 4 起始寄存器地址低字节 00H 寄存器起始地址 5 寄存器个数高字节 00H 6 寄存器个数低字节 02H 寄存器个数 7 CRC16 校验高字节 C5H 8 CRC16 校验低字节 F7H CRC 校验数据 第 1 页

3.1.2 仪表回送的帧格式 ( 数据正常 ) 顺序 代 码 说 明 1 仪表地址 仪表的通讯地址 (1-255 之间 ) 2 03H 功能码 3 回送数据域字节数 (M) 4 第一个寄存器数据 第 N 个寄存器数据 M+4 CRC 校验高字节 M+5 CRC 校验低字节 3.1.3 如果起始寄存器地址或寄存器个数错误, 仪表回送 : 顺序 代 码 示例 说 明 1 仪表地址 1 仪表的通讯地址 (1-255 之间 ) 2 83H 83H 功能码 3 02H 02H 错误代码 4 CRC 校验高字节 C0H 5 CRC 校验低字节 F1H 3.2 设置仪表寄存器内容 ( 功能码 10H) 3.2.1 上位机发送的帧格式 顺序 代 码 示例 说 明 1 仪表地址 1 仪表的通讯地址 (1-255 之间 ) 2 10H 10H 功能码 3 寄存器起始地址高字节 09H 4 寄存器起始地址低字节 23H 寄存器地址 0923H 5 寄存器个数高字节 00H 00H 6 02H 字节数据 整形数据 :01H 寄存器个数低字节浮点数据 长整形数 :02H 7 字节数 (M) 4 字节数据 整形数据 :02H 浮点数 长整形数 :04H 8 数据高字节 00H 数据次高字节 0AH 数据次低字节 00H 数据低字节 32H M+8 CRC 校验高字节 7AH M+9 CRC 校验低字节 25H 设置的数据为两个整形数 10 50 CRC 校验数据 第 2 页

3.2.2 仪表回送 :( 写入成功 ) 顺序 代 码 示例 说 明 1 仪表地址 1 仪表的通讯地址 (1-255 之间 ) 2 10H 10H 功能码 3 起始地址高字节 09H 4 起始地址低字节 23H 寄存器起始地址 0923H 5 寄存器个数高字节 00H 6 寄存器个数低字节 02H 寄存器个数 2 7 CRC 校验高字节 B3H 8 CRC 校验低字节 9EH CRC 校验数据 3.2.3 仪表回送 :( 寄存器地址或数据错误 ) 顺序 代 码 说 明 1 仪表地址 仪表的通讯地址 (1-255 之间 ) 2 90H 功能码 3 03H 错误代码 4 CRC 校验高字节 5 CRC 校验低字节 注 : 以上介绍中 CRC 校验为 16 位, 高字节在前, 低字节在后 4 通讯波特率 : 通讯波特率可以在 9600 19200 38400 之间选择 出厂时, 仪表已设置某一波特率 5 仪表地址 : 仪表地址可以在 1-255 之间选择 仪表出厂时, 已设置某一地址 6 通讯功能码 : 03H ( 召测数据 ) 10H( 设置数据 ) 7 通讯数据 CRC 校验 : 7.1 校验多项式 :X 16 +X 12 +X 5 +1 7.2 CRC 检验码的计算例程见附录 7.3 CRC 检验从第 1 字节开始至 CRC 校验高字节前面的字节数据结束 第 3 页

8 仪表数据寄存器地址 : 表 1 寄存器地址 数据名称 量程系数 单位 数据格式 读写属性 常规数据 功能码 03H 读取 ; 一次可最多读取 248 个连续字节即 124 个连续字 ; 电流 0100H A 相电流 1000 安培 Long R 0102H B 相电流 1000 安培 Long R 0104H C 相电流 1000 安培 Long R 0106H 0108H 3 相平均电流 1000 安培 Long R 备 注 电压 0126H A-B 线电压 10 伏特 Long R 0128H B-C 线电压 10 伏特 Long R 012AH C-A 线电压 10 伏特 Long R 012CH 平均线电压 10 伏特 Long R 012EH A 相相电压 10 伏特 Long R 三相四线系统 0130H B 相相电压 10 伏特 Long R 三相四线系统 0132H C 相相电压 10 伏特 Long R 三相四线系统 0134H 频率 100 赫兹 Long R 0136H 平均相电压 10 伏特 Long R 三相四线系统 功率 0150H A 相有功功率 10 瓦 Long R 0152H B 相有功功率 10 瓦 Long R 0154H C 相有功功率 10 瓦 Long R 0156H 总有功功率 10 瓦 Long R 0158H A 相无功功率 10 乏 Long R 015AH B 相无功功率 10 乏 Long R 015CH C 相无功功率 10 乏 Long R 015EH 总无功功率 10 乏 Long R 0160H A 相视在功率 10 伏安 Long R 0162H B 相视在功率 10 伏安 Long R 0164H C 相视在功率 10 伏安 Long R 0166H 总视在功率 10 伏安 Long R 功率因数 0180H A 相功率因数 1000 Long R 0182H B 相功率因数 1000 Long R 0184H C 相功率因数 1000 Long R 0186H 总相功率因数 1000 Long R 频率 01B0H 频率 100 赫兹 Long R 能量 ---- 功能码 03H 读取 ; 功能码 10H 写入, 一次可最多写入 32 个连续字节即 16 个连续字 ; 0600H 输入的有功电能 10 瓦时 DULong R/W 0~999990000000 0604H 输入的无功电能 10 乏时 DULong R/W 0~999990000000 0608H 到送的有功电能 10 瓦时 DULong R/W 0~999990000000 060CH 到送的无功电能 10 乏时 DULong R/W 0~999990000000 第 4 页

0610H 总有功电能 ( 绝对值 ) 10 瓦时 DULong R/W 0~999990000000 0614H 总无功电能 ( 绝对值 ) 10 乏时 DULong R/W 0~999990000000 0618H 视在电能 10 伏安时 DULong R/W 0~999990000000 061CH 净有功电能 10 瓦时 DULong R/W 0~999990000000 0620H 净无功电能 10 乏时 DULong R/W 0~999990000000 注 :1 总有功电能 = 输入的有功电能 + 到送的有功电能 ; 净有功电能 = 输入的有功电能 - 到送的有功电能 ; 2 总无功电能 = 输入的无功电能 + 到送的无功电能 ; 净无功电能 = 输入的无功电能 - 到送的无功电能 ; 3 基于上面两条公式, 如果想改写总电能或净电能, 请直接改写输入的电能和到送的电能 ; 输出 0800H 继电器 1 输出次数 1 次 ULong R 继电器 1 输出状态 UInt R 5050H: 动作 0802H 3030H: 恢复 0803H 继电器 2 输出次数 1 次 ULong R 继电器 2 输出状态 UInt R 5050H: 动作 0805H 3030H: 恢复 系统配置 0900H 仪表型号 R ASSIC 码 0910H 仪表软件版本 R ASSIC 码 0913H 仪表硬件版本 R ASSIC 码 0916- 仪表通讯规约版本 R 0918H ASSIC 码 系统配置数据 : 功能码 03H 读取 ; 功能码 10H 写入, 一次可最多写入 240 个连续字节即 120 个连续 字 ; 0923H 电流倍率 1 UInt R/W (0~9999) 0924H 备用 0925H 电压倍率 1 UInt R/W (0~9999) 0926H 备用 0927H 0928H 接线方式 UInt R/W 43: 三相四线, 三元件 32: 三相三线, 二元件 33: 三相三线, 三元件 0929H 备用 092AH 通讯地址 UInt R 1-254 092BH 通讯速率 UInt R 0:9600 1:19200 2:38400 092CH 备用 092DH 备用 092EH 备用 092FH 备用 0930H 备用 0931H 备用 0932H 备用 自动循环显示 1 秒 UInt R/W 0: 不 ;>0: 按设定时间 0933H 间隔自动循环显示 电能控制 UInt R/W 0: 停止 ;1: 启动 ;2: 0934H 清零 第 5 页

报警设置数据 0A20H 报警参数选择 UInt R/W 见表 1 0A21H 报警上限值 见表 1 报警输出 UInt R/W (0~9999) 0A22H 报警下限值 参数选择表 UInt R/W (0~9999) 0A23H 延时 1 秒 UInt R/W (0~9999) 0A24H 零值是否报警 UInt R/W 0: 不报警 ;1: 报警 0A25H 报警时数码管是否闪烁 UInt R/W 0: 不闪烁 ;1: 闪烁 命令寄存器 0B00H 命令列表 2000H 6001H 6002H 6FFFH F000H W 写入不同命令, 有不同作用, 具体见命令列表 复位电能复位继电器输出 1 计数器复位继电器输出 2 计数器复位所有继电器输出计数器复位设置数据为默认值 ( 见默认值表 ) 报警数据当前报警数据 1EC0H 越上限报警 --- ---- --- --- 见当前报警数据模板 1EC6H 越下限报警 --- ---- --- --- 见当前报警数据模板 当前报警数据模板报警是否发生 1 UInt R 00: 没发生报警 基址 非零 : 有报警发生 基址 +1 报警延时时间 1 秒 ULong R 基址 +3 报警内的极值 见常规数据表 ULong R 注明 : 1 上表中关于数据类型的说明,Int: 有符号整形数 ;Uint: 无符号整形数 ;Long: 有符号长整形数 ;ULong: 无符号长整形数 ; DULong: 无符号双长整形数, 其值 = 长整形数 1* 4294967296+ 长整形数 2 2 读写属性 :R: 只读 ;W: 只写 ;R/W: 可读, 可写 第 6 页

表 1 报警输出参数选择表 在三相三线中只有线电压可选, 如果选相电压报警, 仪表将自动关闭报警功能 数值 对应参数 注释 量程系数 0 3I 平均电流 1000 1 IA A 相电流 1000 2 IB B 相电流 1000 3 IC C 相电流 1000 4 3U LN 平均相电压 10 5 UAN A 相电压 10 6 UBN B 相电压 10 7 UCN C 相电压 10 8 3U LL 平均线电压 10 9 UAB AB 线电压 10 10 UBC BC 线相电压 10 11 UCA CA 线相电压 10 12 P 总有功功率 1 13 PA A 相有功功率 1 14 PB B 相有功功率 1 15 PC C 相有功功率 1 16 q 总无功功率 1 17 qa A 相无功功率 1 18 qb B 相无功功率 1 19 qc C 相无功功率 1 20 S 总视在功率 1 21 SA A 相视在功率 1 22 SB B 相视在功率 1 23 SC C 相视在功率 1 24 PF 总功率因数 1000 25 PFA A 相功率因数 1000 26 PFB B 相功率因数 1000 27 PFC C 相功率因数 1000 28 F 频率 100 29 OFF 关闭报警 第 7 页

默认值表 参数 说明 默认值 LINE 线制 3P4L ur 电压倍率 0001 Ir 电流倍率 0001 BAUD 通讯速率 19200 ADDR 通讯地址 001 SEL 报警参数 3I -- -- UP 报警上限值 0 UP -- -- 报警下限值 0 DELY 延时 0 OUT0 零值是否报警 0: 不报警 LEDF 报警时相应数码管是否闪烁 0: 不闪烁 AUTO 是否自动循环显示 0: 否 EN 电能状态 1: 启动 第 8 页

9 扩展模块数据寄存器地址 : 寄存器地址 数据名称 量程系数 单位 数据格式 读写属性 系统配置 0E00H 扩展模块型号 R ASSIC 码 0E10H 扩展模块软件版本 R ASSIC 码 0E13H 扩展模块硬件版本 R ASSIC 码 备 注 数字量输出 0E20H 继电器 1 输出次数 1 次 ULong R 0~4294967295 0E22H 继电器 1 输出状态 UInt R 5050H: 动作 3030H: 恢复 0 E23H 继电器 2 输出次数 1 次 ULong R 0~4294967295 0 E25H 继电器 2 输出状态 UInt R 5050H: 动作 3030H: 恢复 数字量输入 0E40H 数字量 1 输入次数 1 次 ULong R 0~4294967295 0 E42H 数字量 1 输入状态 UInt R 5050H:ON 3030H:OFF 0 E43H 数字量 2 输入次数 1 次 ULong R 0~4294967295 0 E45H 数字量 2 输入状态 UInt R 5050H:ON 3030H:OFF 0 E46H 数字量 3 输入次数 1 次 ULong R 0~4294967295 0 E48H 数字量 3 输入状态 UInt R 5050H:ON 3030H:OFF 0 E49H 数字量 4 输入次数 1 次 ULong R 0~4294967295 0 E4BH 数字量 4 输入状态 UInt R 5050H:ON 3030H:OFF 0 E4CH 数字量 5 输入次数 1 次 ULong R 0~4294967295 0 E4EH 数字量 5 输入状态 UInt R 5050H:ON 3030H:OFF 0 E4FH 数字量 6 输入次数 1 次 ULong R 0~4294967295 0 E51H 数字量 6 输入状态 UInt R 5050H:ON 3030H:OFF 0 E52H 数字量 7 输入次数 1 次 ULong R 0~4294967295 0 E54H 数字量 7 输入状态 UInt R 5050H:ON 3030H:OFF 0E5EH 数字量 1 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E60H 数字量 2 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E62H 数字量 3 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E64H 数字量 4 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E66H 数字量 5 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E68H 数字量 6 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 0E6AH 数字量 7 输入 ON 时间 10 秒 ULong R 0~4294967295( 掉电归零 ) 模拟量输出 0E72H 模拟量 1 输出值 100 ma UInt R 0 E73H 模拟量 2 输出值 100 ma UInt R 第 9 页

0 E74H 模拟量 3 输出值 100 ma UInt R 扩展模块配置数据 : 功能码 03H 读取 ; 功能码 10H 写入, 一次可最多写入 240 个连续字节即 120 个连续 字 ; 数字量输出设置 控制 : 0E80H 继电器 1 控制 UInt R/W 5050H: 控制继电器动作 3030H: 控制继电器恢复 0E81H 继电器 2 控制 UInt R/W 控制 : 5050H: 控制继电器动作 3030H: 控制继电器恢复 模拟量输出设置 0EB2H 模拟量 1 输出设置值 R/W 见摸板 0EB6H 模拟量 2 输出设置值 R/W 见摸板 0EBAH 模拟量 3 输出设置值 R/W 见摸板 R/W 模拟量输出设置值模板 输出的信号类型 --- ---- 0000H:4-20 ma UInt R/W 基址 0001H:0-5 V 基址 +1 模拟输出的参数选择 UInt R/W 见表 2 基址 +2 输出下限对应的参数值 见表 2 模拟输出 UInt R/W (0~9999) 基址 +3 输出上限对应的参数值 参数选择表 UInt R/W (0~9999) 命令寄存器 0B00H 命令列表 6003H 6004H 6FFFH 6010H 6011H 6012H 6013H 6014H 6015H 6016H 601FH 注 : 扩展模块中继电器只能用上位机控制 W 写入不同命令, 有不同作用, 具体见命令列表 复位继电器输出 M-R1 计数器复位继电器输出 M-R1 计数器复位所有继电器输出计数器复位数字量输入 M-S1 计数器复位数字量输入 M-S2 计数器复位数字量输入 M-S3 计数器复位数字量输入 M-S4 计数器复位数字量输入 M-S5 计数器复位数字量输入 M-S6 计数器复位数字量输入 M-S7 计数器复位所有数字量输入计数器及 ON 持续时间 第 10 页

表 2 模拟输出参数选择表 数值 对应参数 注释 量程系数 0 3I 平均电流 1000 1 IA A 相电流 1000 2 IB B 相电流 1000 3 IC C 相电流 1000 4 3U LN 平均相电压 10 5 UAN A 相电压 10 6 UBN B 相电压 10 7 UCN C 相电压 10 8 3U LL 平均线电压 10 9 UAB AB 线电压 10 10 UBC BC 线相电压 10 11 UCA CA 线相电压 10 12 P 总有功功率 1 13 PA A 相有功功率 1 14 PB B 相有功功率 1 15 PC C 相有功功率 1 16 q 总无功功率 1 17 qa A 相无功功率 1 18 qb B 相无功功率 1 19 qc C 相无功功率 1 20 S 总视在功率 1 21 SA A 相视在功率 1 22 SB B 相视在功率 1 23 SC C 相视在功率 1 24 PF 总功率因数 1000 25 PFA A 相功率因数 1000 26 PFB B 相功率因数 1000 27 PFC C 相功率因数 1000 28 F 频率 100 附录 1 CRC 校验码的计算 : 1 CRC 校验简单函数 (C 语言 ) /*********************************************** 青岛青智仪器有限公司 CRC 校验例程本文中所有的数据及显示皆为 16 进制本文中的 Crc 校验以查表的方式进行本程序是 Turbo C++(Ver3.0) 的格式, 运行环境为 DOS 操作系统 ***********************************************/ #include<stdio.h> unsigned char txd_pointer; unsigned char rxd_pointer; static unsigned char auchcrchi[] = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 第 11 页

0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40} ; /* CRC 低位字节值表 */ static char auchcrclo[] = {0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2,0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04,0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8,0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC,0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6,0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10,0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE,0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA,0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C,0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0,0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62,0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE,0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA,0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C,0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76,0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54,0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E,0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98,0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A,0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86,0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40} ; unsigned short CRC16(unsigned char *puchmsg, unsigned short usdatalen) { unsigned char uchcrchi = 0xFF ; /* 高 CRC 字节初始化 */ unsigned char uchcrclo = 0xFF ; /* 低 CRC 字节初始化 */ unsigned uindex ; while (usdatalen--) /* 传输消息缓冲区 */ { uindex = uchcrchi ^ *puchmsg++ ; /* 计算 CRC */ uchcrchi = uchcrclo ^ auchcrchi[uindex] ; uchcrclo = auchcrclo[uindex] ; } return (uchcrchi << 8 uchcrclo) ; } union{unsigned int i;unsigned char c[2];}cov; 第 12 页

union{float f;unsigned char c[4];}covf; void main() { unsigned char send[30]; unsigned int crc; int i; printf("\n QINGDAO QINGZHI INSTRUMENTS Co.Ltd. "); printf("\n =================================================================== =========="); printf("\n\ncrc Calculate example:"); txd_pointer=0; send[txd_pointer++]=0x1; send[txd_pointer++]=0x3; send[txd_pointer++]=0x10; send[txd_pointer++]=2; send[txd_pointer++]=0x0; send[txd_pointer++]=0x2; printf("\ndata:"); for(i=0;i<txd_pointer;i++)printf("%02x,",send[i]);// 显示被校验的数据 cov.i=crc16(send,txd_pointer);// 开始 CRC 校验计算 send[txd_pointer++]=cov.c[1];// cov.c[1] 为 CRC 校验的高字节 send[txd_pointer++]=cov.c[0];// cov.c[0] 为 CRC 校验的低字节 printf("\ncrc=%02x,%02x",cov.c[1],cov.c[0]);// 显示 CRC 校验的值 } // 注 : 此例程源程请上我公司网站 (http://www.qingzhi.com/) 技术支持 下的 经验交流 处下载 第 13 页

附录 2 仪表通讯数据样例:( 以下所有数据皆为十六进制 ) 1 读取仪表 A 相电压值 : A 上位机发送: 1 3 01 2E 00 02 A5 FE 仪表地址 命令 开始寄存器地址高 低字节 寄存器个数高 低字节 CRC 校验高 低字节 B 仪表回送数据 : 电压数据为 911, 除以量程系数 10, 转换成实际值为 91.1V 1 3 4 00 00 03 8F BB 67 地址命令字节数四字节长整形数据, 高字节在前 CRC 校验码 2 读取仪表 A 相电压 B 相电压 C 相电压值 : A 上位机发送: 1 3 01H 2EH 00H 06H A4H 3DH 仪表地址 命令 开始寄存器地址高 低字节 寄存器个数高 低字节 CRC 校验高 低字节 B 仪表回送 1 3 0C 00,00,03,8F,00,00,03,91,00,00,03,E8, BE 19 地址命令字节数四字节长整形数据, 高字节在前 CRC 校验码读取的数据 :A 相电压 =91.1V,B 相电压 =91.3V,C 相电压 =100.0V, 3 设置电压倍率: A 上位机发送: 将电压倍率设置为 2.0 1 10 09,25 00,01 02 00,14 38 6A 地址 命令 寄存器 地址 寄存器个数 字节数 二字节的整形数, 高字节在前 CRC 校验码 B 仪表回送 : 1 10 09 25 00 01 13 9E 仪表地址命令寄存器地址寄存器个数 CRC 校验码 4 清除电能累计命令 : A 上位机发送 : 1 10 0B,00 00,01 02 20 00 05 50 地址命令寄存器地址寄存器个数字节数数据 CRC 校验码 B 仪表回送 : 1 10 0B 00 00 01 03 ED 仪表地址命令寄存器地址寄存器个数 CRC 校验码 第 14 页

青岛青智仪器有限公司地址 : 青岛市崂山区山东头路 58 号盛和大厦 1 号楼五层邮编 :266101 电话 :0532--81920028/29 传真 :0532--81920028/29 技术热线 : (0)13953270323 网址 : Http://www.qingzhi.com 第 15 页