实现S7-200smart通过MODBUS TCP/IP与matlab通讯

这篇具有很好参考价值的文章主要介绍了实现S7-200smart通过MODBUS TCP/IP与matlab通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

S7-200smart通过MODBUS TCP/IP与matlab通讯

两台PLC之间建立Modbus TPC/IP通讯

MODBUS TCP Client梯形图各个参数的功能:

MODBUS TCP Server梯形图各个参数的功能:

两台S7-200smart之间通过Modbus TCP连接:

MATLAB端建立Modbus TCP客户端:

通过函数建立Modbus TCP客户端

通过Matlab-Industment Control工具箱进行连接


S7-200smart通过MODBUS TCP/IP与matlab通讯

两台PLC之间建立Modbus TPC/IP通讯

STEP 7-MicroWIN SMART自V2.4版本后,用户可以在库中直接调用MODBUS模块

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

MODBUS TCP Client梯形图各个参数的功能:

EN: 使能;

Req: 发送通信请求,ON允许通信,OFF禁止通信;

Connect: 建立连接,ON连接,OFF断开:

IPAddr1-4:服务器的IP地址(如192.168.2.1);

IP_PORT指的是客户端尝试连接、且随后使用 Modbus TCP 进行通信的服务器的端口号:默认值502 将端口设置为设备的实际端口号

RW指示该操作是读还是写:0=读取;1=写入

Addr指的是要读或者是写的服务器的起始地址,这里填写的是40026,对应服务器一侧为&VB100;

COUNT: Modbus数据长度;此请求中要访问的位或保持寄存器的数量;

DataPtr指客户端的起始地址

MODBUS TCP Server梯形图各个参数的功能:

MaxIQ:MaxlQ:开放可访问IQ点数量;MaxAl:开放可访问Al数量;将可用于Modbus地址0xxxx到1xxxx的I和Q点数设置为0-256。0表示禁用对输入和输出所有读取和写入。建议将值设置为256

MaxAI:MaxlQ:开放可访问IQ点数量;MaxAl:开放可访问Al数量;将可用于Modbus地址3xxxx的字输入数设置为0-56.0表示禁用对模拟量输入的读取。要允许访问所有CPU模拟量输入,建议对于CPU CR40和CR60设置为0;对于其他型号设置为56

MaxHold:可用于Modbus地址4xxxx或4yyyyy的V存储器中的字保持寄存器数,不能与库存储区分配地址产生重叠。若允许Modbus客户端访问2000字节的V存储器,则将其值改为1000字。

HoldStart:指向V存储器中保持寄存器起始位置的指针。通常设置为&VB0,可更改

MODBUS地址40001对应的VWQ地址。&VBO则表示40001代表vwo,&VB100则表示40001代表VW100。

两台S7-200smart之间通过Modbus TCP连接:

现将客户端VW100开始的10个字写入服务器VW50开始的十个字中;服务器VW100开始的10个字读取到客户端VW50开始的10个字中。

客户端一侧程序

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

服务器一端程序:

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

一台服务器不能连接多台客户端,但是服务器又可以作为客户端与其它服务器通信。每台服务器只能定义一个端口,不同服务器的端口可以相同。

MATLAB端建立Modbus TCP客户端:

通过函数建立Modbus TCP客户端

MATLAB R2017a中引入了modbus函数:

modbus函数:创建连接对象,可创建ModBus TCP和RTU连接。

read函数:用于读取Server端寄存器的数据,读取顺序与寄存器的顺序一致,可通过定义数据类型和变量数量来快速获取所需的数据。

write函数:用于对连接到Modbus服务器执行写操作

writeRead函数:在单个Modbus中对一组保持寄存器执行写然后读操作

maskWrite函数:在保持寄存器上执行掩码写入操作

instrhwinfo函数:有关可用硬件的信息

clear函数:从MATLAB工作区中删除仪器对象

MATLAB是以十进制显示。MATLAB最终读取的数据为double类型,由于无法做底层操作,如果想得到二进制、十六进制值,可使用MATLAB提供的转化函数dec2bin、dec2hex等转为了char类型的数据。

Property 类型 描述
DeviceAddress TCP/IP 如果传输是TCP/IP,则在创建对象时需要MODBUS服务器的IP地址或主机名,例如“192.168.2.1”。
Port TCP/IP 如果传输是TCP/IP,则在创建对象期间是可选的,MODBUS服务器使用的远程端口。默认值为502。
Timeout TCP/IP;RTU 等待MODBUS服务器响应的最长时间(秒),指定为double类型的正值。默认值为10。可以在创建对象期间或创建对象后更改值
NumRetries TCP/IP;RTU 如果超时后服务器没有回复,则要执行的重试次数。如果使用串行RTU传输,则会重新发送该消息。如果使用TCP/IP传输,连接将关闭并重新打开。
ByteOrder TCP/IP;RTU 写入16位寄存器或从16位寄存器读取的值的字节顺序。有效的选择是“big-endian”和“little-endian”。默认值为“big-endian”,由MODBUS标准指定。
WordOrder TCP/IP;RTU 跨多个16位寄存器的寄存器读写的字顺序。有效的选择是“big-endian”和“little-endian”。默认值是“big-endian”,并且它依赖于设备。

使用Modbus Slave模拟

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

读取代码如下

% 创建客户端
m = modbus('tcpip','192.168.2.1',502) %类型TCP/IP  IP地址192.168.2.1 端口502

% 属性查看
m.ByteOrder
ans =
    'big-endian'  
%要更改 代码为m.ByteOrder = 'little-endian';

m.Port
ans =
   502

% 设置属性
m.Timeout = 3   %超时时间为3s
m = 
Modbus TCPIP with properties:
    DeviceAddress: '127.0.0.1'
             Port: 502
           Status: 'Connected'
       NumRetries: 1
          Timeout: 3 (seconds)
        ByteOrder: 'big-endian'
        WordOrder: 'big-endian'
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% read(obj,'holdingregs',address,count)
% read(obj,target,address,count,serverId)  % 指定Server ID
% read(obj,target,address,count,precision) % 指定数据读取格式
% read(obj,target,address,count,serverId,precision) % 同时指定Server ID和数据读取格式

% 读取,以保持寄存器的方式读取,read列表为modbus对象、寄存器类型、开始地址(从1开始)、读取的个数、读取的类型
>> read(m,'holdingregs',3,1,'int16')
ans =
    23

% 单精度浮点型数据的读取
>> read(m,'holdingregs',5,1,'single')
ans =
   10.1100

% 断开并清除Modbus连接
clear m

发送代码如下

% 创建客户端
m = modbus('tcpip','192.168.2.1',502)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% write(m,target,address,values)
% write(m,target,address,values,serverId,'precision')  %同时指定Server ID和数据读取格式

write(mbConnector,'holdingregs',10,1235,'int16')
write(mbConnector,'holdingregs',1,[1 2 3],'int16')

% 断开并清除Modbus连接
clear m

通过Matlab-Industment Control工具箱进行连接

在Matlab 2022b中选中APP-Modbus Explorer 

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

选择配置Modbus TCP/IP

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

按照以下步骤通过TCP/IP与Modbus仪器进行通信。

1.在打开的配置选项卡中,在toolstrip中设置以下通信参数,以配置与设备的连接:

设备地址:Modbus服务器的IP地址,例如192.168.2.20。此参数是建立连接所必需的。
端口:Modbus服务器使用的远程端口。默认值为502。如果使用不同的端口号,请更改。
超时:等待Modbus服务器响应的最长时间(秒),指定为正值。默认值为3。您可以编辑该值以增加或减少超时时间。
字节顺序:写入16位寄存器或从16位寄存器读取值的字节顺序。默认值为Big Endian,由Modbus标准指定。如果您的设备需要Little Endian,请更改下拉列表中的值。
字序:跨越多个16位寄存器的寄存器读写的字序。默认值是Big Endian,并且它是特定于设备的。如果您的设备需要Little Endian,请更改下拉列表中的值。

2.在toolstrip中设置以下读取参数,以配置从设备读取数据:

服务器ID:将读取命令发送到的服务器的地址,指定为双精度。如果未指定服务器ID,则使用默认值1。有效值为1-247。
寄存器类型:要读取的目标区域。您可以对四种类型的目标执行Modbus读取操作:线圈、输入、输入寄存器和保持寄存器。使用下拉列表选择您的类型。
寄存器地址:从中读取的起始地址,指定为双精度。输入起始地址的号码。
精度:Modbus服务器上正在读取的寄存器的数据格式。对于线圈和输入,精度始终是位。对于保持寄存器和输入寄存器,可以指定精度,例如uint16。

3.要测试配置,请按“读取”按钮。如果您的配置参数正确,则读取成功,并且读取值将填充读取的值。如果出现错误,请调整参数,直到读取成功。
4.此值需要与设备手册中列出的值相匹配。请确保此值和其他配置参数与设备的规格相匹配。
获得正确的读取值后,按下Confirm Parameters(确认参数)按钮。选项卡的其余部分出现,您的设备列在应用程序左侧的设备列表中。
5.使用该表设置设备的读取。在配置选项卡中输入的寄存器详细信息显示在寄存器表的第一行。toolstrip中的按钮用于将行插入表中以及移动或删除行。然后将信息添加到行中。每一行表示从列出的目标类型和地址读取的数据。或者,可以使用“导入”按钮导入以前导出的信息表。

将Modbus Slave设置为如下

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

在matlab中读取到的数据如图所示

200smartmdbustcp/ip通讯,tcp/ip,matlab,笔记,网络协议

2023.9.25

参考文章:S7-200SMART 实现MODBUS TCP通信的具体方法示例(客户端读写+服务器响应)_AAA_自动化工程师的博客-CSDN博客

MATLAB - Modbus TCP客户端的使用_matlab使用modbus tcp write函数出现timeout_罗伯特祥的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-768556.html

到了这里,关于实现S7-200smart通过MODBUS TCP/IP与matlab通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • S7 200SMART与WINCC通讯(MODBUSTCP)

    1.激活s7 200smart以太网端口并设置IP地址 2.调用MBUS_SERVER程序块,并设置相关参数,下载项目到200smart中 3.给MBUS_SERVER程序块分配存储器地址 4.进入WINCC项目管理器,打开变量管理,添加Modbus TCPIP通讯协议 5.新建连接并设置连接参数 6.新建变量,设置数据类型和相应modbus地址,和

    2024年02月05日
    浏览(35)
  • 基于西门子S7-200smart作为客户端的modbustcp通讯

    具体PLC实施及排配和上位机modbustcp对应地址关系 1.启动按钮—I0.0 -------modbus地址:2000 2.停止按钮—I0.1 -------modbus地址:2001 3.急停按钮—I0.2 -------modbus地址:2002 4.进料感应器—I0.3 -------modbus地址:2010 5.出料感应器—I0.4 -------modbus地址:2015 6.电机运行—Q0.0 -------modbus地址:2

    2024年02月03日
    浏览(69)
  • python通过S7协议读取西门子200smart数据

    发现网上很多关于python通过s7协议控制200smart的代码都失败,我猜应该是版本的问题。自己捣鼓了半天,终于测试成功   写PLC 写PLC用到的方法为 write_area(area,dbnumber,start,data) 说明如下:area表示往哪个区去写,如:plc.write_area(client.Areas.DB,1,2,bytes)                 dbnumber:如果是

    2024年01月25日
    浏览(40)
  • 【2023】java通过modbus4j实现modus TCP通讯

    主要分为三个子协议 RTU ASCII TCP Modbus RTU:——传输的是字节数组(bit[]) 通信:读写 输出:可以读写 输入:只能读 存储区:输出线圈、输入线圈、输出寄存器、输入寄存器 线圈:代表一个布尔量、最小单位是一个布尔(1或者0), 寄存器:一个寄存器代表16个最小单位,主

    2024年02月12日
    浏览(42)
  • S7-200 SMART 老版本固件更新

    手里有一块S7-200 SMART PLC SR20,不知道什么年头的产品,最近翻出来想让其发挥一下余热。于是上 西门子S7 200 SMART 官网 下载 STEP 7-MicroWIN SMART,默认就是最新版本2.7, PC Access SMART 2.3,一路Next 下来,重启查找PLC,没问题,直接可以找到。想看看PLC内原有什么程序,点击上传,结

    2024年02月05日
    浏览(102)
  • S7-1200PLC的TCP/IP通讯

    图1 TSEND_C指令 如图是TSEND_C指令,它的作用是建立连接并发送数据。对于其中各个参数的作用如下表: 参数 说明 REQ 在上升沿启动发送作业 CONT 控制通信连接 CONNECT 指向连接描述结构的指针 DATA 指向发送区的指针,该发送区包含要发送数据的地址和长度 DONE 状态参数,可表示发

    2024年04月10日
    浏览(44)
  • ​Profinet转EtherNET/IP从站连接欧姆龙plc与西门子200smart通讯的配置方法​

    本案例是200smart plc与欧姆龙plc进行通讯的方法,远创智控YC-PNM-EIP网关可以读写全系列西门子 PLC 数据。一般不需要 PLC 里做特殊的设置。只需要把 PLC 的变量地址配置到网关中,网关就可以读取指定地址的数据或者写数据到指定的地址。 PLC 通过网线连接到网关,设备 PLC 和网

    2024年02月08日
    浏览(41)
  • 西门子S7-200 SMART软件的下载安装步骤

    访问西门子官网:https://www.siemens.com/cn/zh.html,进入后在左上角产品与服务,依次进入该目录: 实在找不到在右上角放大镜直接搜索smart200 点击进入即可,然后就进入到了这个页面 这里找不到软件下载的地方,点击SIMATIC S7-200 SMART返回上一层目录 然后点击第一个下载即可,截

    2024年02月09日
    浏览(239)
  • 西门子S7-200 SMART控制步进电机(二)

    目录 一、开环运动控制方法 二、运动轴概述 三、配置运动控制向导        S7-200 SMART CPU提供三种开环运动控制的方法:        1、脉冲宽度调制(PWM):内置于CPU中,用于速度、位置或占空比的控制        2、脉冲串输出(PTO):内置于CPU中,用于指定长度脉冲或指定距

    2024年02月04日
    浏览(39)
  • 力控软件与S7-200SMART无线PPI通信

    在实际系统中,人机界面与PLC通常不在一起,中心计算机一般放置在控制室,而PLC安装在现场车间,二者之间距离往往从几十米到几千米。如果布线的话,需要挖沟施工,比较麻烦,这种情况下比较适合采用无线通信方式。因为采用无线PPI协议响应速度快且不需要编程,只需

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包