LabVIEW 2020 实现最简单的Modbus TCP客户端程序(二)

LabVIEW 2020 实现最简单的Modbus TCP客户端程序系列教程:

        LabVIEW 2020 实现最简单的Modbus TCP客户端程序(一)

        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通信是否自动恢复正常。

六、源程序

本教程提供

         (1)、labVIEW2020源程序

         (2)、mbslave.exe  TCP从站仿真软件

下载链接:

https://download.csdn.net/download/ba_wang_mao/20597048

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值