西门子s7-200smart modbus-tcp通信实例编程详细指导

2020-11-24

西门子S7-200Modbus-TCP通信例子【】绝密【】NDA【X】公开一、 组网概述本文以 ZKA-4488-ETH 为例介绍西门子PLC与深圳市综科智控科技开发有限公司的IO设备进行Modbus通讯的步骤设置。ZKA-4488-ETH 是 8 路数字量输入(DI),8 路数字量输出(DO),4路模拟量输入(AI,0/4-20mA),4 路模拟量输出设备(AO,0/4-20mA),以太网通信。以 ZKA-4488-ETH 为例,出厂默认通讯参数如下:ZK模块 IP 为:192.168.0.105TCP 端口为:10001(注意:我们模块出厂时默认端口为10001,客户也可以通过ZK模块的配置文件把ZK通讯端口改成modbus-tcp的默认端口502)工作模式为:服务器模式二、 S7-200 Modbus TCP通信1 S7-200 Modbus TCP 通信简介Modbus 是公开通信协议,详细的协议和规范,请访问Modbus 组织的网站:http://www.modbus.org/Modbus TCP 是通过工业以太网 TCP/IP 网络传输的 Modbus 通信。S7-200 SMART 采用客户端-服务器方法,Modbus 客户端设备通过该方法发起与 Modbus 服务器设备的 TCP/IP 连接。建立连接后,客户端向服务器发出请求,服务器将响应客户端的请求。客户端可请求从服务器设备读取部分存储器,或将一定数量的数据写入服务器设备的存储器。如果请求有效,则服务器将响应该请求;如果请求无效,则会回复错误消息。S7-200 SMART 支持做 Modbus TCP 的客户端或者服务器,可以实现 PLC 之间通信,也可以实现与支持此通信协议的第三方设备通信。通信伙伴数量比较多的时候,可以使用交换机,扩展以太网接口。2 Modbus TCP 指令库STEP7-Micro/WIN SMART 从V2.4 版本开始,软件中直接集成 Modbus TCP 库指令。安装软件后,Modbus TCP 指令位于STEP7-Micro/WINSMART 项目树中“指令”文件夹的“库”文件夹中。如图2.Modbus TCP库指令所示。指令分为客户端和服务器两种,目前指令版本为 V1.0。客户端指令会占用开放式用户通信资源主动连接,最多8个;服务器指令会占用开放式用户通信资源的被动连接资源,最多也是8个。图2.Modbus TCP库指令Modbus TCP 客户端:Modbus 客户端指令MBUS_CLIENT使用 CPU 的以下资源:占用主动连接资源。最多有8个主动连接资源连接多个服务器伙伴时,自动生成连接 ID。Modbus TCP 客户端使用以下程序实体:1 个子程序2849 个字节的程序空间V 存储器的 638 字节模块,用于指令符号Modbus TCP 服务器:Modbus 服务器指令 MBUS_SERVER 使用 CPU 的以下资源占用被动连接资源。最多有8个被动连接资源连接多个客户端伙伴时,自动生成连接 ID。Modbus TCP 服务器使用下列程序实体:1 个子程序2969 个字节的程序空间V 存储器的 445 字节模块,用于指令符号指令库编程后,必须从 STEP 7-Micro/WIN SMART 的为使用的指令分配库存储区地址。3ModbusTCP 功能编程下面以一台S7-200 SMART和一台ZKA-4488-ETH 之间进行Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。具体的实验环境见表1.;通信任务见表2:表1.实验环境操作系统WIN7 SP1 专业版 64位编程软件STEP7-Micro/WIN SMART V2.4版本硬件CPU SR60:6ES7288-1SR60-0AA0 固件:V2.4 版本ZKA-4488-ETH:综科智控4AI+4AO+8DI+8DO以太网modbus-tcp通信交换机:CSM 127 6GK7 277-1AA10-0AA0表2.通信任务硬件通信角色IP地址端口号读/写数据区域CPU SR60客户端192.168.0.600读VB20-VB31ZKA-4488-ETH服务器192.168.0.10510001响应AI1~AI3模拟量采集值客户端侧指令编程1、系统块中设置客户端的IP地址,以确保IP地址设置无误。此步骤为可选,如果确定IP地址设置无误,可忽略此步骤。设置方法如图2.所示。图2.系统块设置IP地址2、鼠标点击 MAIN 主程序的程序段1的编程区域,从库文件夹下找到 Modbus TCP 客户端指令 MBUS_CLIENT,鼠标双击,指令出现在程序段1中,操作如图3.所示。图3.添加客户端指令3、填写客户端指令参数,如图4.所示。图4.填写客户端参数程序块具体参数详细解释介绍见表3.参数及类型数据类型说明ReqINBOOL=1:表示向服务器发送Modbus 请求ConnectINBOOL=1:尝试与分配的IP地址及端口号建立连接;=0:尝试断开已经建立的连接,忽略Req的任何请求IPAddr1-4INBYTE填写 Modbus TCP 服务器的IP地址IPAddr1-4为高到低字节IP_PortINBYTE填写Modbus TCP 服务器的端口号RWINBYTE指定操作模式 =0:读;=1写AddrINDWORD要进行读写的参数的 Modbus 起始地址,本例中也即ZKA-4488-ETH寄存器地址CountININT要进行读写的参数数据长度;数字量输入/输出Count=1表示1 bit,最大1920位对于模拟量输入和保持寄存器,最大 Count 值为 120 字。本例中读取AI1~AI3模拟输入的读数,因为每个AI输入通道占用2个WORD寄存器地址,所以读取3个通道AI1~AI3就需要读取6个WORD寄存器DataPtrIN_OUTDWORD数据寄存器地址指针,指向本地用于读/写操作的数据地址区域的首地址DoneOUTBOOLTRUE:以下任一条件时为真:客户端已与服务器建立连接;客户端已与服务器断开连接;客户端已接收 Modbus 响应;发生错误FALSE:客户端正忙于建立连接或等待来自服务器的 Modbus 响应。ErrorOUTBOOL出现错误,仅一个周期有效4、鼠标选中程序块文件夹,单击右键,下拉菜单中选择库存储器,如图5.所示。图5.点击库存储器5、在库存储区分配对话框中手动输入存储区的起始地址。此实例为VB5000开始,以使指令库可以正常工作。确保库存储区与程序中其他已使用的地址不冲突。使用建议地址无法确定是否有地址重叠,所以推荐手动输入正确的库存储区首地址。如图6.所示。图6.库存储区地址分配6、编译项目,下载程序。将M0.0置位为1,然后在状态图表中创建变量,VW20-VW30 共6个字,监视值如图7.所示。图7.读取ZKA-4488-ETH的数据4关于 Modbus TCP协议及地址S7-200 SMART 做 Modbus TCP 通信,可以支持的功能码及功能描述及所占用的地址区,如表4.所示。客户端会主动的发送请求,服务器响应。在通信指令填写参数中没有直接填写功能码,而是通过多个参数填写共同确定功能码的。表4.功能码概况说明功能码(十进制)功能描述RWAddrCountCPU地址01读数字量输出 位000001-099991-1920 位Q0.0-1151.702读数字量输入 位010001-199991-1920 位I0.0-1151.703读寄存器 字040001-49999400001-4655351-120 字V区04读模拟量输入 字030001-399991-120 字AIW0-AIW11005写数字量输出 单个位100001-099991位Q0.0-Q1151.706写寄存器 单个字140001-49999400001-4655351个字V区15写数字量输出 多个位100001-099991-1920 位Q0.0-1151.716写寄存器 多个字140001-49999400001-4655351-120 字V区举例:和Modbus TCP服务器交换数据参数支持功能码:03,在客户端指令中设置两个参数确定03功能码:RW=0:确定读取数据,(筛选出可能会使用的功能码:01,02,03,04),Addr:40001-49999/400001-465535,表示交换数据为寄存器类型的数据。5 Modbus TCP 常问问题1、如何判断Modbus TCP连接是否建立?答:进行Modbus TCP通信,需要建立连接,S7-200SMART CPU作为Modbus TCP客户端时:通过Modbus TCP Client指令 MBUS_CLIENT 的符号表中的 mConnected 参数来判断,如图1.所示mConnected=1 表示已经建立连接,mConnected=0 表示尚未建立连接图1.mConnected判断连接状态注意:当PLC内存在多个客户端或者多个服务器时,不建议参考该状态点。2、如何查看错误代码?答:出现错误时,MBUS_CLIENT指令输出参数Done 会为1,但是,Done在连接建立完成,连接断开,响应完成时都会出现置位为1的情况。出现错误时,还有Error字节会显现出错误代码,仅保留一个周期时间。综上所述,查看错误代码,可以按照图3.所示的方法进行。图3.查看错误代码3、进行 Modbus TCP 通信寄存器类型数据,数据量大超过120个字如何处理?答:如果数据量超过120个字,可以进行如下两种方法操作:A、建立多个连接,不同连接之间,可以并行操作,因为占用的通信资源不同;B、建立一个连接,进行多个操作,不同操作之间需要进行轮询,同一时刻只有一个操作在进行。4、Modbus TCP通信时,如何访问地址范围大于49999 的保持寄存器?Modbus 保持寄存器地址在 40001 到 49999 这一范围内。该范围足以满足大多数应用的要求,但有些 Modbus 从站设备将数据映射到地址范围更大的保持寄存器中。 MBUS_CLIENT 指令允许参数 Addr 的附加范围,以支持 400001 至 465536 的保持寄存器地址的扩展范围。例如,要访问保持寄存器16768,请将MBUS_CLIENT 的 Addr 参数设置为416768。 扩展寻址允许访问 Modbus 协议支持的全部 65536 个可能地址。此扩展寻址仅适用于保持寄存器。5、S7-200 SMART作为 Modbus TCP客户端, 服务器为网关模块,连接多个 Modbus RTU 设备时如何区分 Modbus RTU 从站地址能?答:S7-200 SMART CPU作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,当尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备,会有报错 "无法建立连接"。如果 Modbus TCP 服务器用于 Modbus RTU 协议的网关,则 MB_UNIT_ID 可用于识别串行网络上连接的从站设备。MB_UNIT_ID用于将请求转发到正确的Modbus RTU 从站地址。一些Modbus TCP 设备可能要求MB_UNIT_ID 参数在限制范围内。该参数所在位置,如图4.所示mModbusUnitID默认值为255(16#FF),如果从站设备有多个,可以S7-200 SMART 和网关模块建立一个连接,在这个连接上通过修改UnitID的值进行UnitID的轮询。图4.mModbusUnitID6、对于一些服务器不支持写单个数字量输出位(功能码 5)/单个保持寄存器(功能码 6),S7-200 SMART 如何实现写单个位/字。答:一些 Modbus 服务器设备不支持 Modbus 功能写入单个离散输出位(Modbus 功能 5)或写入单个保持寄存器(Modbus 功能 6)。相反,这些设备只支持多位写入(Modbus 功能 15)或多寄存器写入(Modbus 功能 16)。如果服务器设备不支持单个位/字 Modbus功能,则 MBUS_CLIENT 指令将返回错误代码 1。Modbus 客户端协议允许强制 MBUS_CLIENT 指令使用多个位/字 Modbus 功能,而非使用单个位/字 Modbus 功能。可通过在 Modbus 客户端符号表中查找符号 mModbusForceMulti,并在程序执行 MBUS_CLIENT 之前更改此值,来强制多个位/字指令。将 mModbusForceMulti 设置为 TRUE,可在写入单个位或寄存器时强制使用多个位/字功能。如图5.所示。图5.mModbusForceMulti

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://image95.pinlue.com/image/57.jpg

西门子smartclient怎么用_西门子s7-200smart modbus-tcp通信实例编程详细指导相关推荐

  1. 西门子smartclient怎么用_西门子200SMART PLC软件各功能怎么用?编程必备!

    这次分享的是关于西门子STEP7- Micro/ WIN SMART软件,让入门PLC的用户更清晰的定位每个功能的应用,快速掌握其中的原理,让其帮助你上手PLC.作为新一代的小型控制器的编程和组态软件 ...

  2. 西门子smartclient怎么用_西门子官方应用Sm@rtClient Lite APP

    有条件的朋友可以试一下 The Sm@rtClient Lite App, in combination with the SIMATIC WinCC Sm@rtServer, allows remo ...

  3. 西门子smartclient怎么用_西门子触摸屏的函数全是英文的,看不懂了

    该章节包括以下主题的信息: Logoff AdjustContrast ActivateScreen ActivateScreenByNumber ActivateFirstChildScreen A ...

  4. 西门子S7-200 SMART(6ES7 288-1ST40-0AA0)相关与晨控智能CK-FR08-E00关于modbus tcp 通信配置指南

    西门子S7-200 SMART(6ES7 288-1ST40-0AA0)相关与晨控智能CK-FR08-E00关于modbus tcp 通信配置指南 准备阶段 软件:STEP 7-MicroWIN SM ...

  5. 西门子PLC-S7200smart--------------章节一modbus TCP通信

    文章目录 西门子PLC-S7200smart modbusTCP通信 一.西门子编程软件 1.西门子编程软件下载 2.软件启动和新建工程 二.modbus TCP协议 三.modbus TCP协议实践 ...

  6. 西门子s7-400闭环控制模块_西门子PLC模块CPU1517

    西门子PLC模块CPU1517-3PNDP可编程控制器现货特价 我公司经营西门子全新原装现货PLC:S7-200S7-300 S7-400 S7-1200 触摸屏,变频器,6FC,6SNS120 V1 ...

  7. 西门子smartclient怎么用_基于Snap7使用C#编程访问西门子PLC系列教程(3)-Snap7Client(建立连接)...

    本文是Snap7软件包系列教程的第3篇. 在上一篇文章中,我们介绍了S7通信协议中有三种角色:客户端/服务器/伙伴:有两种通信模式:客户端/服务器(Client/Server)模式和伙伴/伙伴(Par ...

  8. 西门子s7-400闭环控制模块_西门子6ES7312-1AE14-0AB0

    西门子6ES7312-1AE14-0AB0 西门子6ES7312-1AE14-0AB0西门子6ES7312-1AE14-0AB0西门子6ES7312-1AE14-0AB0西门子S7-300PLC应用技 ...

  9. 西门子实数转整数_西门子PLC指令全都翻译过来了!

    点击蓝字 关注我们 有时我们关注的公众号消息比较多,错过了一些自己喜欢的消息,不能及时看到工控论坛的推送,我们可以给公众号加星标或置顶.那如何星标置顶呢?[打开一篇工控论坛公众号的文章,点击文章标题下 ...

最新文章

  1. 免安装mysql8_MySQL数据库之MYSQL-8.0.11-WINX64(免安装版)配置
  2. python什么时候用类方法_小白提问:python 在什么时候用函数,什么时候用类?...
  3. 【转】构建Android平台Google Map应用
  4. spring bean依赖_Spring @Configuration并将bean依赖项作为方法参数注入
  5. 自己眼中的淡定生活!
  6. beautifulsoup解析动态页面div未展开_实战|Python轻松实现动态网页爬虫(附详细源码)...
  7. PHP_APC+Ajax实现的监视进度条的文件上传
  8. 第12章第1讲位运算符与表达式
  9. 智能建筑--常见协议
  10. Atitit golang开发环境搭建 目录 1. 编辑helo.go 1 1.1. 调试编译 1 2. Ide选择liteide 2 3. 问题解决 2 4. 附录 2 4.1. Go语言标准库常
  11. c语言小游戏百度云资源,c语言小游戏合集
  12. 反恐精英ol永恒python厉害吗_【CS】Python高阶
  13. STM32F103ZET6+ADF4351+HMI串口屏
  14. SCI收录期刊——声学学科 (转载)
  15. 手把手教你如何安装水晶易表——靠谱的安装教程
  16. python 中文变量名_大疆机甲大师Python开发: 中文命名变量初尝试
  17. 控制台、操作台、调度台如何区分?
  18. wordpress搜索引擎蜘蛛统计插件SEO
  19. 元末明初为什么会爆发农民起义
  20. CityMaker学习教程10 示例代码的使用Javascript

热门文章

  1. 西蒙菲莎计算机专业,西蒙菲沙大学计算机专业课程设置
  2. 高等数学 第九章 多元函数微分法及其应用 思维导图
  3. 迅速崛起!AICS正在引领区块链的未来!
  4. v880+ 手机自用软件介绍
  5. RFID医疗耗材管理解决方案-RFID耗材柜管理系统
  6. 能在CAD2004以下版本里面打开2007以上版本文件的外挂
  7. OpenWrt宽带小助手应用说明
  8. word恢复未保存的文件
  9. (转)彻底解决工行U盾windows 7驱动程序无法使用的问题 vista下U盾驱动问题也可以参考此方法...
  10. Stata:自选择偏误之双栏模型简介-(Double-hurdle-model)