资料下载

资料下载

485通讯协议 MODBUS通信协议

发布时间:2026-04-20    作者:admin


485通讯协议.zip


此485通讯协议适合于JK72S-RS,JK92S-RS,SD76-RS,SD92-RS,JK86,大屏计数器等


仪表可以后配数字通讯接口,其接口为 RS485,可以多达 255 仪表并联在一起接到上位机对应的通讯口上,通过数字通讯口与上位计算机连接。在上位机上运行适当的通讯程序可检查和修改仪表中的各种参数,数字通讯线通过仪表后部端子连接到计算机。

    仪表与上位机通讯为被动方式,即仪表不会主动向上位机发数据,必须由上位机向仪表发出读写命令仪表才会作相应的响应。对不同的仪表通讯时由上位机软件发出不同的表号进行区别。

仪表正常通电并进入正常显示状态;

在二级参数设定模式下,将仪表设置为有效的地址及波特、数字结构.

   依次按“SET”键可得到并循环显示下列参数:   

             Adrset     仪表地址号:默认为01.(范围01-255)

             BAUSET     通讯速率:默认为9600.(范围9600-4800)

代码

数据位

停止位

校验位

0

8

1

1

1

8

1

2

8

1

3

8

1

             UArt       数字结构由下面的代码

表示不同的结构组合:

                        出厂默认值1.     

                                                  

 

 

一、 通讯类型和帧格式

本系列仪表使用异步串行通讯接口,符合标准 RS485 接口电平规范。通讯信号兼容标准 MODBUS

RTU 协议,默认数据帧格式为 1 位起始位、8 位数据位、无校验、1 位停止位。通讯传输数据的波特率可设

4800 9600Bit/S (必要时在仪表后部端子并接一只 100Ω左右的电阻)

1-1 MODBUS数帧默认设置格式

波特率

起始位

数据位

校验位

停止位

9600

1

8

None

1

 

 

二、通讯信息的发送格式

仪表端为从机,接收仪表数据一端为主机,控制指令首先由主机发送到指定地址的从机,指定地址的从机接收到了命令,如果接收数据CRC 校验和指令格式正确,从机会执行相应的操作,然后从机把执行结果返回到主机。

1、【仪表地址码】1 个字节

地址范围 1-32主机发送的指令包含了仪表地址,被指定的仪表收到指令后执行操作并返回执行结果。(同一总线内的仪表地址码不能重复,仪表地址码需先在仪表菜单ADRSET中设定好)

 

2、【操作指令码】1个字节

指令代码由主机发送给从机,从机收指令代码执行相应操作。如果从机执行操作正常原样返

回收到的指令代码,如果执行异常从机将接收到的功能码最高位置 1 后再返回。

 

2-1 操作指令码

指令码

指令功能

指令说明

0x03

寄存器多读操作指令码

可一次读出一个或全部工作寄存器地址内容

0x10

寄存器多写操作指令码

可用来写入报警值和工作参数数据        

0x06

寄存器单写操作指令码

仅用来写入产品复位操作和暂停/恢复操作  

3、【数据码】(不同指令代码数据所发送的数据码长度不同)

需要发送给仪表的数据(例如报警值、设定值等)。

       通信发送和接收信息格式

1. 以下通过四组示例说明SD76系列仪表MODBUS数据的发送:

示例一:读取仪表当前报警状态

PLC或上位机向仪表发01 03 00 00 00 01 84 0A数据即可,发送各字节数据含义见表1

 

示例二:读取仪表上排显示数值

PLC或上位机向仪表发01 03 00 21 00 02 94 01数据即可,发送各字节数据含义见表1

 

示例三:读取仪表下排显示数值

PLC或上位机向仪表发01 03 00 23 00 02 35 C1数据即可,发送各字节数据含义见表1

 

示例四:控制仪表上排数值清零

PLC或上位机向仪表发01 06 00 00 00 02 08 0B数据即可,发送各字节数据含义见表2

 

示例五:设置AL1和AL2报警值分别设置为10和20(AL1和AL2必须同时修改)

PLC或上位机向仪表发01 10 00 0F 00 04 08 00 00 00 10 00 00 00 20 62 75数据即可

 

1JK72S仪表MODBUS常用多读(03)操作指令

序号

功能

仪表地址

多读

指令码

起始地址

读取数量

CRC16

校验码

1

读取仪表当前报警状态

0x01

0x03

0x0000

0x0001

0x840A

2

读取仪表上排显示数值

0x01

0x03

0x0021

0x0002

0x9401

3

读取仪表下排显示数值

0x01

0x03

0x0023

0x0002

0x35C1

 

2 SD76仪表MODBUS常用单写(06)操作指令

序号

功能

设备地址

单写

指令码

写入地址

写入数据

CRC16

校验码

1

仪表上排显示数值复位

0x01

0x06

0x0000

0x0002

0x080B

2

仪表下排显示数值复位

0x01

0x06

0x0000

0x0001

0x480A

3

仪表暂停运行

0x01

0x06

0x0000

0x0004

0x8809

4

仪表恢复运行

0x01

0x06

0x0000

0x0008

0x880C

 

 

2.PLC或上位机接收到的数据结构见表3,更多寄存器含义详见<2. JK72S系列仪表寄存器功能说明>文档。

 

3 JK72S仪表MODBUS返回的数据格式

序号

功能

设备地址

指令码

返回数据的字节数

返回的

数据

CRC16

校验码

1

返回上排显示数据 6

0x01

0x03

0x02

0x0006

0x3846

2

返回下排显示数据-2

0x01

0x03

0x02

0xFFFE

0x7834

3

返回仪表AL1报警中状态

0x01

0x03

0x02

0x0001

0x7984

4

返回仪表AL2报警中状态

0x01

0x06

0x02

0x0002

0x3985

 

 通讯错误处理

 

如果在指令序列和CRC校码码均正确的情况下,出现了操作错误,仪表将向主机返回错误信息,从机

将此次接收到的【操作指令码】高位置1后连同【仪表地址码】、【错误码】一起作为错误信息返回。

 

4 从机

序号

功能

设备地址

0x80+

指令码

错误代码

CRC16校验码

1

不支持的操作指令

0x01

0x83

0x08

0x40F6

2

无效的寄存器地址

0x01

0x83

0x09

0x8136

3

无效的波特率数据

0x01

0x83

0x10

0X40FC

 

5 JK72S系列仪表错误代码总表

错误代码

错误含义

0x08

不支持的操作指令

所有模式

0x09

无效的寄存器地址

所有模式

0x10

无效的波特率数据

所有模式

0x11

无效的起始值1

所有模式

0x12

无效的起始值2

所有模式

0x13

无效的报警值1

所有模式

0x14

无效的报警值2

所有模式

0x15

无效的输出模式1

所有模式

0x16

无效的输出模式2

所有模式

0x17

无效的输出时间1

所有模式

0x18

无效的输出时间2

所有模式

0x19

无效的计时器模式1

计时器专用

0x1A

无效的计时器模式2

计时器专用

0x1B

无效的计时组合模式

计时器专用

0x1C

无效的计时器模式

计时计数器专用

0x1D

无效的计数器模式

计时计数器专用

0x20

无效的小数点

计米器/总量批次专用

0x21

无效的计数组合模式

计米器专用

0x22

无效的计数频率

计米器/总量批次专用

0x23

无效的编码器设置

总量批次专用

0x24

无效的锁键设置

总量批次专用

 

JK72S仪表寄存器功能说明

 

说明:  1.寄存器的基地址为0x0000,PLC地址的基地址为40001

2.功能码0x03为读取多个保持寄存器,0x06为写1个保持寄存器单元,0x10写多个保持寄存器。

        3.AL1报警值和AL2报警值的4个寄存器(0x000F~0x0012)必须同时写入,读取时可以分开读

寄存器字地址
(PLC地址)

寄存器内容

数据类型

参数说明

适用功能码

0x0020

(40033)

上排显示小数点

(低字节)

8位无符号整数

0x00=小数点的右边有0位数;

0x01=小数点的右边有1位数;

0x02=小数点的右边有2位数;

...

0x03

下排显示小数点

(高字节)

8位无符号整数

内容同上

0x03

0x0021~0x0022

(40034~40035)

上排数码管整数值

32位有符号整数

上排小数点位置由40033寄存器低字节定义

0x03

0x0023~0x0024

(40036~40037)

下排数码管整数值

32位有符号整数

下排小数点位置由40033寄存器高字节定义

0x03

0x0025~0x0026

(40038~40039)

上排数码管浮点值

32位单精度浮点数

  例如:0x41280000 表示10.5

0x03

0x0027~0x0028

(40040~40041)

下排数码管浮点值

32位单精度浮点数

内容同上

0x03

0x0000

(40001)

读取报警状态

(低字节)

8位无符号整数

0x01=AL1报警了;     0x02=AL2报警了;
0x04=AL1继电器闭合; 0x08=AL2继电器闭合;

0x10=仪表暂停中;

上述值相加所得到的值表示状态同时出现

0x03

读取仪表工作模式

(高字节)

8位无符号整数

0x00=计数计米器;  0x01=计时器;    0x02=计时计数器;

0x03=总量计米器;  0x04=批次计米器

0x0000

(40001)

清零和复位控制

16位无符号整数

0x0001=下排数码管复位; 0x0002=上排数码管复位;
0x0004=暂停仪表运行;   0x0008=恢复仪表运行;

上述值相加所得到的值表示同时控制

0x06

0x0001~0x0002

(40002~40003)

上排数码管显示值

BCD

3个字节有效,最高的1个字节要舍弃

例如:0x000100代表100  (BCD为无负号数,显示的是绝对值)

0x03

0x0003~0x0004

(40004~40005)

下排数码管显示值

BCD

内容同上

0x03

0x0006~0x0007

(40007~40008)

TIA1 继电器1闭合时长

BCD

内容同上

0x03

0x0008~0x0009

(40009~40010)

TIA2 继电器2闭合时长

BCD

内容同上

0x03

0x001A~0x001B

(40011~40012)

PRE1上排初始值

BCD

内容同上

0x030x10

0x001C~0x001D

(40013~40014)

PRE2下排初始值

BCD

内容同上

0x030x10

0x000F~0x0010

(40016~40017)

AL1 报警值

BCD

内容同上

0x030x10

0x0011~0x0012

(40018~40019)

AL2 报警值

BCD

内容同上

0x030x10

0x0014~0x0015

(40021~40022)

SCAL计数器倍率

BCD

内容同上

0x030x10

 

计仪表工作状态:01 03 00 00 00 01 84 0A    16进制     指令03 地址0000H

 

0x0018     dp     

0x0005     set     

0x000A  pc0

0x000B  pc1

0x000C  sc2 sc1

0x000D  net addr

0x000E baud

0x0013  cn cset     

0x001E     OUT2 OUT1 两个值一起读

 


485通讯指令

               读取当前值上方一排测量值

                 01 03 00 01 00 02 95 CB


                   读取当前值上下两排设定值/测量值

                  01 03 00 01 00 04 15 C9 

                  

               读取当前仪表AL1与AL2继电器是否有报警输出。

                      01 03 00 00 00 01 84 0a

清零1,清零2,暂停/取消,复位

以下以操作地址1举例(写单一寄存器指令06H)

(所有数据都是16进制)


1.清零1号上面一排LED(两路单独输入时有效,计数或计米时请用第三条复位指令)

01 06 00 00 00 01 48 0a


2.清零2号下面一排LED(两路单独输入时有效)

01 06 00 00 00 02 08 0b



3.清零1号/2号(相当于复位)

01 06 00 00 00 03 C9 CB


4.暂停

01 06 00 00 00 04 88 09


5.恢复运行

01 06 00 00 00 08 88 0C


6. 写入AL1 AL2 

01 10 00 0F 00 04 08 00 12 34 56 00 56 78 90 1E 6B 

7. 写入AL1

01 10 00 0F 00 02 04 00 11 22 33 BB 5F

以上4/5两条指令若同时存在,则4优先(即暂停比恢复优先级高)



1.读取全部寄存器数据(地址区间:00H--1DH,共1EH个寄存器)


指令:01 03 00 00 00 1E C5 C2


2.读取当前状态(地址区间:00H-01H-02H-03H-04H,共5个寄存器)


指令:01 03 00 00 00 05 85 C9


2.仅写入AL1数据(数据值:123456,地址区间: 12H-13H,共2个寄存器)


指令:01 10 00 12 00 02 04 00 12 34 56 45 81

3.写初始值1为2

01 10 00 1a 00 02 04 00 00 00 02 F3 1D


4.写入其它参数值(要求一次至少写入2个寄存器数据)


例:写入OUT1=1,OUT2=2(地址区间:08H-09H,共2个寄存器)


指令:01 10 00 08 00 02 04 00 01 00 02 22 08

注:当前测量值第一排和第二排采用bcd码读写,第一个字节最高位为1时为负数,为0时表示正数,从第一个字节的第5位开始置1表示小数点位置在第1位,往后依次为4对应第2位........0对应第6位,

-1.05500 表示为A0 10 55 00

-10.5500表示为90 10 55 00

-105.500表示为88 10 55 00

-1055.00表示为84 10 55 00

-10550.0 表示为82 10 55 00

-105500表示为  81 10 55 00


Copyright © 2025 东莞市新亿科电子科技有限公司(JAKON佳控仪表代理商) 本站内容来源于JAKON仪表 粤ICP备16003843号 XML