首页 > 其他分享 >modbus设备数据 转 profinet IO项目案例

modbus设备数据 转 profinet IO项目案例

时间:2024-09-20 15:23:55浏览次数:1  
标签:网关 字节 数据类型 modbus 地址 IO profinet 数据 设备

目录
1 案例说明 1
2 VFBOX网关工作原理 1
3 准备工作 2
4 设置网关采集MODBUS从站数据 2
5 用PROFINET IO协议转发数据 8
6 案例总结 10

1 案例说明

  1. 设置网关采集Modbus设备数据
  2. 把采集的数据转成profinet IO协议转发给其他系统。

2 VFBOX网关工作原理
VFBOX网关是协议转换网关,是把一种协议转换成另外一种协议。网关可以采集西门子,欧姆龙,三菱,AB PLC,DLT645,DLT698电表,modbus rtu tcp,环保的HJ212协议,opc ua和opc da,电力的IEC103 IEC104, IEC61850等,以及EthernetIP,Profinet IO,CCLink,EtherCAT现场总线协议,bacnet,MQTT,mysql,sqlserver数据库。不同型号的网关支持不同的协议,具体支持的协议参考网关侧面标签上的型号。依托500多种型号的网关产品,可以实现多种不同协议之间的互联互通。
网关连接在不同协议的设备之间,就像一个“翻译”,把一种设备支持的协议,转换成另一种设备支持的协议,从而实现两个不同协议的设备之间的数据交换。工作架构如下:
在这里插入图片描述

3 准备工作

  1. VFBOX网关。支持采集modbus设备数据,profinet IO协议转发。
  2. 电脑。IP设置成192.168.1.198,和网关在同一个网段。
  3. 网线、12V电源。
  4. Modbus从站设备。本文用一个温湿度传感器进行测试。

4 设置网关采集modbus从站数据

  1. 硬件连接。首先确认设备的接口是RS232还是RS485接口。并按如下的方式进行连接。
    接口类型 设备 网关
    RS232接口 RX COM1-TX
    TX COM1-RX
    GND COM1-GND
    RS485接口 A COM1-A
    B COM1-B

  2. 在电脑上打开VFBOX Studio配置软件。新建工程,选择对应的设备类型。设备类型查看设备背面的标签。可选的型号有:VB301-1100,VB301-1200,VB301-1400,VB302-2400,VB303-2400.
    在这里插入图片描述

  3. 点击 新建设备,选择modbus RTU驱动。
    在这里插入图片描述

  4. 输入设备名称,自己定义设备名称。
    在这里插入图片描述

  5. 输入和设备相同的串口参数。比如,设备的波特率是9600,则下面的对话框也选择9600.
    在这里插入图片描述

  6. 增加要采集的数据。输入数据的数据类型和寄存器地址。
    在这里插入图片描述

  7. 填写说明。在添加“地址”的时候需要对modbus的通信指令有一些了解,这里面有一些默认的规则。可先查看设备的说明书,找到要读取的地址。然后通过对比下表进行设置。
    数据区 功能说明
    0X Digital Coils 数据类型:Boolean
    读写:可读写
    寄存器地址:00001-09999(10进制), 协议地址:0000H-270FH(16进制)
    对应的功能码:01H 05H 0FH
    1X digital Inputs 数据类型:Boolean
    读写:只读
    寄存器地址:10001-19999(10进制), 协议地址:0000H-270FH(16进制)
    对应的功能码:02H
    3X Analog Inputs
    数据类型:
    1 Register: short word
    2 Register: Long Dword float
    4 Register: LLong Qword Double
    读写:只读
    寄存器地址:30001-39999(10进制), 协议地址:0000H-270FH(16进制)
    对应的功能码:04H
    4X Holding Registers 数据类型:
    1 Register: short word
    2 Register: Long Dword float
    4 Register: LLong Qword Double
    读写:可读写
    地址范围:40001-49999(10进制),0000H-270FH(16进制)
    对应的功能码:03H 06H 10H
    其他说明:

  8. 地址可填写5位或者6位的地址长度。

  9. 如果设备的地址是从0开始,则设置网关时地址加1。

  10. 地址是10进制。

举例1:假设要读取的地址是40015,数据类型是float,地址从0开始,则查看上表,40015对应的数据区是“4X Holding Registers”,且数据类型是float,则数据区选择“4X Holding Registers(2 Registers)”,设备地址从0开始,则在网关里配置为40016,配置如下:
在这里插入图片描述

举例2:假设读取数据的功能码是03,地址是0x39,地址从1开始,数据类型是double。查看上表可知,03功能码对应的数据区是“4X Holding Registers”,数据类型是double,则数据区选择“4X Holding Registers(4 Registers)”,地址是0x39,转换成10进制是57,则设置如下:
在这里插入图片描述

  1. 设置完成后,点击菜单“下载”,把工程下载到网关里。

  2. 点击菜单“查看数据”,查看网关采集到的数据。
    在这里插入图片描述

  3. 如果显示的数据和实际不匹配,可能是字节顺序要调整。在下面的窗口中可以修改波特率,扫描间隔,通讯超时,字节顺序等参数。
    在这里插入图片描述

  4. 数据类型
    网关支持多种数据类型,用户在添加的时候可以根据采集到数据选择对应的数据类型。不同的设备可能有不同的数据类型名称,可对应选择。
    Boolean 位,布尔变量。变量存储为 8 位(1 个字节)的数值形式,但只能是True 或是 False。
    Char 有符号数,有负数。占用一个字节,8位。
    Byte 无符号数,占用一个字节,8位。
    Short 有符号短整型。有负数。长度2个字节,16位。
    Word 无符号的短整型,长度2个字节,16位。
    Long 有符号长整型,有负数。长度4个字节,取值范围为:-2^31 ~ (2^31 -1)。
    DWord 无符号的长整型,且占4个字节,32位。
    Float 单精度浮点型数据,长度 4 个字节,包括一个符号位、一个 8 位 二进制指数和一个 23 位尾数。浮点型转换成10进制数据的时候请注意字节顺序问题。在不同的设备中字节顺序不同,有4种不同的字节顺序:1234、4321、3412、2143。网关在转发浮点型数据的时候,不对字节顺序进行调整,所以在转换的时候请参考被采集设备的浮点数顺序。
    LLong LLong是长度为8个字节的有符号整数。有负数。
    Qword Qword是长度为8个字节的无符号整数。
    Double 双精度浮点(double)型,占8 个字节(64位)内存空间。

5 用profinet IO协议转发数据

  1. 点击菜单 Profinet IO。启用设置成Yes。
    在这里插入图片描述

  2. 把数据分别加到Input Module和Output Module下。Input Module是网关发送给PLC的数据。Output是PLC发送给网关的数据。
    在这里插入图片描述

  3. 设置完成后,点击“下载”,把工程下载到网关中,则网关启动了Profinet IO功能。

  4. 下载完成后,点击“Generate GSDML File”生成GSD文件,导入到其他设备中组态。先点击下载工程,再生成GSD文件。
    在这里插入图片描述

  5. 导入到博途时,需要把下面两个地方的时间设置成如下的值,或者比图中的设置值更大。
    在这里插入图片描述

  6. 博途中要“手动”设置网关IP地址和网关的名称。取消选中“自动生成profinet设备名称”
    在这里插入图片描述

  7. 加了设备后,要添加Input Module,Output Module
    在这里插入图片描述

6 案例总结
使用协议转换网关可以很方便的实现不同协议的设备之间的数据转换。大量节省了项目实施过程的时间成本,人力成本。VFBOX网关产品都是工业级品质,符合工业应用的场景。只需要简单的参数配置,可以很快完成设备和系统之间的连接。方案优点:

  1. 不需要修改设备里的程序。
  2. 不影响设备原有的工作方式和功能。
  3. 只需要简单的配置就可以实现功能需求。
  4. 设备长期稳定工作。
  5. 网关运行架构如下
    在这里插入图片描述

标签:网关,字节,数据类型,modbus,地址,IO,profinet,数据,设备
From: https://www.cnblogs.com/vfbox22/p/18422589

相关文章

  • Educational Codeforces Round 136 (Rated for Div. 2) D. Reset K Edges
    这道题目我们可以考虑二分做,二分出最终的深度,然后尝试是否能使用不超过\(k\)次操作使得深度符合条件。考虑如何和判断,我们可以从根节点开始搜索,如果当前点的深度为\(mid+1\),就对当前点进行操作。但很可惜,这种贪心方法可以很容易的举出反例,比如深度为\(mid\)的点下面有很多个叶......
  • Gradio离线部署到内网,资源加载失败问题(Gradio离线部署问题解决方法)
    问题描述Gradio作为一个快速构建一个演示或Web应用的开源Python包,被广泛使用,最近在用这个包进行AI应用构建,打包部署到内网Docker的时候发现有些资源无法使用。网页加载不出来。即使加载出来了也是没有样式无法点击的。一般出现这个问题的多半是低版本的gradio,高版本中已经解决......
  • 帝国CMS报错Deprecated: Function get_magic_quotes
    当使用帝国CMS时遇到“Deprecated:Functionget_magic_quotes”这类报错,通常是因为PHP版本升级后,某些旧的函数被弃用。get_magic_quotes_gpc() 函数在PHP5.4中已被弃用,并在PHP7.0中被移除。原因分析PHP版本升级:如果你的服务器从较旧的PHP版本(如5.3或更低)升级到了PHP7.......
  • 兼收并蓄 TypeScript - 类: function
    源码https://github.com/webabcd/TypeScriptDemo作者webabcd兼收并蓄TypeScript-类:function示例如下:class\function.ts{//定义函数时要指定参数的类型和返回值的类型,无返回值时可以用void表示functionf1(x:number,y:number):number{retur......
  • 有意思的 std::disjunction
    #include<cstdint>#include<string>#include<type_traits>//values_equal<a,b,T>::valueistrueifandonlyifa==b.template<autoV1,decltype(V1)V2,typenameT>structvalues_equal:std::bool_constant<V1==V2&......
  • WPF behavior InvokeCommandAction CommadParameter pass selectedItem of currentcon
    <ListBoxx:Name="lbx"SelectedIndex="0"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsContainerVirtualizable="True"......
  • WPF behavior InvokeCommandAction CommandParameter
    <ListBoxx:Name="lbx"SelectedIndex="0"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsContainerVirtualizable="True"......
  • WPF behavior InvokeCommndAction PassEventArgsToCommand
    //xaml<ListBoxx:Name="lbx"SelectedIndex="0"ItemsSource="{BindingBooksCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"VirtualizingPanel.IsContainerVirtualizable="Tru......
  • 论文阅读笔记:Sapiens: Foundation for Human Vision Models
    Sapiens:FoundationforHumanVisionModels1背景1.1问题1.2目标2方法3创新点4模块4.1Humans-300M数据集4.2预训练4.32D位姿估计4.4身体部位分割4.5深度估计4.6表面法线估计5实验5.1实现细节5.22D位姿估计5.3身体部位分割5.4深度估计5.5表面法线估......
  • C++扫盲--直接构造(Direct Initialization)
      在C++中,直接构造(DirectInitialization)是由一种对象构造的方式,它直接调用类的构造函数来初始化对象。这种方式通常用于创建对象时立即提供必要的参数。直接构造的语法如下:ClassNameobjectName(arguments);其中,ClassName是类的名称,objectName是要创建的对象的名称,argument......