IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> LabVIEW 2020 实现最简单的Modbus TCP客户端程序(二) -> 正文阅读

[网络协议]LabVIEW 2020 实现最简单的Modbus TCP客户端程序(二)

目录

一、序言

二、设计前面板

1、运行NI LabVIEW 2020(32位)

2、创建一个文件名为:TCP_MODBUS的vi文件

3、前面板创建一个数值型数组控件。

4、前面板创建一个布尔型数组控件。

5、前面板创建一个开关量按钮控件。

三、设计程序框图

1、在程序框图添加一个While循环

?2、MODBUS TCP库拖一个New TCP MAster控件

?3、MODBUS TCP库拖一个Read Holding Registers控件

4、MODBUS TCP库拖一个Read Discrete控件

?5、连线开关量按钮和While循环

?6、While循环添加1个100毫秒的定时器

?7、连线New TCP MAster控件、Read Holding Registers控件和Read Discrete Inputs控件

四、验证

?五、问题



一、序言

? ? ? ? 上一个教程LabVIEW 2020 实现最简单的Modbus TCP客户端程序(一)只实现了最简单的Modbus TCP客户端程序,本节我们设计一个稍微复杂一点的Modbus TCP客户端程序,完成如下功能:

? ? ? ?(1)、LabVIEW Modbus TCP客户端程序读取服务器10个保持寄存器的值,即:读取40001,40002,40003,40004,40005,40006,40007,40008,40009,40010。

? ? ? (2)、LabVIEW Modbus TCP客户端程序读取服务器10个离散输入寄存器的值,即:读取10001,10002,10003,10004,10005,10006,10007,10008,10009,10010。

? ? ? (3)、准备工作参见上一个教程:LabVIEW 2020 实现最简单的Modbus TCP客户端程序(一)

二、设计前面板

1、运行NI LabVIEW 2020(32位)

2、创建一个文件名为:TCP_MODBUS的vi文件

3、前面板创建一个数值型数组控件。

? ? ? 前面板创建一个数值型数组控件,用来存储保持寄存器内容40001---40010。

? ? ? (1)、前面板空白处单击鼠标右键,弹出【控件】窗口

? ? ? ? ? ? ? ??

? ? ? (2)、【控件】--->【数据容器】--->数组

? ? ? ? ? ? ? ? ? 拖出1个数组控件到前面板(这个数组控件用来存储保持寄存器内容40001---40010)。

? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ??

? ? ? (3)、【控件】--->【数值】--->数值显示控件

? ? ? ? ? ? ? ? ? ? 拖出1个数值显示控件到数组控件中。

? ? ? ? ? ? ? ? ? ? 数值显示控件正在往数组控件中放的过程如下图?

?

?? ? ? ? ? ? ? ? ? ? 数值显示控件已经放到数组控件中,然后鼠标把数组控件的下边框往下拉,直到至少露出10个数值显示控件,参见下图。(这个数组控件用来存储保持寄存器内容40001---40010)

?? ? ? (4)、数组控件中的前面10个数值显示控件的表示法依次修改为U16

4、前面板创建一个布尔型数组控件。

? ? ? 前面板创建一个布尔型数组控件,用来存储离散输入寄存器内容10001---10010。

?(1)、【布尔】--->方形指示灯

前面板【布尔】下拖动一个方形指示灯到【数组2】数组控件。

?

?

?布尔型方形指示灯控件已经放到数组控件中,然后鼠标把数组控件的下边框往下拉,直到至少露出10个方形指示灯控件,参见下图。(这个数组控件用来存储离散输入寄存器内容10001---10010)

5、前面板创建一个开关量按钮控件。

? ? ? 前面板创建一个开关量按钮控件,用来退出While循环。

三、设计程序框图

设计程序框图包括以下几个方面:

(1)、在MODBUS TCP库拖一个New TCP MAster控件

? ? ? ? ? ? ?填写IP地址127.0.0.1,填写端口号502,然后连线。

(2)、在MODBUS TCP库拖一个Read Holding Registers控件

? ? ? ? ? ? ? 填写起始地址0,填写寄存器数量10(表示读保持寄存器或者说4X寄存器,40001-40010),然后连线。

(3)、在MODBUS TCP库拖一个Read Discrete Inputs控件

? ? ? ? ? ? ? 填写起始地址0,填写寄存器数量10(表示读离散输入寄存器或者说1X寄存器,10001-10010),然后连线。

1、在程序框图添加一个While循环

程序框图空白处单击右键,【函数】--->【结构】--->While循环

?2、MODBUS TCP库拖一个New TCP MAster控件

? ? ? ? (1)、程序框图空白处单击右键,【函数】--->【数据通信】--->【Modbus_Library】--->【Master API】--->Create Modbus Instance控件

? ? ? ? ?(2)、添加1个字符串常量控件,用来填写IP地址27.0.0.1

? ? ? ? ?(3)、添加1个数值常量控件,用来填写端口号502

? ? ? ? ?(4)、添加1个数值常量控件,用来填写超时时间 5000毫秒

? ? ? ? ?(5)、连线IP地址、端口号和超时时间到New TCP MAster控件。

?3、MODBUS TCP库拖一个Read Holding Registers控件

? ? ? ? (1)、程序框图空白处单击右键,【函数】--->【数据通信】--->【Modbus_Library】--->【Master API】--->Read Holding Registers控件

? ? ? ? ?(2)、添加1个数值常量控件,用来填写起始地址0

? ? ? ? ?(3)、添加1个数值常量控件,用来填写寄存器数量10

? ? ? ? ?(4)、连线起始地址、寄存器数量到Read Holding Registers控件。

? ? ? ? ?(5)、连线Read Holding Registers控件的输出端到数值型数组。

? ? ? ? ? ? ? ? ? ? ? 数值型数组中存储的就是我们读取的保持寄存器数值。

4、MODBUS TCP库拖一个Read Discrete控件

? ? ? ? (1)、程序框图空白处单击右键,【函数】--->【数据通信】--->【Modbus_Library】--->【Master API】--->Read Discrete Inputs控件

?? ? ? ? ?(2)、添加1个数值常量控件,用来填写起始地址0

? ? ? ? ?(3)、添加1个数值常量控件,用来填写寄存器数量10

? ? ? ? ?(4)、连线起始地址、寄存器数量到Read Discrete Inputs控件。

? ? ? ? ?(5)、连线Read Discrete Inputs控件的输出端到布尔型数组。

? ? ? ? ? ? ? ? ? ? ? 布尔型数组中存储的就是我们读取的离散输入寄存器数值。

?5、连线开关量按钮和While循环

?6、While循环添加1个100毫秒的定时器

While循环添加1个100毫秒的定时器,用于MODBUS TCP客户端每隔100毫秒访问一次MODBUS TCP服务器。

?(1)、先添加1个定时器

?(2)、添加一个数值常量控件,值为100,表示100毫秒,然后连线到定时器

?7、连线New TCP MAster控件、Read Holding Registers控件和Read Discrete Inputs控件

四、验证

1、运行MBSlave.exe?仿真软件(MODBUS TCP服务器)

?2、创建保持寄存器起始地址=1,寄存器数量=10

??3、创建离散输入寄存器起始地址=1,寄存器数量=10

?4、连结网络

?5、运行labVIEW MODBUS客户端程序

?6、TCP MODBUS客户端收到TCP MODBUS服务器的数据(MBSlave)

? ? ? ?(1)、在TCP MODBUS服务器上设置40001=10,40002=20,40003=30,40004=40,40005=50,40006=60,40007=70,40008=80,40009=90,40010=100

? ? ? ?(2)、在TCP MODBUS服务器上设置10001=ON,10002=ON,10003=OFF,10004=OFF,10005=ON,10006=ON,10007=OFF,10008=OFF,10009=ON,10010=ON

? ? ? ? ?可以看到labVIEW?客户端接收正确。

? ? ? ? ? 验证完毕。

?五、问题

? ? ? ? 当运行一段时间后会弹出如下错误对话框,同时通信中断,请知道的网友告诉在下该如何解决。

? ? ? ? 主要想解决如下异常情况:

? ? ? ? (1)、服务器突然异常(例如:服务器突然断电,过一会服务器正常) ,TCP MODBUS通信是否自动恢复正常。?

? ? ? ? (2)、服务器突然异常(例如:退出服务器仿真软件,过一会服务器仿真重新正常运行) ,TCP MODBUS通信是否自动恢复正常。?

? ? ? ??(3)、网线突然拨掉,过一会网线连接好,TCP MODBUS通信是否自动恢复正常。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 08:11:23  更:2021-07-28 08:13:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:24:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码