一线通…远程数据采集模块
 
网站首页
采集前端
FCS900模块
FCS900+模块
WT300前端
价格表
技术文章
应用业绩
联系我们
采集前端维修
文件下载
  您当前位置 -> 技术文章  

MODBUS通讯协议简述


发布时间:2009年5月15日 7时19分

FCS900一线通模块采用RS485通讯接口,支持MODBUS-RTU协议和自由通讯接口协议。

MODBUS协议

MODBUS通讯协议是一种简单的被所有软硬件工控厂商免费支持的通讯协议。FCS900可直接连接组态王、MCGS、IFIX等国内外组态软件,可以在1200米范围内轻松组建具有AI、AO、DI、DO等秒级远程、分散数据采集控制系统。也可以直接连接PLC、DCS等上位机,作为远程I/O使用。

一线通模块按从机MODBUS协议设计,若波特率、齐偶校验、起始位、停止位、数据位、从机地址等通讯参数设置正确,模块可以同任何主机MODBUS设备直接通讯。

FCS900系列模块的通讯参数为:19200bps/1位起始位/1位停止位/无校验位/MODBUS-RTU协议。

模块支持下述MODBUS功能,所有功能按标准MODBUS协议设计。

1,功能码02H:成组读取一线通模块的数字量输入信号状态(DI)。

2,功能码03H:成组读取一线通模块的模拟量输入信号(AI)。

3,功能码04H:成组读取一线通模块的模拟量输入信号(AI)。

4,功能码05H:设置一线通模块的单一输出线圈的状态(DO)。

5,功能码06H:设置一线通模块的单一模拟量存储器内容(AO)。

6,功能码0FH:成组设置一线通模块的数字量输入信号状态(DO)。

7,功能码10H:成组设置一线通模块的模拟量输出信号状态(AO)。

MODBUS功能码02H

功能码02H是读取各通道数字量采集结果命令。通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(一线通模块地址)、数据的起始寄存器地址、数据数量和本次数据帧的CRC校验。一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,一线通模块不作响应;若地址相同且CRC校验结果正确,一线通模块发送“从机回信数据帧”,向主机发送对应的数字量数据。

主机发信数据帧:

地址

02

起始地址

高字节

起始地址

低字节

数据量

高字节

数据量低字节

CRC

高字节

CRC

低字节

从机回信数据帧:

地址

02

数据字节数

数据1

数据2

。。。。。。

数据n

CRC

高字节

CRC

低字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

——起始地址:双字节,要读取寄存器的起始地址,此数据要求比实际的数据地址小1;

——数据量:双字节,1~16;

——数据字节量:1~2;

——数据:一线通模块发送给主机的数据,低位低寄存器地址。

——CRC:双字节CRC校验码。

支持MODBUS功能码02H的FCS900模块有FCS931、FCS941、FCS942、FCS951、FCS952、FCS953和FCS954。

FCS931一线通模块116通道采集结果对应的寄存器地址分别为116,起始寄存器地址和数据量范围在116之间,超过该范围一线通模块可能拒绝响应;

FCS941一线通模块的输出通道状态,可以使用02功能码读出,类似FCS931模块,使用方法参见FCS931,FCS941一线通模块116输出通道对应的寄存器地址分别为116,起始寄存器地址和数据量范围在116之间,超过该范围一线通模块可能拒绝响应,

FCS942一线通模块的输出通道状态,可以使用02功能码读出,类似FCS931模块,使用方法参见FCS931,FCS942一线通模块18输出通道对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS951一线通模块的1~8输出通道状态,可以使用02功能码读出,类似FCS931模块,使用方法参见FCS931,FCS951一线通模块916通道采集结果对应的寄存器地址分别为916,起始寄存器地址和数据量范围在916之间,超过该范围一线通模块可能拒绝响应。

FCS952一线通模块916通道采集结果对应的寄存器地址分别为916,起始寄存器地址和数据量范围在916之间,超过该范围一线通模块可能拒绝响应。

FCS953一线通模块1516输出通道对应的寄存器地址分别为1516,输出通道状态,可以使用02功能码读出;

FCS954一线通模块914通道采集结果对应的寄存器地址分别为914,起始寄存器地址和数据量范围在914之间,超过该范围一线通模块可能拒绝响应。FCS954一线通模块1516输出通道对应的寄存器地址分别为1516,输出通道状态,可以使用02功能码读出。

MODBUS功能码03H、功能码04H

FCS900一线通模块对功能码3、4没有区别,两组命令都是读取各通道模拟量采集结果,下述仅以功能码4为例,详述MODBUS通讯的通讯过程。通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(一线通模块地址)、数据的起始寄存器地址、数据数量和本次数据帧的CRC校验。FCS900一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,FCS900一线通模块不作响应;若地址相同且CRC校验结果正确,FCS900一线通模块发送“从机回信数据帧”,向主机发送对应的模拟量数据。

主机发信数据帧:

地址

04

起始地址

高字节

起始地址

低字节

数据量

高字节

数据量低字节

CRC

高字节

CRC

低字节

从机回信数据帧:

地址

04

数据

字节数

数据1

高字节

数据1

低字节

。。。。。。

数据n

高字节

数据n

低字节

CRC

高字节

CRC

低字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

——起始地址:双字节,要读取寄存器的起始地址,此数据要求比实际的数据地址小1;

——数据量:双字节,1~128;

——数据字节量:2~256间的偶数;

——数据:FCS900发送给主机的数据,双字节无符号整数,高位在前,低位在后;

——CRC:双字节CRC校验码。

支持MODBUS功能码03H、04H的FCS900模块有FCS911、FCS912、FCS913、FCS914、FCS915、FCS921、FCS922、FCS952、FCS953和FCS954。

FCS911、FCS912、FCS913、FCS914、FCS915一线通模块116通道采集结果对应的寄存器地址分别为116,起始寄存器地址和数据量范围在116之间,超过该范围一线通模块可能拒绝响应。

FCS921、FCS922一线通模块支持03、04功能码,所有8通道的输出数据,可以用03、04功能码以读出,FCS921、FCS922一线通模块18通道对应的输出寄存器地址分别为18,超过该范围一线通模块可能拒绝响应。

FCS952一线通模块18通道采集结果对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS953一线通模块114通道采集结果对应的寄存器地址分别为114,起始寄存器地址和数据量范围在114之间,超过该范围一线通模块可能拒绝响应。

FCS954一线通模块18通道采集结果对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

MODBUS功能码05H

功能码5是单一通道数字量输出命令,通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(一线通模块地址)、数据的寄存器地址、数据和本次数据帧的CRC校验。FCS900一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,FCS900一线通模块不作响应;若地址相同且CRC校验结果正确,FCS900一线通模块发送“从机回信数据帧”。

主机发信数据帧:

地址

05

数据地址

高字节

数据地址

低字节

数据

高字节

数据

低字节

CRC

高字节

CRC

低字节

从机回信数据帧(FCS941回信数据帧):

地址

05

数据地址

高字节

数据地址

低字节

数据

高字节

数据低字节

CRC

高字节

CRC

低字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

——数据地址:双字节,输出寄存器地址,此数据要求比实际的数据地址小1;

——数据:双字节,数据为零时,使出输出接点断开;数据非零时,输出接点闭合。

——CRC:双字节CRC校验码。

支持MODBUS功能码05H的FCS900模块有FCS941、FCS942、FCS951、FCS953、FCS954。

FCS941一线通模块116输出通道对应的寄存器地址分别为116,起始寄存器地址和数据量范围在116之间,超过该范围一线通模块可能拒绝响应。

FCS942一线通模块18输出通道对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS951一线通模块18输出通道对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS953、FCS954一线通模块1516输出通道对应的寄存器地址分别为1516,起始寄存器地址和数据量范围在1516之间,超过该范围一线通模块可能拒绝响应。

MODBUS功能码06H

功能码6是单一通道模拟量输出命令,通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(FCS900一线通模块地址)、数据的寄存器地址、数据数值和本次数据帧的CRC校验。FCS900一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,FCS900一线通模块不作响应;若地址相同且CRC校验结果正确,FCS900一线通模块发送“从机回信数据帧”,向主机发送应答帧。

主机发信数据帧:

地址

06

数据地址

高字节

数据地址

低字节

数据

高字节

数据

低字节

CRC

高字节

CRC

低字节

从机回信数据帧:

地址

06

数据地址

高字节

数据地址

低字节

数据

高字节

数据

低字节

CRC

高字节

CRC

低字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

——数据地址:双字节,输出寄存器地址,此数据要求比实际的数据地址小1。

——数据:双字节,即模拟量输出值。

——CRC:双字节CRC校验码。

支持MODBUS功能码06H的FCS900模块有FCS921、FCS922。

FCS921一线通模块18通道对应的输出寄存器地址分别为18,模拟量输出值在0255之间,对应电流输出为020mA,超过该范围一线通模块可能拒绝响应。

FCS922一线通模块18通道对应的输出寄存器地址分别为18,模拟量输出值在0255之间,对应电压输出为05V,超过该范围一线通模块可能拒绝响应。

MODBUS功能码0FH

功能码0FH是成组数字量输出命令,通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(FCS900一线通模块地址)、数据的寄存器地址、数据数值和本次数据帧的CRC校验。FCS900一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,FCS900一线通模块不作响应;若地址相同且CRC校验结果正确,FCS900一线通模块发送“从机回信数据帧”,向主机发送应答帧。

主机发信数据帧:

地址

0F

数据地址

双字节

数据量

双字节

数据

字节量

数据1

数据2

数据N

CRC

双字节

从机回信数据帧:

地址

0F

数据地址

双字节

数据量

双字节

CRC

双字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

—— 数据地址:双字节,输出寄存器地址,此数据要求比实际的数据地址小1;

——字节量:单字节,后面数据的字节数量。

——数据:低位低寄存器地址。。

——CRC:双字节CRC校验码。

支持MODBUS功能码05H的FCS900模块有FCS941、FCS942、FCS951、FCS953、FCS954。

FCS941一线通模块116输出通道对应的寄存器地址分别为116,起始寄存器地址和数据量范围在116之间,超过该范围一线通模块可能拒绝响应。

FCS942一线通模块18输出通道对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS951一线通模块18输出通道对应的寄存器地址分别为18,起始寄存器地址和数据量范围在18之间,超过该范围一线通模块可能拒绝响应。

FCS953、FCS954一线通模块1516输出通道对应的寄存器地址分别为1516,起始寄存器地址和数据量范围在1516之间,超过该范围一线通模块可能拒绝响应。

MODBUS功能码10H

功能码10H是成组模拟量输出命令(AO)。通讯首先由MODBUS主机设备发送“主机发信数据帧”,指明通讯对象的从机地址(FCS900一线通模块地址)、数据的寄存器地址、数据数值和本次数据帧的CRC校验。FCS900一线通模块接收到“主机发信数据帧”后,判断从机地址是否与本机地址相同以及CRC校验是否出错,若地址不同或CRC出错,FCS900一线通模块不作响应;若地址相同且CRC校验结果正确,FCS900一线通模块发送“从机回信数据帧”,向主机发送应答帧。

主机发信数据帧:

地址

10

数据地址

双字节

数据量

双字节

字节量

数据1

双字节

数据2

双字节

数据N

双字节

CRC

双字节

从机回信数据帧:

地址

10

数据地址

双字节

数据量

双字节

CRC

双字节

——地址:网络中的从机地址,即FCS900模块的地址编号,参见“一线通模块设置”章节。

—— 数据地址:双字节,输出寄存器地址,此数据要求比实际的数据地址小1;

——字节量:单字节,后面数据的字节数量。

——数据:双字节,即模拟量输出值。

——CRC:双字节CRC校验码。

支持MODBUS功能码10H的FCS900模块有FCS921、FCS922。

FCS921一线通模块18通道对应的输出寄存器地址分别为18,模拟量输出值在0255之间,对应电流输出为020mA,超过该范围一线通模块可能拒绝响应。

FCS922一线通模块18通道对应的输出寄存器地址分别为18,模拟量输出值在0255之间,对应电压输出为05V,超过该范围一线通模块可能拒绝响应。

自由口通讯

FCS900一线通模块支持自由通讯口通讯协议,方便用户自由编程。参照MODBUS命令格式,FCS900模块支持7种自由通讯命令,MODBUS数据格式完全相同,FCS900自动识别MODBUS协议和自由口通讯协议,不需设置。

MODBUS协议与自由口通讯只有命令码和校验方式不同。MODBUS协议采用双字节CRC错误校验,在自由通讯口编程时错误校验采用双字节累加和校验,即将校验字节之前的所有单字节数据相加,所得双字节结果即是累加和校验。注意:累加时保留进位位。

MODBUS通讯协议命令与自由口通讯命令对照:

MODBUS命令码

自由口命令码

功能描述

02H

C2H

成组读取一线通模块的数字量输入信号状态(DI)。

03H

C3H

成组读取一线通模块的模拟量输入信号(AI)。

04H

C4H

成组读取一线通模块的模拟量输入信号(AI)。

05H

C5H

设置一线通模块的单一输出线圈的状态(DO)

06H

C6H

设置一线通模块的单一模拟量存储器内容(AO)

0FH

CFH

成组设置一线通模块的数字量输入信号状态(DO)

10H

D0H

成组设置一线通模块的模拟量输出信号状态(AO)

自由通讯功能码C2H(参见MODBUS功能码02H)

主机发信数据帧:

地址

C2

起始地址

高字节

起始地址

低字节

数据量

高字节

数据量低字节

累加和

高字节

累加和

低字节

从机回信数据帧:

地址

C2

数据字节数

数据1

数据2

。。。。。。

数据n

累加和

高字节

累加和

低字节

 

自由通讯功能码C4H、C5H、C6H、CFH、D0H与上述类似,参见MODBUS的对应功能码。

自由通讯编程实例

通过自由口编程,上位机读取#2地址FCS911模块的1~3通道的模拟量采集数据,采用C4H功能码,上位机按照下述组织数据:

地址=02H;

命令吗=C4H;

数据地址H=00H;

数据地址L=00H;(比实际地址小1)。

数据量H=00H;

数据量L=03H;

累加和H=00H;

累加和L=C9H;(累加和:02H+C4H+00H+00H+00H+03H=00C9H)。

按上述数据,上位机发送数据帧02H、C4H、00H、00H、00H、03H、00H、C9H,#2模块FCS911接收到命令并验证无误后,发送下面的回信数据帧。(假设1~3通道的采集数据分别为139、240、360。)

回信数据帧:02H、C4H、06H、00H、8BH、00H、F0H、01H、68H、02H、B0H。

地址=02H;

命令吗=C4H;

数据字节=06H;

数据1H=00H;

数据1L=8BH;(139)

数据2H=00H;

数据2L=F0H;(240)

数据3H=01H;

数据3L=68H;(360)

累加和H=02H;

累加和L=B0H;(累加和:02H+84H+06H+00H+8BH+00H+F0H+01H+68H=02B0H)。

其他命令格式类似。

 




玖阳易通版权所有 ©2009-2015

                                            京ICP备09058998号

                                            北京玖阳易通自动化科技有限公司

                                            北京市通州区新华西街56号通州商业大厦6-2

                                            电话:010-52118180   传真:010-52118190

                                            邮箱:fcs900@163.com 邮编:101100

                                           


京ICP备09058998号