西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx
- 文档编号:221760
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:14
- 大小:269.02KB
西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx
《西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx(14页珍藏版)》请在冰点文库上搜索。
8.最大AI字数:
参与通信的最大AI通道数,最多56个
9.最大保持寄存器区:
参与通信的V存储区字(VW)
10.保持寄存器区起始地址:
以&
VBx指定(间接寻址方式)
11.初始化完成标志:
成功初始化后置1
12.初始化错误代码
13.Modbus执行:
通信中时置1,无
Modbus
通信活动时为
0。
14.错误代码:
0=无错误
3.在CPU的V数据区中分配库指令数据区(LibraryMemory)
ModbusSlave
指令库需要一个781个字节的全局
V
存储区。
调用STEP7-Mciro/WINSMARTInstructionLibrary(指令库)需要分配库指令数据区(LibraryMemory)。
库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
操作步骤:
1)在指令树的Project(项目)中,以鼠标右键单击ProgramBlock(程序块),在弹出的快捷菜单中选择LibraryMemory。
如图3所示:
图3.“库存储器”
按钮
2)在弹出的选项卡中设置库指令数据区,如图4所示:
图4.
缺省情况下是从VB0开始,但要保证该存储器使用地址范围与其他程序使用的地址不能有重叠。
按“建议地址”按钮也可以自动分配。
4.如有必要,使用主站软件测试。
注意:
由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200SMARTCPU的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。
注意Modbus
中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。
在图2的例子中,规定了
保持寄存器区从
VB1000
开始(HoldStart
=
VB1000),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB1000~VB2999共2000个字节。
因此分配库指令保留数据区时至少要避开
VB1000~VB2999
区间。
你选用的CPU的V存储区大小!
CPU型号不同V数据存储区大小不同。
应根据需要选择Modbus保持寄存器区域的大小。
包含
从站指令库的项目编译、下载到CPU中后,在编程计算机(PG/PC)上运行一些
测试软件可以检验S7-200SMARTCPU的ModbusRTU通信是否正常,这对查找故障点很有用。
测试软件通过计算机串口(RS-232)和PC/PPI电缆连接CPU。
如果必要,须将PC/PPI电缆设置在自由口通信方式。
可到一些软件下载网站寻找类似软件,如
ModScan32
等。
从站地址与S7-200SMART
的地址对应
Modbus地址总是以00001、30004之类的形式出现。
S7-200SMARTCPU内部的数据存储区与Modbus的0、1、3、4共4类地址的对应关系如下:
表1.Modbus地址对应表
Modbus地址
S7-200SMART
数据区
00001~00256
Q0.0~Q31.7
10001~10256
I0.0~I31.7
30001~30056
AIW0~AIW110
40001~4xxxx
T~T+2*(xxxx-1)
其中T为S7-200SMART
CPU中的缓冲区起始地址,即
HoldStart。
如果已知S7-200SMARTCPU中的V存储区地址,推算Modbus地址的公式如下:
Modbus地址
=40000+(T/2+1);
T为偶数
从站指令库支持的
功能码
从站指令库支持特定的
功能。
访问使用此指令库的主站必须遵循这个指令库的要求。
表
2.ModbusRTU
从站功能码
主站使用相应功能码作用于此从站的效用
1
读取单个/多个线圈(离散量输出点)状态。
功能
1
返回任意个数输出点(Q)的
ON/OFF
状态。
2
读取单个/多个触点(离散量输入点)状态。
2
返回任意个数输入点(I)的
3
读取单个/多个保持寄存器。
3
返回
存储区的内容。
在
协议下保持寄存器都是“字”值,在一次请求中可以读取最多
120
个字的数据。
4
读取单个/多个输入寄存器。
4
的模拟量数据值。
5
写单个线圈(离散量输出点)。
5
用于将离散量输出点设置为指定的值。
这个点不是被强制的,用户程序可以覆盖
通信请求写入的值。
6
写单个保持寄存器。
6
写一个值到
的
存储区的保持寄存器中。
15
写多个线圈(离散量输出点)。
15
把多个离散量输出点的值写到
的输出映像寄存器(Q
区)。
输出点的地址必须以字节边界起始(如
Q0.0
Q2.0),并且输出点的数目必须是
8
的整数倍。
这是此
从站指令库的限制。
些点不是被强制的,用户程序可以覆盖
16
些多个保持寄存器。
16
写多个值到
在一次请求中可以写最多
二、基本步骤(200smart做主站):
西门子在
STEP7-Micro/WINSMART
中正式推出
主站协议库(西门子标准库指令)。
图
1.
西门子标准指令库(STEP7-Micro/WINSMART)
1.ModbusRTU
主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库对
信号板有效。
该指令库将设置通信口工作在自由口模式下。
主站指令库使用了一些用户中断功能,编其他程序时不能在用户程序中禁止中断。
3.ModbusRTU
主站指令库可以同时应用于CPU
CM01
信号板,此时集成的RS485口使用ModbusRTUMaster(v2.0)中指令,CM01信号板使用ModbusRTUMaster2(v2.0)中指令,如果只有一个主站则不做区分。
使用
主站指令库,可以读写
从站的数字量、模拟量
I/O
以及保持寄存器。
主站功能编程
调用
主站初始化和控制子程序
SM0.0
MBUS_CTRL
完成主站的初始化,并启动其功能控制:
2.
用
主站初始化与控制子程序
各参数意义如下:
a.
EN
使能:
必须保证每一扫描周期都被使能(使用
SM0.0)
b.
Mode
模式:
为
时,使能
协议功能;
0
时恢复为系统
PPI
协议
c.
Baud
波特率:
支持的通讯波特率为1200,2400,4800,9600,19200,38400,57600,115200。
d.
Parity
校验:
校验方式选择
0=无校验
1=奇较验
2=偶较验
e.
Port
端口号:
0=
;
1=
信号板
。
f.
Timeout
超时:
主站等待从站响应的时间,以毫秒为单位,典型的设置值为
1000
毫秒(1
秒),允许设置的范围为
1-32767。
这个值必须设置足够大以保证从站有时间响应。
g.
Done
完成位:
初始化完成,此位会自动置1。
可以用该位启动
MBUS_MSG
读写操作(见例程)
h.
Error
初始化错误代码(只有在
Done
位为1时有效):
0=
无错误
1=
校验选择非法
2=
波特率选择非法
3=
超时无效
4=
模式选择非法
9=
端口无效
10=
信号板端口
缺失或未组态
主站读写子程序MBUS_MSG,发送一个Modbus
请求;
3.
调用ModbusRTU
主站读写子程序
同一时刻只能有一个读写功能(即
MBUS_MSG)使能
建议每一个读写功能(即
MBUS_MSG)都用上一个
指令的
完成位来激活,以保证所有读写指令循环进行(见例程)。
First
读写请求位:
每一个新的读写请求必须使用脉冲触发
Slave
从站地址:
可选择的范围
1-247
RW
读写请求:
读,
写
数字量输出和保持寄存器支持读和写功能
数字量输入和模拟量输入只支持读功能
Addr
读写从站的
选择读写的数据类型
数据地址:
00001
至
0xxxx-
数字量输出
10001
1xxxx-
数字量输入
30001
3xxxx-
模拟量输入
40001
4xxxx-
保持寄存器
Count
数据个数
通讯的数据个数(位或字的个数)
Modbus主站可读/写的最大数据量为120个字(是指每一个
指令)
DataPtr
数据指针:
如果是读指令,读回的数据放到这个数据区中
如果是写指令,要写出的数据放到这个数据区中
完成位
读写功能完成位
i.
错误代码:
只有在
位为1时,错误代码才有效
响应校验错误
未用
接收超时(从站无响应)
请求参数错误(slaveaddress,Modbusaddress,count,RW)
Modbus/自由口未使能
Modbus正在忙于其它请求
7
响应错误(响应不是请求的操作)
响应CRC校验和错误
-
101
从站不支持请求的功能
102
从站不支持数据地址
103
从站不支持此种数据类型
104
从站设备故障
105
从站接受了信息,但是响应被延迟
106
从站忙,拒绝了该信息
107
从站拒绝了信息
108
从站存储器奇偶错误
常见的错误:
∙如果多个
指令同时使能会造成
号错误
∙从站
delay
参数设的时间过长会造成主站
∙从站掉电或不运行,网络故障都会造成主站
数据区中为库指令分配存储区(LibraryMemory)
ModbusMaster
指令库需要一个286个字节的全局
如图4所示:
图4.“库存储器”按钮
2)在弹出的选项卡中设置库指令数据区,如图5所示:
图5.
可以使用
“建议地址”
设置数据区,但要注意编程软件设置的数据区地址,只考虑到了其他一般寻址,而未考虑到诸如Modbus数据保持寄存器区等的设置。
应当确保不与其他任何已使用的数据区重叠、冲突。
不应重复按
按钮,否则也会造成混乱。
关于
主站协议库的补充说明
地址
通常
地址由
位数字组成,包括起始的数据类型代号,以及后面的偏移地址。
协议库把标准的
地址映射为所谓
功能号,读写从站的数据。
协议库支持如下地址:
∙00001-09999:
数字量输出(
线圈)
∙10001-19999:
数字量输入(触点)
∙30001-39999:
输入数据寄存器(通常为模拟量输入)
∙40001-49999:
数据保持寄存器
协议库支持的功能
为了支持上述
地址的读写,ModbusMaster
协议库需要从站支持下列功能:
需要从站支持的功能
读/写
从站须支持的功能
00001-09999
读
5:
写单输出点
15:
写多输出点
10001-19999
-
30001-39999
输入寄存器
40001-49999
6:
写单寄存器单元
16:
写多寄存器单元
地址和
存储区地址的映射
通过
Slave
协议库通信时,Modbus
S7-200SMARTCPU内存储区地址的
映射关系都类似。
保持寄存器地址映射举例:
保持寄存器地址
40001
1234
40002
5678
40003
9ABC
存储区字寻址
VW200
VW202
VW204
存储区字节寻址
VB200
12
VB201
34
VB202
56
VB203
78
VB204
9A
VB205
BC
数字量地址映射举例:
位地址(0xxxx
1xxxx)数据总是以字节为单位打包读写。
第一个字节中的最低有效位对应
地址的起始地址。
如下图所示:
图6.
数字量地址映射举例
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西门子200SMART Modbus RTU 通讯教程详解版 西门子 200 SMART 通讯 教程 详解