西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx
《西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西门子200SMART Modbus RTU 通讯教程(详解版)Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
可选1200,2400,4800,9600,19200,38400,57600,115200
4.奇偶校验:
0=无校验;
1=奇校验;
2=偶校验
5.端口:
0=CPU中集成的
RS-485,1=可选信号板上的RS-485
或
RS-232。
6.延时:
附加字符间延时,缺省值为0
7.最大I/Q位:
参与通信的最大I/O点数,S7-200SMART
的I/O映像区为256/256(但目前只能最多连接4个扩展模块,因此目前最多I/O点数为188/188)
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-
数字量输入