| |
|
开发:
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客户端程序(二) |
目录 ?2、MODBUS TCP库拖一个New TCP MAster控件 ?3、MODBUS TCP库拖一个Read Holding Registers控件 4、MODBUS TCP库拖一个Read Discrete控件 ?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地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |