S7200的MODBUS详细应用示例.doc_第1页
S7200的MODBUS详细应用示例.doc_第2页
S7200的MODBUS详细应用示例.doc_第3页
S7200的MODBUS详细应用示例.doc_第4页
S7200的MODBUS详细应用示例.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

修订历史记录修订历史记录 日期日期版本版本说明(修改、补充、删说明(修改、补充、删 除)除) 作者作者审核审核 第一版(已完)研发部孙宝东研发部王振岳 5.13 库存储区补充说明 (36 页) 注释:注释:红色字体为注意点;红色字体为注意点;蓝色为修改补充;蓝色为修改补充;紫色为问题总结;紫色为问题总结;茶色为暂时删除;茶色为暂时删除;绿色为住宿绿色为住宿。 目目 录录 前言前言.4 第一章第一章 使用使用 ModbusModbus 协议库协议库.6 前言.6 1.使用 Modbus 主设备协议的要求.6 2.使用 Modbus 从站设备协议的要求 .7 3.Modbus 主设备协议的初始化和执行时间 .7 4.Modbus 从站协议的初始化和执行时间 .8 5.Modbus 主设备寻址 .8 6.Modbus 从站寻址.8 7.Modbus 主设备 MBUS_MSG 执行错误代码 .10 8.Modbus 从站协议执行错误代码.1 11 9.Modbus 主设备高级用户信息.1111 第二章第二章 使用使用 ModbusModbus 主设备指令主设备指令.1414 前言.1414 1.MBUS_CTRL 指令(初始化主设备) .15 2.MBUS_MSG 指令.16 第三章第三章 使用使用 ModbusModbus 从站指令从站指令.22 前言.2222 1.MBUS_INIT 指令(初始化从站) .23 2.MBUS_SLAVE 指令 .26 3.常见问题.26 第四章第四章 下载与通讯测试下载与通讯测试.28 1.编译、下载.28 2.通讯.31 附表附表 主从站指令配置表主从站指令配置表.3737 S7200S7200 ModbusModbus 主从协议主从协议 版本(09 年初稿版) 制作:研发部 前言:前言: Modbus 从站协议指令可以配置 S7-200,将其用作 Modbus RTU 从站,与 Modbus 主设 备通讯。 Modbus 主设备协议指令可以配置 S7-200,将其用作 Modbus RTU 主设备,与一个或多 个 Modbus 从站通讯。 Modbus 指令安装在 STEP 7 Micro/WIN 指令树的协议库文件夹中。有了这些新指令, 您可以将 S7-200 用作 Modbus 设备。当您在程序中加入 Modbus 指令时,会在项目中自动 增加一个或多个相关子程序。 Modbus 主设备协议库有两个版本。一个版本使用 CPU 的端口 0,另一个则使用 CPU 的 端口 1。端口 1 协议库的 POU 名中带有_P1(MBUS_CTRL_P1),表示 POU 使用 CPU 上的端口 1。在其它方面,这两个 Modbus 主设备协议库完全一致。 Modbus 从站协议库仅支持端口 0 通讯。 在 STEP 7 Micro/WIN 中,Modbus RTU 协议和 USS 协议操作库位于操作树的“库” 文件夹中。MODBUS 函数库要求 STEP 7 Micro/WIN 为 V3.2 或更高版本。 图 1: 添加函数库 第一章第一章 使用使用 ModbusModbus 协议库协议库 前言:前言:这些库是附加函数库,并非组态软件 STEP 7 Micro/WIN 的组成部分。 您如果需要使用 Modbus RTU 协议,必须先安装“STEP 7 Micro/WIN 32 Toolbox V1.0” (包括库),然后安装运行“STEP 7 Micro/WIN”。就会出现如图 1 的库。 注意:注意: 这个函数库包含可以在 STEP 7 Micro/WIN V3.2 中使用的 Modbus RTU 协议库和 USS 协 议库。 如果您安装了 STEP 7 Micro/WIN V4.0 SP5 或者更高版本,那么操作库中就会包含下列函 数: Modbus RTU Master V1.2 对应端口 0 和端口 1 Modbus RTU Slave V1.0 对应端口 0 USS protocol V2.3 对应端口 0 和端口 1 下面我对 Modbus RTU 各指令功能与使用方法分别加以讲解: 1. 使用使用 Modbus 主设备协议的要求主设备协议的要求 Modbus 主设备协议指令使用下列 S7-200 资源: 初始化 Modbus 主设备协议可以为 Modbus 主设备协议通讯指定专用 CPU 端口。当 CPU 端口被用于 Modbus 主设备协议通讯时,就无法用于任何其它用途,包括与 STEP 7-Micro/WIN 通讯。MBUS_CTRL 指令控制将端口 0 分配给 Modbus 协议或 PPI,Mode 为 1 时分配给 Modbus 协议,为 0 是分配给 PPI。将 S7-200 上的模式开关设为 “STOP”,端口零也会被复位为 PPI 协议模式。 MBUS_CTRL_P1 指令(来自端口 1 协议库)控制将端口 1 分配给 Modbus 主设备协议或 PPI。 Modbus 主设备协议指令影响与 CPU 通讯端口中自由端口通讯相关的所有 SM 位置。 Modbus 主设备协议指令使用 3 个子程序和 1 个中断例程。 Modbus 主设备协议指令要求两个 Modbus 主设备指令和支持例程有 1620 个字节的程 序空间。 Modbus 主设备协议指令的变量要求 284 个字节的 V 存储器程序块。该程序块的起始 地址由用户指定,专门保留用于 Modbus 变量。 S7-200 CPU 必须是固化程序修订版 2.00 或最好支持 Modbus 主设备协议库(CPU MLFB 21x-2xx23-0XB0)。 Modbus 主设备协议库为某些功能使用用户中断。用户中断不能被用户程序禁用。 提示提示:欲将 CPU 通讯端口操作更换回 PPI 以便与 STEP 7-Micro/WIN 通讯,将 MBUS_CTRL 指令的模式参数设置为零(0)。您还可以将 S7-200 上的模式开关设置到 STOP 模式位置。这些方法中的任一个将设置 CPU 通讯端口与 STEP 7-Micro/WIN 通讯。 2. 使用使用 Modbus 从站协议的要求从站协议的要求 Modbus 从站协议指令使用下列 S7-200 资源: 初始化 Modbus 从站协议为 Modbus 从站协议通讯指定端口 0。当端口 0 被用于 Modbus 从站协议通讯时,就无法用于任何其它用途,包括与 STEP 7-Micro/WIN 通讯。 MBUS_INIT 指令控制将端口 0 指定给 Modbus 从站协议或 PPI。 Modbus 从站协议指令影响与端口 0 中自由端口通讯相关的所有 SM 位置。 Modbus 从站协议指令使用 3 个子程序和 2 个中断例程。 Modbus 从站协议指令要求两个 Modbus 主设备指令和支持例程有 1857 个字节的程序 空间。 Modbus 从站协议指令的变量要求 779 个字节的 V 存储器程序块。该程序块的起始地 址由用户指定,专门保留用于 Modbus 变量。一定要设置 V 存储区,不然编译时会出 现错误信息,设置过程很简单: 点击“文件”“库存储区”,出现如下画面(进行设置即可): 提示提示:欲将端口 0 操作更换回 PPI 以便与 STEP 7-Micro/WIN 通讯,用另一条 MBUS_INIT 指令重新指定端口 0。您还可以将 S7-200 上的模式开关设为 STOP 模式。 这样会将参数复原为端口 0。 3. Modbus 主设备协议的初始化和执行时间主设备协议的初始化和执行时间 Modbus 主设备协议每次扫描都需要少量的时间来执行 MBUS_CTRL 指令。 MBUS_CTRL 初始化 Modbus 主设备(首次扫描)需要大约 1.11 毫秒的时间,以后扫描需 要大约 0.41 毫秒。 当 MBUS_MSG 子程序执行请求时,将执行扫描时间。大多数时间用于计算 Modbus CRC 的请求和应答。CRC (循环冗余检验) 确保通讯消息的完整性。对于请求和应答中的每个字,扫描时间会延长约 1.85 毫秒。 最大请求/应答(读取或写入 120 个字)使扫描时间延长约 222 毫秒。当在从站中接收应 答并至少发出请求时,主要是读取请求在延长扫描时间。当将数据发送到从站并至少 收到应答时,主要是写入请求在延长扫描时间。 4. Modbus 从站协议的初始化和执行时间从站协议的初始化和执行时间 Modbus 通讯使用 CRC (循环冗余检验)确保通讯消息的完整性。Modbus 从站协议使用 预先计算数值的表格减少处理消息的时间。该 CRC 表初始化约需 240 毫秒。初始化在 MBUS_INIT 子程序中进行,通常在进入 RUN 模式后用户程序首次扫描时执行。如果 MBUS_INIT 子程序和任何其它初始化程序要求的时间超过 500 微秒扫描监视时间,您 需要复原监视定时器,并将输出保持在启用状态(如果扩展模块要求)。输出模块监视定 时器可用向模块输出写入的方法复原。请参阅监视复原指令。 当 MBUS_SLAVE 子程序执行请求时,扫描时间会延长。由于大多数时间用于计算 Modbus CRC,对于请求中和应答中的每个字节,扫描时间会延长约 420 微秒。最大请 求/应答(读取或写入 120 个字)使扫描时间延长约 100 毫秒。 5. Modbus 主设备寻址主设备寻址 Modbus 地址通常写作包含数据类型和偏移量的 5 个字符的数值。第一个字符决定数据 类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus 主设备指令将地址 映射至正确的功能,以便发送到从站。Modbus 主设备指令支持下列 Modbus 地址: 00001 至 09999 是离散输出(线圈) 10001 至 19999 是离散输入(触点) 30001 至 39999 是输入寄存器(通常是模拟量输入) 40001 至 49999 是保持寄存器 所有 Modbus 地址均以 1 为基位,表示第一个数据值从地址 1 开始。有效地址范围将取 决于从站。不同的从站将支持不同的数据类型和地址范围。 6. Modbus 从站寻址从站寻址 Modbus 地址通常被写为包含数据类型和偏移量的 5 个字符的数值。第一个字符决定数 据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus 主设备将地址映 射至正确的功能。Modbus 从站指令支持下列地址: 00001 至 00128 是映射至 Q0.0 - Q15.7 的离散输出 10001 至 10128 是映射至 I0.0 - I15.7 的离散输入 30001 至 30032 是映射至 AIW0 至 AIW62 的模拟输入寄存器 40001 至 4xxxx 是映射至 V 存储器的保持寄存器。 所有 Modbus 地址均以 1 为基位。下表显示映射至 S7-200 地址的 Modbus 地址。 Modbus 地址 S7-200 地址 00001Q0.0 00002Q0.1 00003Q0.2 . 00127Q15.6 00128Q15.7 10001I0.0 10002I0.1 10003I0.2 . 10127I15.6 10128I15.7 30001AIW0 30002AIW2 30003AIW4 . 30032AIW62 40001Hold Start 40002HoldStart+2 40003HoldStart+4 . 4xxxxHoldStart+2 x (xxxx-1) Modbus 从站协议允许您限制 Modbus 主设备可存取的输入、输出、模拟输入和保持寄 存器(V 存储器)数量。 MBUS_INIT 指令的 MaxIQ 参数指定 Modbus 主设备允许存取的离散输入或输出(I 或 Q)的 最大数目。 MBUS_INIT 指令的 MaxAI 参数指定 Modbus 主设备允许存取的输入寄存器(AIW)的最 大数目。 MBUS_INIT 指令的 MaxHold 参数指定 Modbus 主设备允许存取的保持寄存器(V 存储 器字)的最大数目。 请参阅 MBUS_INIT 指令说明,了解有关为 Modbus 从站设定存储器限制的进一步详情。 7. Modbus 主设备主设备 MBUS_MSG 执行错误代码执行错误代码 MBUS_MSG 错误代码 说明 0无错误 1应答时奇偶校验错误:仅当使用偶校验或奇校验时才会发生。传输被干扰,可能 会收到不正确的数据。该错误通常是由电气故障(例如错误接线或者影响通讯的电噪声) 引起的。 2未使用 3接收超时:在超时时间内,没有来自从站的应答。可能有以下一些原因:与从 站的电气连接有问题、主设备和从站设置为不同的波特率/奇偶校验设置,以及错误的 从站地址。 4请求参数出错:一个或多个输入参数(从站、读写、地址或计数)被设置为非法值。 检查文档中输入参数的允许值。 5Modbus 主设备未启用:在调用 MBUS_MSG 前,每次扫描时都调用 MBUS_CTRL。 6Modbus 忙于处理另一个请求:一次只能激活一条 MBUS_MSG 指令。 7应答时出错: 收到的应答与请求不相关。这表示从站中出现了某些错误,或者错 误的从站应答了请求。 8应答时 CRC 错误: 传输被干扰,可能会收到不正确的数据。该错误通常是由电 气故障(例如错误接线或者影响通讯的电噪声)引起的。 101 从站不支持在该地址处所请求的功能:请参阅使用 Modbus 主设备指令帮助主 题中的所需 Modbus 从站功能支持表。 102 从站不支持数据地址:地址加上计数所要求的地址范围超出了从站所允许的 地址范围。 103 从站不支持数据类型:该地址类型不被从站支持。 104 从站故障 105 从站已接受消息但应答延迟:这是 MBUS_MSG 的错误,用户程序应在稍后重新 发送请求。 106 从站忙,因此拒绝消息:可以再次尝试相同的请求,以获得应答。 107 从站因未知原因而拒绝消息 108 从站存储器奇偶校验错误:从站中有错误。 8. Modbus 从站协议执行错误代码从站协议执行错误代码 错误代码 说明 0无错误 1内存范围错误 2非法波特率或奇偶校验 3非法从属地址 4非法 Modbus 参数值 5保持寄存器与 Modbus 从属符号重叠 6收到奇偶校验错误 7收到 CRC 错误 8非法功能请求/功能不受支持 9请求中的非法内存地址 10从属功能未启用 9. Modbus 主设备高级用户信息主设备高级用户信息 返回的功能与请求不匹配(错误代码 7)。 Modbus 主设备将在设置完成和错误输出参数前,重新发送请求两个附加时间。 通过查找 Modbus 主设备符号表中的符号 mModbusRetries 然后在执行 MBUS_CTRL 后 改变该值,可以更改重试次数。mModbusRetries 值是字节类型,重试范围是 0 至 255。 内部字符超时 如果应答中字符之间的时间超出了指定的时间限制,Modbus 主设备将中止来自从站的 应答。缺省时间设置为 100 毫秒,可允许 Modbus 主设备协议用于大多数有线或电话调 制解调器联网的从站。如果检测到该错误,MBUS CTRL错误参数将设置为错误代码 3。 当字符之间需要较长的时间时,可能是因为传送介质(例如电话调制解调器)或者因为从 站自身需要更多的时间。通过查找 Modbus 主设备符号表中的符号 mModbusCharTimeout 然后在执行 MBUS_CTRL 后改变该值,可以延长该超时时间。mModbusCharTimeout 值是整型类型,范围是 1 至少 30000 毫秒。 单个对多个位/字写入功能 某些 Modbus 从站不支持 Modbus 功能写入单个离散输出位(Modbus 功能 5)或写入单个 保持寄存器 (Modbus 功能 6)。这些设备仅支持多个位写入(Modbus 功能 15)或多个寄存器写入 (Modbus 功能 16)。如果从站不支持单个位/字 Modbus 功能,则 MBUS_MSG 指令将返 回错误代码 101。 Modbus 主设备协议允许强制 MBUS_MSG 指令,以使用多个位/字 Modbus 功能来取代 单个的位/字 Modbus 功能。通过查找 Modbus 主设备符号表中的符号 mModbusForceMulti 然后在执 行 MBUS_CTRL 后改变该值,可以强制执行多个位/字指令。mModbusForceMulti 值是布尔数据类型, 应该设置为1 以在写入单个位/寄存器时强制使用多个位/字功能。 累加器用途 累加器(AC0、AC1、AC2, AC3)由 Modbus 主设备指令使用,并在交叉参考列表中显 示。累加器中的数值被 Modbus 主设备指令保存和恢复。当执行 Modbus 主设备指令时, 保存累加器中的所有用户数据。 保持寄存器地址大于 9999 Modbus 保持地址通常在 40001 到 49999 的范围内。该范围对大多数应用程序来说足够 了,但是某些数据映射到保持寄存器的 Modbus 从站所具有的地址超过 9999。这些设 备不适合常规的 Modbus 寻址方案。 Modbus 主设备指令支持通过可选的寻址方法对大于 9999 的保持寄存器进行寻址。 MBUS_MSG 指令允许参数地址具有附加范围以支持保持寄存器地址的扩充范围。 400001 至 465536 用于保持寄存器 例如:要访问保持寄存器 16768,MBUS_MSG 的地址参数应该设置为 416768。 扩充寻址允许访问 Modbus 协议支持的 65536 个可能地址的全部范围。该扩充寻址仅支 持保持寄存器。 第二章第二章 使用使用 ModbusModbus 主设备指令主设备指令 前言前言:欲在 S7-200 程序中使用 Modbus 主设备指令,请执行以下步骤: 1.在程序中插入 MBUS_CTRL 指令,并在每次扫描时执行 MBUS_CTRL。您可以使用 MBUS_CTRL 指令初始化或更改 Modbus 通讯参数。当您插入 MBUS_CTRL 指令时,会在 程序中自动增加几个受保护的子程序和中断例程。 2.使用协议库存储器命令,为 Modbus 主设备协议指令需要的 V 存储器指定一个起始地 址。 3.将一条或多条 MBUS_MSG 指令放入程序中。可以根据需要将尽可能多的 MBUS_MSG 指令放入程序中,但每次只能激活这些指令中的一条。 4.连接 S7-200 CPU 上的端口 0 (或对端口 1 协议库是端口 1)和 Modbus 从站之间的通讯 电缆。 当心当心:带有不同参考电位的互连装置会引起互连电缆中出现意外电流。这些意外电流会引 起通讯错误或损坏装置。确保所有用通讯电缆连接的设备共享一个共用电路参考或单独隔 离,以防不需要的电流通过。 Modbus 主设备指令使用如下显示的 Modbus 功能读取或写入特定的 Modbus 地址。Modbus 从站必须支持所需的 Modbus 功能才能读取或写入特定的 Modbus 地址。 所需的 Modbus 从站功能支 持 Modbus 地址 读取或写入所需的 Modbus 从站功能 00001 09999 离散输出读取 写入 功能 1 功能 5 用于单个输出点 功能 15 用于多个输出点 10001 19999 离散输出读取 写入 功能 2 不能 30001 39999 输入寄存器读取 写入 功能 4 不能 40001 49999 保持寄存器读取 写入 功能 3 功能 6 用于单个寄存器 功能 16 用于多个寄存器 1.MBUS_CTRL1.MBUS_CTRL 指令指令( (初始化主设备初始化主设备) ) 输入/输出操作数数据类型 模式 I, Q, M, S, SM, T, C, V, L 布尔 波特 VD, ID, QD, MD, SD, SMD, LD, AC, Constant, *VD, *AC, *LD 双字 奇偶校验 VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *AC, *LD 字节 超时 VW, IW, QW, MW, SW, SMW, LW, AC, Constant, *VD, *AC, *LD 字 完成 I, Q, M, S, SM, T, C, V, L 布尔 错误 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *L 字节 用于 S7-200 端口 0 的 MBUS_CTRL 指令(或用于端口 1 的 MBUS_CTRL_P1 指令)可初 始化、监视或禁用 Modbus 通讯。在使用 MBUS_MSG 指令之前,必须正确执行 MBUS_CTRL 指令。指令完成后立即设定完成位,才能继续执行下一条指令。在每次扫描且 EN 输 入打开时执行该指令。MBUS_CTRL 指令必须在每次扫描时(包括首次扫描)被调用,以允 许监视随 MBUS_MSG 指令启动的任何突出消息的进程。除非每次调用 MBUS_CTRL,否则 Modbus 主设备协议将不能正确运行。 模式输入数值选择通讯协议。输入值 1 将 CPU 端口分配给 Modbus 协议并启用该 协议。输入值 0 将 CPU 端口分配给 PPI 系统协议并禁用 Modbus 协议。 波特参数将波特率设为 1200、2400、4800、9600、19200、38400、57600 或 115200 波特。 奇偶校验参数被设为与 Modbus 从站奇偶校验相匹配。所有设置使用一个起始位 和一个停止位。可接受的数值为: 0 - 无奇偶校验 1 - 奇校验 2 - 偶校验 超时参数设为等待来自从站应答的毫秒时间数。超时数值可以设置的范围为 1 毫秒到 32767 毫秒。典型值是 1000 毫秒(1 秒)。超时参数应该设置的足够大,以 便从站有时间对所选的波特率作出应答。超时参数用于确定 Modbus 从站是否对请求 做出应答。超时值确定 Modbus 主设备在发送了请求的最后一个字符后,将要等待多 长时间才会有应答的第一个字符。如果在超时规定的时间内至少收到应答的一个字 符,Modbus 主设备将从 Modbus 从站接收到整个应答。 MBUS_CTRL 指令完成时,完成输出打开。 错误输出包含执行该指令的结果。下表定义了在执行 MBUS_CTRL 指令时会产生 的错误条件。 MBUS_CTRL 错误代码 说明 0 无错误 1 奇偶校验选择无效 2 波特率选择无效 3 超时选择无效 4 模式选择无效 2.MBUS_MSGMBUS_MSG 指令指令 输入/输出数据类型操作数 首次I, Q, M, S, SM, T, C, V, L (以上升沿检测元素为条件的功率 流) 布尔 从站 VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *AC, *LD 字节 读写 VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *AC, *LD 字节 地址 VD, ID, QD, MD, SD, SMD, LD, AC, Constant, *VD, *AC, *LD 双字 计数 VW, IW, QW, MW, SW, SMW, LW, AC, Constant, *VD, *AC, *LD 整型 DataPtr&VB 双字 完成 I, Q, M, S, SM, T, C, V, L 布尔 错误 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD 字节 MBUS_MSG 指令(或用于端口 1 的 MBUS_MSG_P1)用于启动对 Modbus 从站的请求并处 理应答。当 EN 输入和首次输入打开时,BUS_MSG 指令启动对 Modbus 从站的请求。发 送请求、等待应答、并处理应答通常需要多次扫描。EN 输入必须打开以启用请求的发 送,并应该保持打开直到完成位被置位。注释: 一次只能激活一条 MBUS_MSG 指令。 如果启用了多条 MBUS_MSG 指令,则将处理所执行的第一条 MBUS_MSG 指令,之后的所 有 MBUS_MSG 指令将中止并产生错误代码 6。 首次参数应该在有新请求要发送时才打开以进行一次扫描。首次输入应当通 过一个边沿检测元素(例如上升沿)打开,这将导致请求被传送一次。 从站参数是 Modbus 从站的地址。允许的范围是 0 到 247。地址 0 是广播地址, 只能用于写请求。不存在对地址 0 的广播请求的应答。并非所有的从站会支持广播地 址。S7-200 Modbus 从站协议库不支持广播地址。 读写参数指定是否要读取或写入该消息。读写参数允许使用下列两个值:0 - 读,1 -写。 离散输出 (线圈)和保持寄存器支持读取和写入请求。离散输入(触点)和输入寄存器仅支持读取 请求。 地址参数是起始的 Modbus 地址。允许使用下列取值范围:00001 至 09999 是离 散输出(线圈);10001 至 19999 是离散输入(触点);30001 至 39999 是输入寄存器; 40001 至 49999 是保持寄存器 地 址的指定取值范围基于 Modbus 从站支持的地址。 计数参数指定在该请求中读取或写入的数据元素的数目。计数值是位数(对于 位数据类型)和字数(对于字数据类型)。 地址 0 xxxx -计数是要读取或写入的位数。 地址 1xxxx -计数是要读取的位数。 地址 3xxxx -计数是要读取的输入寄存器的字数。 地址 4xxxx -计数是要读取或写入的保持寄存器的字数。 MBUS_MSG 指令将读取或写入最大 120 个字或 1920 个位(240 字节的数据)。计数 的实际限值将取决于 Modbus 从站中的限制。 DataPtr参数是指向 S7-200 CPU 的 V 存储器中与读取或写入请求相关的数据的 间接地址指针。对于读取请求,DataPtr 应该指向用于存储从 Modbus 从站读取的数据 的第一个 CPU 存储器位置。对于写入请求,DataPtr 应该指向要发送到 Modbus 从站的 数据的第一个 CPU 存储器位置。 DataPtr 值作为间接地址指针传递到 MBUS_MSG。例如,如果要写入 Modbus 从站的数据从 S7-200 CPU 中的地址 VW200 开始, 则 DataPtr 的数值将会是&VB200 (VB200 的地址)。指针必须始终是 VB 类型,即使它们 指向字数据。 保持寄存器(地址 4xxxx)和输入寄存器(地址 3xxxx)的值是字(2 个字 节或 16 位)。S7-200 CPU 字的格式与 Modbus 寄存器相同。低位编号的 V 存储器地址是 寄存器的最高有效字节。高位编号的 V 存储器地址是寄存器的最低有效字节。下表显 示了 S7-200 字节和字寻址如何与 Modbus 寄存器格式相对应。 S7-200 CPU 存储器字节地址S7-200 CPU 存储器字地址Modbus 保持寄存器地址 地址十六进制数据地址十六进制数 据 地址十六进制数 据 VB20012VW20012 34400112 34 VB20134 VB20256VW20256 78400256 78 VB20378 VB2049AVW2049A BC40039A BC VB205BC 位数据(地址 0 xxxx 和 1xxxx)区域作为压缩字节被读取和写入,也就是说,每个数 据字节内压缩 8 位。第一个数据字节的最低有效位是寻址的位号(参数地址)。如果仅 写入单个的位,则该位必须处于指向 DataPtr 的字节的最低有效位字节。压缩字节的格 式(显示离散输入地址) Vx.7-Vx.0 1000810007100061000510004100031000210001 对于未在偶数字节边界上开始的位数据地址,与起始地址相关的位必须处于字节 的最低有效位。参见如下在 Modbus 地址 10004 处开始的 3 位压缩字节格式实例。压缩 字节的格式(在地址 10004 处开始的离散输入) 当写入到离散输出数据类型(线圈)时,用户必须在数据通过 DataPtr 传递到 MBUS_MSG 指令之前,将压缩字节内的位放置到正确的位位置中。 完成输出在发送请求和接收应答时关闭。完成输出在应答完成或 MBUS_MSG 指 令因错误而中止时打开。 错误输出仅当完成输出打开时有效。请参阅 Modbus 主设备 MBUS_MSG 执行错 误通过 MBUS_MSG 指令返回。低位编号的错误代码(1 到 8)是由 MBUS_MSG 指令检测到的 错误。这些错误代码通常指示与 MBUS_MSG 指令的输入参数有关的问题,或接收来自从 站的应答时出现的问题。奇偶校验和 CRC 错误指示存在应答但是数据未正确接收。这 通常是由电气故障(例如连接有问题或者电噪声)引起的。高位编号的错误代码(从 101 开始)是由 Modbus 从站返回的错误。这些错误指示从站不支持所请求的功能,或者所 请求的地址(或数据类型或地址范围)不被 Modbus 从站支持。 程序举例 该实例程序显示了在每次输入 I0.0 打开时,如何使用 Modbus 主设备指令将 4 个 保持寄存器写入 Modbus 从站然后再从中读取。S7-200 CPU 将把自 VW100 开始的 4 个字 写入 Modbus 从站。数据将写入从站中自地址 40001 开始的 4 个保持寄存器。S7-200 CPU 于是将从 Modbus 从站读取 4 个保持寄存器。数据将来自保持寄存器 40010 40013,并放置到 S7-200 CPU 的 V 存储器中自 VW200 开始的地址。实例程序数据传送 如果从 MBUS_MSG 指令返回一个错误,则程序将打开输出 Q0.1 和 Q0.2。 通过每次扫描时调用 MBUS_CTRL 来初始化和监视 Modbus 主设备。 Modbus 主设备设置为 9600 波特,无奇偶校验。从站允许 1000 毫秒(1 秒)的应答 时间。 在首次扫描时,重设用于两条 MBUS_MSG 指令的启用标记(M2.0 和 M2.1)。 当 I0.0 从关闭切换到打开时,为第一条 MBUS_MSG 指令(M2.0)设置启用标记。 当第一个启用标记(M2.0)打开时,调用 MBUS_MSG 指令。首次参数必须仅为启用 指令时的首次扫描而设置。 该指令将 4 个保持寄存器写入(RW = 1)从站 2。要写入的数据取自 CPU 中的 VB100-VB107 (4 个字)并写入 Modbus 从站中的地址 40001 -40004。 当第一条 MBUS_MSG 指令完成后(完成从 0 变为 1),清除对第一条 MBUS_MSG 指令 的启用,并为第二条 MBUS_MSG 指令设定启用。 如果错误(MB1)不为零,则设置 Q0.1 以显示错误。 当第二个启用标记(M2.1)打开时,调用第二条 MBUS_MSG 指令。首次参数必须仅 为启用指令时的首次扫描而设置。 该指令从从站 2 读取(RW = 0) 4 个保持寄存器。数据从 Modbus 从站的地址 40010 ?40013 读取并复制到 CPU 中的 VB200 ?VB207 (4 字)。 当第二条 MBUS_MSG 指令完成(完成从 0 变为 1)后,清除对第二条 MBUS_MSG 指令 的启用。 如果错误(MB1)不为零,则设置 Q0.2 以显示错误。 第三章第三章 使用使用 ModbusModbus 从站指令从站指令 前言:前言:编程时使用 SM0.1 调用子程序 MBUS_INIT 进行初始化,使用 SM0.0 调 用 MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变 量表中找到;欲在 S7-200 程序中使用 Modbus 从站指令,请执行以下步骤: 1.在程序中插入 MBUS_INIT 指令,并仅限为一次扫描执行 MBUS_INIT 指令。 您可以使用 MBUS_INIT 指令初始化或更改 Modbus 通讯参数。 当您插入 MBUS_INIT 指令时,会在程序中自动增加几个隐藏的子程序和中断例 行程序。 2.使用协议库存储器命令,为 Modbus 从站协议指令需要的 V 存储器指定一 个起始地址。 3.仅将一条 MBUS_SLAVE 指令放入程序中。每次扫描时均调用该指令,为所 有收到的请求提供服务。 4.连接 S7-200 上的端口 0 和 Modbus 主设备之间的通讯电缆。 当心当心:带有不同参考电位的互连装置会使不需要的电流从互连电缆中通 过。这些不需要的电流会引起通讯错误或损坏装置。确保所有用通讯电缆连接 的设备共享一个共用电路参考或单独隔离,以防不需要的电流通过。 累加器(AC0、AC1、AC2、AC3)被 Modbus 从站指令使用,在交叉参考列表中 显示。执行之前,Modbus 从站指令累加器中的数值被保存,并在 Modbus 从站 指令完成之前还原至累加器,以确保在执行 Modbus 从站指令时累加器中的所 有用户数据被保留。 Modbus 从站协议指令支持 Modbus RTU 协议。这些指令使用 S7-200 的自由端口实用程序支 持最常用的 Modbus 功能。详情见附表 2 从站功能码与说明。 1.MBUS_INIT1.MBUS_INIT 指令指令( (初始化从站初始化从站) ) 输入/输出操作数数据类型 模式、地址、奇 偶校验 VB, IB, QB, MB, SB, SMB, LB, AC, Constant, *VD, *AC, *LD 字节 波特、 HoldStart VD, ID, QD, MD, SD, SMD, LD, AC, Constant, *VD, *AC, *LD 双字 延时、 MaxIQ、MaxAI、 MaxHold VW, IW, QW, MW, SW, SMW, LW, AC, Constant, *VD, *AC, *LD 字 字 完成 I, Q, M, S, SM, T, C, V, L 布尔 错误 VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD 字节 MBUS_INIT 指令被用于启用和初始化或禁止 Modbus 通讯。在使用 MBUS_SLAVE 指 令之前,必须正确执行 MBUS_INIT 指令。指令完成后立即设定完成位,才能继续执 行下一条指令。在每次扫描且 EN 输入打开时执行该指令。应当在每次通讯状态改变时 执行 MBUS_INIT 指令。因此,EN 输入应当通过一个边缘检测元素用脉冲打开,或者 仅在首次扫描时执行。 模式输入数值选择通讯协议:输入数值 1 将端口 0 指定给 Modbus 协议并启用协议; 将输入数值 0 则将端口 0 指定给 PPI,并禁用 Modbus 协议。 波特参数将波特率设为 1200、2400、4800、9600、19200、38400、57600 或 115200。 地址参数将地址设为 1 和 247 之间(包括 1 和 247)的数值。 奇偶校验参数被设为与 Modbus 主设备奇偶校验相匹配。可接受的数值为: 0-无奇偶校验 1-奇数校验 2-偶数校验 延时参数通过将指定的毫秒数增加至标准 Modbus 信息超时的方法延长标准 Modbus 信息结束超时条件。该参数的典型数值在有线网络上应为 0。如果您在使用带有纠错功 能的调制解调器,将延时设为 50 至 100 毫秒的数值。如果您在使用扩展频谱无线电, 将延时设为 10 至 100 毫秒的数值。延时数值可以是 0 至 32767 毫秒。 MaxIQ 参数将供 Modbus 地址 0 xxxx 和 1xxxx 使用的 I 和 Q 点数设为 0 至 128 之间的 数值。数值 0 禁止所有向输入和输出的读取。建议使用的 MaxIQ 数值是 128,该数值 可在 S7-200 中存取所有的 I 和 Q 点。 MaxAI 参数将供 Modbus 地址 3xxxx 使用的字输入(AI)寄存器数目设为 0 至 32 之间的 数值。数值 0 禁止模拟输入的读数。建议使用的 MaxAI 数值如下,这些数值可允许存 取所有的 S7-200 模拟输入: 0 用于 CPU 221 16 用于 CPU 222 32 用于 CPU 224、224XP、226 和 226XM MaxHold 参数设定供 Modbus 地址 4xxxx 使用的 V 存储器中的字保持寄存器数目。例 如,为了允许主设备存取 2000 个字节的 V 存储器,将 MaxHold 设为 1000 个字的数值 (保持寄存器)。 HoldStart 参数是 V 存储器中保持寄存器的起始地址。该数值一般被设为 VB0,因此 HoldStart 参数被设为&VB0 (VB0 地址)。其它 V 存储器地址可指定为保持寄存器的起 始地址,以便在项目的其它地方使用 VB0。Modbus 主设备可存取 V 内存 MaxHold 个 字数,从 HoldStart 开始。 注意:你选用的 CPU 的 V 存储区大小!CPU 型号不同 V 数据存储区大小不同。应根 据需要选择 Modbus 保持寄存器区域的大小。 MBUS_INIT 指令完成时,完成输出打开。错误输出字节包含执行指令的结果。请 参阅 Modbus 从站协议执行错误代码中可能因执行指令而产生的错误条件。 包含 Modbus RTU 从站指令库的项目编译、下载到 CPU 中后,在编程计算机 (PG/PC)上运行一些 Modbus 测试软件可以检验 S7-200 的 ModbusRTU 通信是否正 常,这对查找故障点很有用。测试软件通过计算机串口(RS-232)和 PC/PPI 电缆连接 CPU。如果必要,须将 PC/PPI 电缆设置在自由口通信方式。可到一些软件下载网站寻 找类似软件,如 ModScan32 等。 NETWORK 1 / 首次扫描时初始化 Modbus 从站协议 / 将从站地址设为 1,将端口 0 设为 9600 波特,将奇偶校验设为偶数, / 允许存取所有的 I、Q 和 AI 数值,允许存取 1000 台保存寄存器(2000 个字节) / 从 VB0 开始。 LD SM0.1 CALL MBUS_INIT, 1, 1, 9600, 2, +0, +128, +32, +1000, &VB0, M0.1, MB1 NETWORK 2 / 每次扫描时执行 Modbus 从站协议 LD SM0.0 CALL MBUS_SLA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论