但你给出的地址似乎有问题,设备的地址一般不会用十六进制,应该是30002和30003地址,你再仔细看下设备手册。
以下是从
30002地址读取2个16位字的命令。
01
04
00
02
00
02
d0
0b
其中,
01是从机地址
04是读取输入寄存器指令,注意输入寄存器从30001开始编址。
0002
是从第2个地址开始读,即从30002开始读。
0002
是读取2个字,即30002和30003。
d00b
是校验字。
使用 RECV 、SEND指令和MDOBUS 是两种不同的通讯协议
可以提供 S7-200 S7-200SMART S7-1200 PLC 的Modbus 通讯例程,负责编程讲解,远程调试。
年发明的一种工业控制总线协议,是全球第一个真正用于工业现场的总线协议。Modbus
以其简单、健壮、开放而且不需要特许授权的特点,成为通用通信协议。为了适应以太网环境,Modbus 被封装在 TCP 包中,并且在默认情况下通过 TCP 协议的
502 端口进行传输。
基于 Modbus
协议的系统由带智能终端的可编程逻辑控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件,又包括软件。可应用于各种数据采集和过程监控。
Modbus 协议采用主 - 从结构,为客户机和服务器之间提供通信连接。
Modbus 协议定义了一个与基础通信无关的协议数据单元(Protocol Description Unit,PDU),描述协议的基本功能。PDU
属于应用数据单元(Application Data Unit,ADU)的一部分,除此之外,ADU
还包括附加地址域和差错校验域及实际传输的数据,这个数据可能是业务数据,也可能是指令、响应信息或报警信息等。
Modbus 协议包括 ASCII、RTU、TCP 三种报文类型,可以使用串口传输数据和指令。Modbus
基于串口;
Modbus Plus
基于网络
,
它有四层
:Modbus
、
LLC
、
MAC
、
HDLC
;
通信方式:
ASCII
(每个八位字节用
2
个
ASCII
码表示,如
128
,表示成‘
8
’和‘
0
’
,
LRC
校验)
、
RTU
(二进制,
CRC
校验)
;
报文格式:
(
RTU
方式)
35 characters time
延时、地址(
1
字节)
、功能码(
1
字节)
、数据(
n
字节)
、
CRC
(
2
字
节)
、
35 characters time
延时;
主站发送报文间隔时间
>35 characters time
,否则认为是一封报文;
Query
和
Response
格式一样
;
Query
读
, Response
:所要数据
;
Query
写
, Response
:前
6
个字节与
Query
一样;
寄存器起始地址、
个数和数据
:
高字节在前、
低字节在后;
而
CRC
是低字节在前、
高字节在后
串行字节格式:
启动(
1
位)
、数据(
8
位)
、停止(
2
位)
;
或启动(
1
位)
、数据(
8
位)
、奇
/
偶(
1
位)
、停止(
1
位)
;
地址:
0~247
,
0
:广播;
寄存器号
=
实际号
-1
,每种类型寄存器的高位不变号作为隐含可不表示;
Slave device
对
Query
的处理:
⑴未收到
Query
,
no response;
⑵收到
Query
但校验错,
no response;
⑶正确收到
Query
但不能处理,
Exception response;
Exception response
格式:
地址
(
1
字节)
、
原功能码
+80H
(
1
字节)
、
Exception
Code
(
1
字节)
、
CRC
(
2
字节)
Exception
Code
见
P103/121
⑷正确收到
Query
且能处理,
normal response;
功能码
01~24
,见
P31/121~
;
其中
08
为
diagnostic function code,
详见
P81/121
;
08
码
Query
格式:地址(
1
字节)
、功能码(
1
字节)
、
Subfunction Code(1
个字节
)
、数据、
CRC
(
2
字节)
;
最大参数见
P106/121~
;
收发时间估算:
P112/121~
;
CRC/LRC
计算:
P115/121~
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)