西门子Modbus-RTU通信.pdf

上传人:tbuqq 文档编号:5554147 上传时间:2020-06-06 格式:PDF 页数:25 大小:2.05MB
返回 下载 相关 举报
西门子Modbus-RTU通信.pdf_第1页
第1页 / 共25页
西门子Modbus-RTU通信.pdf_第2页
第2页 / 共25页
西门子Modbus-RTU通信.pdf_第3页
第3页 / 共25页
西门子Modbus-RTU通信.pdf_第4页
第4页 / 共25页
西门子Modbus-RTU通信.pdf_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《西门子Modbus-RTU通信.pdf》由会员分享,可在线阅读,更多相关《西门子Modbus-RTU通信.pdf(25页珍藏版)》请在三一文库上搜索。

1、S7-200 Modbus RTU 通信 关键字 库文件 RS485 网络主站:编程地址错误例程 从站: 编程地址错误例程 S7-200 Modbus RTU 通信简介 Modbus 是公开通信协议,具有两种串行传输模式,ASCII 和 RTU。详细的协 议和规范,请访问Modbus 组织的网站: S7-200 通过以下方式支持Modbus RTU 通信协议: ?S7-200 CPU 上的通信口0(Port 0 )通过指令库支持Modbus RTU 从站模式 ?S7-200 CPU 上的通讯口0 和 1 (Port 0 和 Port 1)通过指令库 支持 Modbus RTU 主站模式 在 S

2、7-200 CPU 通信口上实现的是RS485 半双工通信, 使用的是 S7-200 的 自由口功能。 通过 S7-200 CPU 通信口的自由口模式实现Modbus 通信协议,可以通过无 线数据电台等慢速通信设备传输。这为组成S7-200 之间的简单无线通信网络 提供了便利。 详细情况请参考 S7-200 系统手册( 2002 年 10 月或以后版本)的相应章 节。 常问问题 S7-200 是否支持Modbus ASCII 通信模式? 西门子不提供支持上述模式的的现成指令库,需要用户自己用自由口模式编程。 目录 1 Modbus RTU 主站 1.1 主站指令库 1.2 主站功能编程 1.3

3、 主站协议及地址 1.4 主站例程 1.5 主站常问问题 2 Modbus RTU 从站 2.1 CPU 上的通信口( Port0)支持 Modbus RTU 从站通信协议 2.2 从站编程基本步骤 2.3 从站地址与 S7-200 的地址对应 2.4 从站指令库支持的功能码 2.5 从站例程 2.6 从站常见问题 3 STEP 7-Micro/WIN 的标准指令库 3.1 分配库指令数据区 3.2 添加指令库 3.3 删除库指令 4 RS-485 网络 4.1 S7-200 系统中的 RS-485 通信 5 RS-485 网络的硬件组成 5.1 连接网络连接器 5.2 网络连接器 5.3 线

4、型网络结构 5.4 终端电阻和偏置电阻 6 扩展阅读 6.1 扩展阅读 1Modbus RTU主站 1.1 Modbus RTU 主站指令库 西门子在Micro/WIN V4.0 SP5 中正式推出Modbus RTU 主站协议库(西门子 标准库指令)。 图 1. 西门子标准指令库( Micro/WIN V4.0 SP5 ) 注意 ?1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的 程序功能块实现的, 该库对 Port 0 和 Port 1 有效。该指令库将设置通信 口工作在自由口模式下。 ?2. Modbus RTU 主站指令库使用了一些用户中断功能,编其他程序时

5、不 能在用户程序中禁止中断。 ?3. Modbus RTU 主站库对 CPU 的版本有要求。 CPU 的版本必须为2.00 或者 2.01(即订货号为6ES721* *23-0BA* ),1.22 版本之前(包括 1.22 版本)的S7-200 CPU 不支持。 使用 Modbus RTU 主站指令库,可以读写Modbus RTU 从站的数字量、模拟 量 I/O 以及保持寄存器。 要使用 Modbus RTU 主站指令库,须遵循下列步骤: ?1.安装西门子标准指令库 ?2.按照要求编写用户程序调用Modubs RTU 主站指令库 安装西门子标准指令库 1.2 Modbus RTU 主站功能编程

6、 1. 调用 Modbus RTU 主站初始化和控制子程序 使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制: 图 2. 用 SM0.0 调用 Modbus RTU 主站初始化与控制子程序 各参数意义如下 : a. EN 使能:必须保证每一扫描周期都被使能(使用SM0.0 ) b. Mode 模式: 为 1 时, 使能 Modbus 协议功能;为 0 时恢复为系统PPI 协议 c. Baud 波特率: 支持的通讯波特率为1200,2400,4800 ,9600 ,19200 , 38400,57600,115200 。 d. Parity 校验:校验方式选择 0无

7、校验 1奇较验 2偶较验 e. Timeout 超时: 主站等待从站响应的时间,以毫秒为单位,典型的设置值为 1000 毫秒( 1 秒),允许设置的范围为1 - 32767 。 注意: 这个值必须设置足够大以保证从站有时间响应。 f. Done 完成位: 初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作(见例程) g. Error 初始化错误代码(只有在Done 位为 1 时有效): 0 无错误 1 校验选择非法 2 波特率选择非法 3 模式选择非法 2. 调用 Modbus RTU 主站读写子程序MBUS_MSG ,发送一个 Modbus 请 求; 图 3. 调用 Mo

8、dbus RTU 主站读写子程序 各参数意义如下 : a. EN 使能:同一时刻只能有一个读写功能(即MBUS_MSG )使能 注意:建议每一个读写功能(即MBUS_MSG )都用 上一个 MBUS_MSG 指令的 Done 完成位来激活,以 保证所有读写指令循环进行(见例程)。 b. First 读写请求位: 每一个新的读写请求必须使用脉冲触发 c. Slave 从站地址:可选择的范围1 - 247 d. RW 从站地址:0 读, 1 写 注意: 1. 开关量输出和保持寄存器支持读和写功能 2. 开关量输入和模拟量输入只支持读功能 e. Addr 读写从站的数据地址: 选择读写的数据类型 0

9、0001 至 0xxxx - 开关量输出 10001 至 1xxxx - 开关量输入 30001 至 3xxxx - 模拟量输入 40001 至 4xxxx - 保持寄存器 f. Count 数据个数通讯的数据个数(位或字的个数) 注意: Modbus 主站可读 /写的最大数据量为 120 个 字(是指每一个MBUS_MSG 指令) g. DataPtr 数据指针:1. 如果是读指令,读回的数据放到这个数据区中 2. 如果是写指令,要写出的数据放到这个数据区中 h. Done 完成位读写功能完成位 i. Error 错误代码:只有在 Done 位为 1 时,错误代码才有效 0 无错误 1 响应

10、校验错误 2 未用 3 接收超时(从站无响应) 4 请求参数错误( slave address, Modbus address, count, RW ) 5 Modbus/ 自由口未使能 6 Modbus 正在忙于其它请求 7 响应错误(响应不是请求的操作) 8 响应 CRC 校验和错误 - 101 从站不支持请求的功能 102 从站不支持数据地址 103 从站不支持此种数据类型 104 从站设备故障 105 从站接受了信息,但是响应被延迟 106 从站忙,拒绝了该信息 107 从站拒绝了信息 108 从站存储器奇偶错误 常见的错误: ?如果多个MBUS_MSG 指令同时使能会造成6 号错误

11、?库存储区被程序其它地方复用,有时也会造成6 号错误 ?从站 delay 参数设的时间过长会造成主站3 号错误 ?从站掉电或不运行,网络故障都会造成主站3 号错误 3. 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory) Modbus Master 指令库需要一个 284 个字节的全局V 存储区。 参考: 分配库指令数据区 1.3 关于 Modbus RTU 主站协议及地址 此为西门子正式推出的标准库指令说明资料。 在 Modbus RTU Master 协议和 PPI 协议之间切换: Modbus RTU Master 协议指令库使通信口工作在自由口模式下,此时不

12、能与 Micro/WIN 软件通信。要在切换回PPI 协议,可以: ?将 MBUS_CTRL 指令的 Mode 输入端设置为逻辑 “0“ ?将 CPU 的允许模式选择开关置为STOP 位置 Modbus RTU Master 协议库的执行时间: Modbus RTU Master 协议库的MBUS_CTRL 指令不需要很长的执行时间。 MBUS_ 需要 1.11 ms 用于初始化,在后续的每个扫描周期中只占用0.41 ms 。 调用 MBUS_MSG 子程序会加长处理时间。 大部分时间都用于CRC 校验的计 算。每读、写一个字的数据就需要1.85 ms 扫描时间。数据最多的情况下 (读、 写

13、120 字的数据),扫描时间大概会扩增加222 ms 。读操作的时间主要消耗 在接收数据上;写操作的时间主要消耗在发送数据上。 Modbus 地址 通常 Modbus 地址由 5 位数字组成,包括起始的数据类型代号,以及后面的 偏移地址。Modbus Master 协议库把标准的Modbus 地址映射为所谓Modbus 功能号,读写从站的数据。Modbus Master 协议库支持如下地址: ?00001 - 09999 :数字量输出(线圈) ?10001 - 19999 :数字量输入(触点) ?30001 - 39999 :输入数据寄存器(通常为模拟量输入) ?40001 - 49999 :

14、数据保持寄存器 Modbus Master 协议库支持的功能 为了支持上述Modbus 地址的读写,Modbus Master 协议库需要从站支持下列 功能: 表 1. 需要从站支持的功能 Modbus 地址读/写Modbus 从站须支持的功能 00001 - 09999 数字量输出 读功能 1 写 功能 5:写单输出点 功能 15:写多输出点 10001 - 19999 数字量输入 读功能 2 写 30001 - 39999 输入寄存器 读功能 4 写 40001 - 49999 保持寄存器 读功能 3 写 功能 6:写单寄存器单元 功能 16:写多寄存器单元 Modbus 地址和S7-20

15、0 存储区地址的映射 S7-200 通过 Modbus Master 和 Slave 协议库通信时, Modbus 地址和 S7-200 内存储区地址的映射关系都类似。 Modbus 保持寄存器地址映射举例: Modbus 数字量地址映射举例: 位地址( 0xxxx 和 1xxxx )数据总是以字节为单位打包读写。第一个字节中的 最低有效位对应Modbus 地址的起始地址。如下图所示: 图 4. 数字量地址映射举例 1.4 Modbus RTU 主站例程 为了更好地理解Modbus 主站的编程,可参考下面的例程。 例子程序 1: 多个 MBUS_MSG 指令轮询执行, 注意 ?1. 该例程使用

16、Micro/WIN V4.0 SP5 保存。 ?2. 该例程仅访问一个从站, 若访问不同的从站, 可通过改变从站地址来实 现。 Modbus RTU 主站指令库应用例程 例子程序 2:反复激活单个MBUS_MSG 指令: Modbus RTU 主站变址方式轮询访问应用例程 注意: 此指令库 /程序的作者和拥有者对于该软件的功能性和兼容性不负任何 责任。使用该软件的风险完全由用户自行承担。由于它是免费的, 所以不提供任 何担保, 错误纠正和热线支持, 用户不必为此联系西门子技术支持与服务部门。 1.5 Modbus RTU 主站常问问题 Modbus RTU 主站库对CPU 的版本是否有要求,为

17、什么编译例子程序时, 会遇到 4 个错误? Modbus RTU 主站库对CPU 的版本确实有要求, CPU 的版本必须为2.00 或 者 2.01(即订货号为 6ES721* *23-0BA*) , 1.22 版本之前 (包括 1.22 版本) 的 S7-200 CPU 不支持。 Modbus 指令库启动后,如何通过同一个通信端口进行CPU 监控? Modbus 指令库使用的是CPU 的自由口通信功能,工作在自由口模式下的通 讯口不能使用Micro/WIN 的 PPI 编程通信监控。如果通信口都已经被占用, 可以考虑: ?加一个通信模块(如EM 277 、CP 243-1 、EM 241 等

18、)扩展出一 个编程通信口 ?中止自由口模式,可以将CPU 上的模式开关从RUN 拨到 STOP ;或者保持处于RUN 状态,用程序停止指令库的Modbus 模式(参见指令库应用) 如何理解Modbus 地址与功能码的区别? Modbus 地址与 Modbus 的功能码是两个层次的概念。 根据 Modbus 通信协议, Modbus 数据的地址使用0xxxx、1xxxx 、3xxxx 和 4xxxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。在 使用 S7-200 的指令库时, Modbus 数据地址与S7-200 的 I/O 和数据存储区 地址间有特定的对应关系。 有些设备

19、表明它支持Modbus RTU 通信协议,但也详细提供了读写数据的详细 通信帧格式,其中包括如何指定Modbus 站的地址,需要读写数据类型、长度 等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容 即所谓 “功能码 “,如功能1 指定读取单个 /多个数字量输出点的值。 支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。 Modbus 地址所访问的数据,是通过各种“功能“读写而来。 功能码是Modbus 地址的底层。如果Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与Modbus 地址间

20、的对应 关系。 如何访问大于9999 的保持寄存器地址? 通常 Modbus 协议的保持寄存器地址范围在40001 - 49999 之间。对于多数应 用来说已经够了。但有些Modbus 从站把地址映射到保持寄存器区的地址超过 9999 的部分。 Modbus Master 协议库支持超过9999 的保持寄存器地址。地址范围为 400001 - 465536 。只需在调用MBUS_MSG 子程序时给Addr 参数赋相应的 值即可,如416768 。 Modubs Master 扩展地址模式仅支持保持寄存器区,不支持其 他地址类型。 S7-200 作为 Modbus 主站方接收上来的数据格式与第三

21、方设备不一样怎 么办? 西门子 PLC 数据的存储格式为高位低存方式。举例:VD200 中包含 VW200 和 VW202 ,其中 VW202 是低字, VW200 是高字。若第三方设备与西门子数据存 储格式不同, 是低位低存的方式, 那么通信上来的数据就会存在错误,需要进行 转换才能使用。编程的方式比较多样,针对双字中高低字的交换可以使用 SWAP( 字交换)指令,若是字节交换可以考虑循环移位指令。 S7-200 是否支持如Modbus TCP 等其它协议? 不支持。 S7-200 自身的通信端口或其通信扩展模块均不支持Modbus TCP 、 CANopen 、DeviceNet 以及 B

22、ACnet 通信协议。 为什么 S7-200 作 Modbus 主站时 MBUS_MSG 指令报 6 号错误? 引起 6 号错误主要有两方面的原因:1.多个 MBUS_MSG 指令同时使能执行; 2. Modbus 库存储区中分配的建议地址区与编程中已使用的V 存储区有重叠。 2Modbus RTU从站 2.1 CPU 上的通信口( Port0 )支持Modbus RTU 从站通信协议 S7-200 CPU 上的通信口 Port0 可以支持 Modbus RTU 协议, 成为 Modbus RTU 从站。此功能是通过S7-200 的自由口通信模式实现,因此可以通过无线数据电 台等慢速通信设备传

23、输。 详情请参考 S7-200 系统手册之相关章节。 要实现 Modbus RTU 通信,需要 STEP 7-Micro/WIN32 V3.2以上版本的编程软 件,而且须安装 STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。 Modbus RTU 功能是通过指令库中预先编好的程序功能块实现的。 Modbus RTU 从站指令库只支持CPU 上的通信 0 口 (Port0) 。 2.2 编程基本步骤: 检查 Micro/WIN 的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。 检查 Micro/WIN 的指令树中是否存在Mo

24、dbus RTU 从站指令库(图 1),库中 应当包括 MBUS_INIT 和 MBUS_SLAVE 两个子程序。如果没有,须安装 Micro/WIN32 V3.2的 Instruction Library (指令库)软件包; 图 1. 指令树中的库指令 编程时使用 SM0.1 调用子程序 MBUS_INIT 进行初始化,使用 SM0.0 调用 MBUS_SLAVE ,并指定相应参数。关于参数的详细说明,可在子程序的局部变 量表中找到; 图 2. 调用 Modbus RTU 通信指令库 图中参数意义如下: ?模式选择:启动 /停止 Modbus ,1=启动; 0=停止 ?从站地址: Modbu

25、s 从站地址,取值 1247 ?波特率:可选 1200, 2400, 4800, 9600 , 19200 , 38400 , 57600 , 115200 ?奇偶校验: 0=无校验; 1=奇校验; 2=偶校验 ?延时:附加字符间延时,缺省值为0 ?最大 I/Q 位: 参与通信的最大 I/O 点数, S7-200 的 I/O 映像区为 128/128 , 缺省值为 128 ?最大 AI 字数:参与通信的最大AI 通道数,可为 16 或 32 ?最大保持寄存器区:参与通信的V 存储区字( VW) ?保持寄存器区起始地址:以 T为偶数 2.4 Modbus RTU 从站指令库支持的功能码 Modb

26、us RTU 从站指令库支持特定的Modbus 功能。访问使用此指令库的主站 必须遵循这个指令库的要求。 表 3. Modbus RTU 从站功能码 功 能 码 主站使用相应功能码作用于此从站的效用 1 读取单个 /多个线圈(离散量输出点)状态。 功能 1 返回任意个数输出点 (Q) 的 ON/OFF 状态。 2 读取单个 /多个触点(离散量输入点) 状态。 功能 2 返回任意个数输入点 (I) 的 ON/OFF 状态。 3 读取单个 /多个保持寄存器。功能3 返回 V 存储区的内容。在Modbus 协 议下保持寄存器都是 “字“值,在一次请求中可以读取最多120 个字的数据。 4 读取单个

27、/多个输入寄存器。功能4 返回 S7-200 的模拟量数据值。 5 写单个线圈(离散量输出点)。功能5 用于将离散量输出点设置为指定的 值。这个点不是被强制的,用户程序可以覆盖Modbus 通信请求写入的值。 6 写单个保持寄存器。 功能 6 写一个值到S7-200 的 V 存储区的保持寄存器 中。 15 写多个线圈(离散量输出点)。功能15 把多个离散量输出点的值写到 S7-200 的输出映像寄存器 (Q 区)。 输出点的地址必须以字节边界起始(如 Q0.0 或 Q2.0),并且输出点的数目必须是8 的整数倍。这是此Modbus RTU 从站指令库的限制。些点不是被强制的,用户程序可以覆盖M

28、odbus 通信请求写入的值。 16 些多个保持寄存器。功能 16 写多个值到S7-200 的 V 存储区的保持寄存 器中。在一次请求中可以写最多120 个字的数据。 2.5 Modbus RTU 从站例程 Modbus RTU 从站例程 需要 STEP 7-Micro/WIN V4.0 SP3 以上版打开 2.6 Modbus RTU 从站常见问题 Modbus 从站的网络地址与S7-200 的 CPU 网络地址有什么关系? 没有关系。支持网络通信的通信协议必须有其自己的网络寻址规定。Modbus 从 站的地址只是它在Modbus 网络上的地址,而通常所说的S7-200 CPU 地址 是 C

29、PU 在西门子的PPI 网络上的站地址。 S7-200 CPU 的大部分通信功能都 通过 PPI 网络完成,例如编程、网络读写通信等。 如何理解Modbus 地址与功能码的区别? Modbus 地址与 Modbus 的功能码是两个层次的概念。 根据 Modbus 通信协议, Modbus 数据的地址使用00xxx、10xxx 、30xxx 和 40xxx 的形式,分别表示数字量输出、数字量输入、模拟量输入等数据地址。 在使用 S7-200 的指令库时,Modbus 数据地址与S7-200 的 I/O 和数据存储 区地址间有特定的对应关系。 有些设备表明它支持Modbus RTU 通信协议,但也

30、详细提供了读写数据的详细 通信帧格式,其中包括如何指定Modbus 站的地址,需要读写数据类型、长度 等等。数据帧有特定字节指出此指令读写的数据类型和地址,此字节的数据内容 即所谓 “功能码 “,如功能1 指定读取单个 /多个数字量输出点的值。 支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应当是 Modbus 数据地址。 Modbus 地址所访问的数据,是通过各种“功能“读写而来。 功能码是Modbus 地址的底层。如果Modbus 通信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此功能号与Modbus 地址间的对应 关系。 Modbus 指令库启动后,如

31、何通过同一个通信端口进行CPU 监控? Modbus 指令库使用的是CPU 的自由口通信功能,工作在自由口模式下的通 讯口不能使用Micro/WIN 的 PPI 编程通信监控。如果通信口都已经被占用, 可以考虑: ?加一个通信模块(如EM 277 、CP 243-1 、EM 241 等)扩展出一 个编程通信口 ?中止自由口模式,可以将CPU 上的模式开关从RUN 拨到 STOP ;或者保持处于RUN 状态,用程序停止指令库的Modbus 模式(参见指令库应用) 为何有些HMI 软件使用Modbus RTU 读取 S7-200 中的实数会出现错误? 有些 HMI 软件使用 Modbus RTU

32、通信协议时,处理存储在数据保持寄存器中的 实数(浮点数)的方式与西门子的实数保存格式不同。西门子的PLC 遵循“高字 节低地址、低字节高地址“的规律。 Modbus RTU 的保持寄存器总是以 “字(双字节) “为单位,而一个实数需要4 个 字节 (双字)表示。HMI 软件在处理时可能会把保持寄存器的两个“字“互换位置, 造成不能识别以西门子格式表示的实数。 如果 HMI 软件一方无法处理这种实数, 则可在 S7-200 CPU 中编程将存入数据缓冲区(保持寄存器区)的实数的高字 和低字互换。 为何有的 HMI 软件用 Modbus RTU 可以读取作为从站的S7-200 的内容,但 不能写入

33、? 可能此软件使用了Modbus 功能 15(写多个离散量)或类似功能(功能16)。 S7-200 从站协议遵守 “以整字节地址边界(如Q0.0、Q2.0)开始、以 8 的整数 倍为位个数 “的规约。如果 HMI 软件未严格执行此规律就可能发生写入错误的情 况。 S7-200 是否支持Modbus ASCII 模式? S7-200 可以支持上述模式,但是没有现成的指令库,需要用户自己编程。 项目编译后为何出现很多错误? 使用指令库时,若编译后出现很多错误,一般是因为未指定库指令数据存储区。 请参考 相关条目 。 S7-200 CPU 的 Port1 是否可以支持 Modbus RTU 协议?

34、可以。用户可以自己编程实现。 在 S7-200 的“Tips and Tricks“ 帮助文档中, Tip041 是 Modbus RTU 从站程序,用户可以参考。 S7-200 是否可以组成 Modbus RTU 通信网络?如何组网? S7-200 可以组成 RS-485 基础上的 Modbus RTU 网络。如果通信对象是不同标 准的通信口,可能还需要转换。 参见: RS-485 网络组成 3STEP 7-Micro/WIN 的标准指令库 STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,但在未安装西门子 Instruction Library 软件包的情况下,不能

35、显示出来使用。 要使用西门子的标准指令库, 必须先安装西门子的指令库软件包 Instruction Library 。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是最新的, 就能获得相应版本的新指令库。 安装 Micro/WIN 的升级包( Service Pack )也会更新指令库的版 本。 用户可以直接从下面获得西门子Instruction Library 软件安装包: Instruction Library 最新的 STEP 7-Micro/WIN V4.0 SP5 版本支持以下几种西门子标准指令库: ?USS 通信协议库: 可

36、使 CPU 通信口 Port0 和 Port 1 支持与 Micro-Master 3 (MM3 系列)和 Micro-Master 4(MM4 系列,如 MM420 、 MM430 、 MM440 等)、 SINAMICS G110系列的 USS 通信控制,通过一些预先编 好的子程序和中断程序, 以方便地控制变频器的运行和读写其参数。 Micro/WIN V4.0的 USS 指令库现在已经针对西门子的Master Drive 做了优化。 ?Modbus RTU Slave(从站)通信协议库: 可使 CPU 通信口 Port0 支持 Modbus RTU 从站通信功能。 ?Modbus RTU

37、 Master (主站)通信协议库 : 可使 CPU 通信口 Port 0 和 Port 1 支持 Modbus RTU 主站通 信功能。 以上通信协议库都是使用了S7-200 CPU 的自由口通信功能。 图 1. 西门子标准库以浅蓝色图标表示(Micro/WIN V4.0 SP5 ) 从以下两种途径可以获得STEP 7-Micro/WIN指令库: ?安装 STEP 7-Micro/WIN32 附加软件包 Instruction Library V1.1 ,订货号 6ES7830-2BC00-0YX0 。 ?已安装 STEP 7-Micro/WIN32 V3.1和 Toolbox V1.0(包

38、括为 TP070 配置 的 TP Designer 和老的指令库,订货号6ES7810-2TC00-0YX0 ),再 安装正式的 STEP 7-Micro/WIN32 V3.2(或 V4.0)版,也可自动获得 新的指令库。新旧版本的软件及其指令库可以在一台计算机上共存 (V4.0 的各升级包不能共存)。 注意: ?所有旧的 CPU21x 不能使用新的指令库 ?旧版本的指令库不能与新的指令库在同一个项目文件中共存 ?安装了新版本的指令库后,旧版本的指令库不再能够看到 ?用户自定义的指令库不能与西门子的库重名 有时因为系统和软件安装有问题,可能在安装完西门子标准指令 库后仍然不能看到西门子标准库。

39、这时可以尝试添加标准库。 标准 库的文件存在 Micro/WIN 安装目录下的 Standard Libs 目录下。 3.1 分配库指令数据区 调用 STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令 数据区(Library Memory )。库指令数据区是相应库的子程序和中断程序所要用 到的变量存储空间。 如果在编程时不分配库指令数据区,编译时会产生许多相同的错误 (错误 18)。 操作步骤(以 Modbus RTU 库指令为例): 在指令树的 Project (项目)中,以鼠标右键单击Program Block (程序块),

40、在弹出的快捷菜单中选择Library Memory 。如图 2 所示: 图 2 在弹出的选项卡中设置库指令数据区,如图2 所示: 图 3.缺省情况下是从VB0 开始,但因为与Modbus 的保持寄存区冲突,所以手 动改为 VB2000 。按“Suggest Address“ 按钮也可以自动分配。 可以使用 Suggest Address (推荐地址)设置数据区,但要注意编程 软件设置的数据区地址,只考虑到了其他一般寻址,而未考虑到诸如 Modbus 数据保持寄存器区等的设置。 应当确保不与其他任何已使用的 数据区重叠、冲突。不应重复按Suggest Address按钮,否则也会造 成混乱。 在

41、 STEP 7-Micro/WIN32 V3.1中,有分配库指令数据区时有不同的 操作方法,需要在 Symbol Table (符号表)中设置一个首地址。我们 强烈建议使用当时最新的编程版本。 3.2 添加指令库 注意:添加自定义指令库, 需要关闭编辑库指令的项目,新建立一个 项目。如果要添加其他来源的库指令自然不需要如此。 第一步:在 Micro/WIN 的 File(文件)菜单中选择Add/Remove Libraries. (添 加/删除指令库)命令;或者在指令树的Libraries (指令库)分支上单击鼠标右 键,选择 Add/Remove Libraries. 图 4. 选择添加 /

42、删除指令库命令 添加/删除对话框中将显示已经在本机的Micro/WIN 中集成的用户自定义指令库。 图 5. 已安装的库指令 第二步:按 Add(添加)按钮,选择新定义的库文件路径。用户自定义库将自动 添加到 Micro/WIN 指令树的 Libraries 分支下。 图 6. 选择库文件 缺省情况下, Micro/WIN 到图 8 中的路径下寻找库指令文件。用户也可以指 定其他路径。 但要注意库文件应当保持在非移动的介质上,如果指定了一个可移 动硬盘,则硬盘不在时会发生找不到库的错误。建议用户使用缺省设置。 3.3 删除库指令 第一步: 选择添加 /删除指令库命令 图 7. 选择命令 第二步

43、: 选中须卸载的库所对应的库文件,按Remove (删除)按钮 图 8. 选中要删除的库指令文件 4RS-485 网络 S7-200 系统支持的 PPI、MPI 和 PROFIBUS-DP 协议通常以 RS-485 电气网络 为硬件基础。 RS-485 串行通信标准采用平衡信号传输方式,或者称为差动模式。平衡传输方 式可以有效地抑制传输过程中干扰。 平衡方式采用一对导线, 利用两根导线间的电压差传输传输信号。这两根导线被 命名为 A(TxD/RxD- )和 B(TxD/RxD+ )。当 B 的电压比 A 高时,认为传输 的是逻辑 “高“电平;当 B 的电压比 A 低时,认为传输的是逻辑 “低“

44、电平信号。能 够有效工作的差动电压范围十分宽广,可以从零点几伏到接近十伏。 RS-485 通信端口可以做到很高的通信速率,较长的通信距离,以及并联连接多 个端口。 平衡通信方式能否有效工作受到共模电压差的影响。RS-485 接口的 两根导线相对于通信对象信号地的电压差就是共模电压。非电气隔离的 RS-485 接口能在一定的范围内抵抗共模电压对通信的干扰。 S7-200 CPU 通信口的共模抑制电压是12V。所以对于这类非隔离型的 RS-485 端口,保证通信口之间的信号地等电位非常重要,最好将它们 连接在一起(并不是说一定要接地)。 S7-200 系统中的 RS-485 端口是半双工的,不能同

45、时发送和接收信号。 在 S7-200 系统中,选择合适的通信设备,可以做到波特率从1200 到 12M,单 段距离 1000m ,单段站点 32 个的通信网络。通过中继器,RS-485 电气网络还 可以扩展通信距离,增加通信站点。详情请参考S7-200 系统手册关于通信 的专门一章。 虽然常见的 RS-485 通信器件在电气性能上基本一致,但物理接口却五花八门, 没有统一的规定。 西门子系统中的D-Sub 9 针型 RS-485 端口,引脚定义是基本一 致的。 4.1 S7-200 系统中的 RS-485 通信 在 S7-200 系统中, CPU 上的通信口(编程口),以及EM277 模块上的

46、通信端 口都是符合 RS-485 电气标准的。但它们也有所不同: ?S7-200 CPU 上的通信口是非隔离型的,最高通信速率187.5K 波特 ?EM277 上的通信口是隔离的,最高通信速率12M,并且速率自适应 以下三种协议,都可以在RS-485 的硬件基础上实现通信: ?PPI(包括编程通信、 S7-200 CPU 之间、 S7-200 CPU 与 HMI 之间的通 信等) ?MPI(S7-200 CPU 与 S7-300/400 CPU 、S7-200 CPU 与 HMI 之间、 EM277 与 HMI 之间的通信等) ?PROFIBUS-DP (EM277 与其他 PROFIBUS-

47、DP 主站之间的通信) 实际上,如果各通信站点的地址不同,通信波特率相同, 上述三个协 议可以在一个 RS-485 网络上同时实现各自的通信。 当然,一个站点支 持什么协议受到自身条件所限。 因此考察上述电气网络的通信时, 我们应注意到它们都受RS-485 网络 电气基础的制约。上述网络所用的网络硬件基本一样。 5RS-485 网络的硬件组成 在 S7-200 系统中, 无论是组成 PPI、 MPI 还是 RPOFIBUS-DP 网络, 或是 Modbus RTU 网络,用到的主要部件都是一样的: ?PROFIBUS 电缆: 电缆型号有多种,其中最基本的是 PROFIBUS FC(Fast C

48、onnect 快速连接) Standard 电缆(订货号 6XV1 830-0EH10 ) ?PROFIBUS 网络连接器:网络连接器也有多种形式,如出线角度不同等 等 5.1 连接网络连接器 A. 电缆和剥线器。使用FC 技术不用剥出裸露的铜线。 图 1. 剥好一端的 PROFIBUS 电缆与快速剥线器( FCS,订货号 6GK1905-6AA00 )。 B. 打开 PROFIBUS 网络连接器。首先打开电缆张力释放压块, 然后掀开芯线锁。 图 2. 打开的 PROFIBUS 连接器 C. 去除 PROFIBUS 电缆芯线外的保护层,将芯线按照相应的颜色标记插入芯 线锁,再把锁块用力压下,

49、使内部导体接触。 应注意使电缆剥出的屏蔽层与屏蔽 连接压片接触。 图 3. 插入电缆 由于通信频率比较高, 因此通信电缆采用双端接地。电缆两头都 要连接屏蔽层。 D. 复位电缆压块,拧紧螺丝,消除外部拉力对内部连接的影响。 5.2 网络连接器 网络连接器主要分为两种类型: 带和不带编程口的。 不带编程口的插头用于一般 联网,带编程口的插头可以在联网的同时仍然提供一个编程连接端口,用于编程 或者连接 HMI 等。 图 4. 左侧为不带编程口的网络连接器(订货号:6ES7 972-0BA52-0XA0 ) 右侧的是带编程口的网络连接器(订货号:6ES7 972-0BB52-0XA0 ) 5.3 线型网络结构 通过 PROFIBUS 电缆连接网络插头,构成总线型网络结构。 图 5. 总线型网络连接 在上图中,网络连接器A、B、C 分别插到三个通信站点的通信口上;电缆a 把 插头 A 和 B 连接起来,电缆 b 连接插头 B 和 C。线型结构可以照此扩展。 注意圆圈内的 “终端电阻 “开关设置。网络终端的插头,其终端电阻开关必须放在 “ON“的位置;中间站点的插头其终端电阻开关应放在“OFF“位置。 5.4 终端电阻和偏置电阻 一个正规的 RS-485 网络使用终端电阻和

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1