爱招飞帮助手册 爱招飞帮助手册
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
首页
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 系统工具
    • 系统管理
    • 数据库工具
    • 专用模板
    • 外部功能
    • 开发流程
    • 函数代码
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 基本入门
    • 功能介绍
    • 控件说明
    • 功能用法
    • 专用模板
    • 开发流程
    • 函数程序
  • 开发手册
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 报表设计
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • RestAPI
    • WebSocket
  • 学习手册

    • 安装配置
    • 快速上手
    • 程序架构
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
  • 学习手册

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 预设资料
    • RestAPI说明
    • WebSocket说明
    • MQTT说明
    • Python说明
    • 自定程序
    • 运行卫士
    • 自动化作业
    • 函数程序
    • 控件使用
  • 开发手册
  • FastERP
  • FastWeb
  • Smart
  • PinToo
  • Flying
  • TARS
  • 通用功能

    • Report
    • Script
    • Echarts
    • Chart
    • DB Install
    • HiDesk
    • HiNAT
    • FastBPM
    • ReportBuilder
  • Smart帮助主页
  • 学习手册

  • 开发手册

    • 通讯协议

      • 串口

      • 蓝牙Bluetooth

      • 无线网WIFI

      • ModbusRTU

      • ModbusTCP

        • ModbusTCP控件使用
          • 1. 说明
          • 2. 设计明细
          • 3. 程序设计
            • 3.1. 程序初始设置
            • 3.2. 事件设置
          • 4. 运行结果
        • ModbusTCP控制LED灯
        • ModbusTCP读取温湿度
      • OPC

      • MQTT

      • RestAPI

      • HTTP

    • 交互输出

    • 媒体存取

    • 人工智慧

    • 实例运用

目录
1. 说明
2. 设计明细
3. 程序设计
3.1. 程序初始设置
3.2. 事件设置
4. 运行结果

ModbusTCP控件使用

# Smart之ModbusTCP控件使用

# 1. 说明

  范例实现ModbusTCP控件的使用。为连接ModbusTCP设备调试提供基础。Modbus是工业界广泛使用的通信协议,使用该控件可用于控制工业设备,采集数据信息等功能。在使用以下功能之前,需提前在计算机上安装Modbus Slave或者其他Modbus仿真软件,在仿真软件上开启ModbusTCP,使计算机获取设备的IP地址。

  通过范例学习,可以掌握Modbus的基本通讯功能,并结合ModbusTCP控件进行仿真控制功能。

# 2. 设计明细

  开启Smart智慧控制平台,分别加入下插图之控件。或者通过点击菜单栏[文件]-[打开项目]选择范例项目文件来打开该范例。

ModbusTCP控件使用 UI布局

  ①:TModbusTCP组件,控件名称为ModbusTCP1。

  ②:TImage组件,控件名称为Image1。

  ③:TLabel组件,控件名称为Label2。

  ④:TLabel组件,控件名称为Label1。

  ⑤:TEdit组件,控件名称为EditHost。

  ⑥:TLabel组件,控件名称为Label3。

  ⑦:TEdit组件,控件名称为EditPort。

  ⑧:TBitBtn组件,控件名称为BitBtnConnect。

  ⑨:TMemo组件,控件名称为Memo1。

  ⑩:TBitBtn组件,控件名称为BitBtn01。

  (11):TBitBtn组件,控件名称为BitBtn02。

  (12):TBitBtn组件,控件名称为BitBtn03。

  (13):TBitBtn组件,控件名称为BitBtn04。

  (14):TBitBtn组件,控件名称为BitBtn05。

  (15):TBitBtn组件,控件名称为BitBtn06。

  (16):TBitBtn组件,控件名称为BitBtn15。

  (17):TBitBtn组件,控件名称为BitBtn16。

  • Main窗体属性设置

    • Caption:设置窗体标题=ModbusTCP控件使用。
    • ClientHeight:设置窗体显示区的高度=394。
    • ClientWidth:设置窗体显示区的宽度=534。
  • ①ModbusTCP属性设置

    • Host:设置设备的地址。设置为Modbus 模拟器所在的IP地址,例如192.168.0.110。
    • Port:设置设备的端口号,设置为Modbus模拟器的端口号,默认为502。
  • ②Image1属性设置

    • Align:设置对齐方式,设定为alClient。
    • Stretch:设置图片拉伸对齐,设定为True。
    • Picture:设置图片。点击Picture属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。
  • ③Label2属性设置

    • AutoSize:设置控件大小与字体自适应=True。
    • Caption:设置显示标签的内容=设备地址:。
    • Font:设置字体,点击该属性右侧[...]按钮或者双击该属性打开字体设置界面,设置内容如下。
  • ④Label1属性设置

    • AutoSize:设置控件大小与字体自适应=True。
    • Caption:设置显示标签的内容=ModbusTCP控件使用。
    • Font:设置字体,点击该属性右侧[...]按钮或者双击该属性打开字体设置界面,设置内容如下。
  • ⑤EditHost属性设置

    • Height:设定控件高度=21。
    • Width:设定控件宽度=121。
    • Text:设定编辑框中的文本,此处设定为指定的IP地址。
    • Name:控件名称,设定为EditHost。
  • ⑥Label3属性设置

    • AutoSize:设置控件大小与字体自适应=True。
    • Caption:设置显示标签的内容=端口:。
    • Font:设置字体,点击该属性右侧[...]按钮或者双击该属性打开字体设置界面,设置内容如下。
  • ⑦EditPort属性设置

    • Height:设定控件高度=21。
    • Width:设定控件宽度=73。
    • Text:设定编辑框中的文本,此处设定为指定的端口号。
    • NumberOnly:设定是否只允许输入数字,设定为True。
    • Name:控件名称,设定为EditPort。
  • ⑧BitBtnConnect属性设置

    • Caption:设定按钮显示的文字内容,设定为连接。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=92。
    • Name:设定控件名称,为BitBtnConnect。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • ⑨Memo1属性设置

    • Height:设定控件高度=149。
    • Width:设定控件宽度=460。
  • ⑩BitBtn01属性设置

    • Caption:设定按钮显示的文字内容,设定为01 读取线圈寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn01。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (11)BitBtn02属性设置

    • Caption:设定按钮显示的文字内容,设定为02 离散输入寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn02。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (12)BitBtn03属性设置

    • Caption:设定按钮显示的文字内容,设定为03 读取保持寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn03。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (13)BitBtn04属性设置

    • Caption:设定按钮显示的文字内容,设定为04 读取输入寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn04。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (14)BitBtn05属性设置

    • Caption:设定按钮显示的文字内容,设定为05 写单个线圈寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn05。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (15)BitBtn06属性设置

    • Caption:设定按钮显示的文字内容,设定为06 写单个保持寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn06。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (16)BitBtn15属性设置

    • Caption:设定按钮显示的文字内容,设定为15 写多个线圈寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn15。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。
  • (17)BitBtn16属性设置

    • Caption:设定按钮显示的文字内容,设定为16 写多个线圈寄存器。
    • Height:设定控件高度=33。
    • Width:设定控件宽度=220。
    • Name:设定控件名称,为BitBtn16。
    • Glyph:设定按钮显示的图片。点击Glyph属性右侧的[...]按钮,打开文件上传界面,点击[Load...]从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]加载图片。仅支持bmp格式的图片。

# 3. 程序设计

# 3.1. 程序初始设置

  该程序无初始设置。

# 3.2. 事件设置

  • ⑧BitBtnConnect-OnClick事件

  点击连接按钮,将ModbusTCP1中的连接设置指定为输入框中的内容,并发起连接。

procedure TMyHandler.BitBtnConnectClick;
//连接
begin
  FThis.ModbusTCP1.Host := FThis.EditHost.Text;
  FThis.ModbusTCP1.Port := StrToInt(FThis.EditPort.Text);
  FThis.ModbusTCP1.AutoConnect := True;  
end;
1
2
3
4
5
6
7
  • ⑩BitBtn01-OnClick事件

  点击该按钮,读取线圈寄存器数据并返回结果。

procedure TMyHandler.BitBtn01Click;
//01 读取线圈寄存器,可读取单个或多个
var
  v: Boolean;
  s: String;
begin
  //读取单个线圈
  if FThis.ModbusTCP1.ReadCoil(1,v) then
  begin
    if v then
      FThis.Memo1.Lines.Add('读取单个线圈数值:1')
    else
      FThis.Memo1.Lines.Add('读取单个线圈数值:0');
  end
  else
    FThis.Memo1.Lines.Add('读取单个线圈数值->>>出错!');   
    
  //读取多个线圈数值
  if FThis.ModbusTCP1.ReadCoils(1,2,s) then
  begin
    FThis.Memo1.Lines.Add('读取多个线圈数值:' + s);
  end
  else
    FThis.Memo1.Lines.Add('读取单个线圈数值->>>出错!');     
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  • (11)BitBtn02-OnClick事件

  点击该按钮,读取离散输入寄存器数据并返回结果。

procedure TMyHandler.BitBtn02Click;
//02 读取离散输入寄存器
var
  s: String;
begin
  if FThis.ModbusTCP1.ReadInputBits(1,2,s) then
  begin
    FThis.Memo1.Lines.Add('读取离散输入寄存器:' + s);
  end
  else
    FThis.Memo1.Lines.Add('读取离散输入寄存器->>>出错!');    
end;
1
2
3
4
5
6
7
8
9
10
11
12
  • (12)BitBtn03-OnClick事件

  点击该按钮,读取保持寄存器数据并返回结果。

procedure TMyHandler.BitBtn03Click;
//03 读取保持寄存器
var
  v: Word;
  s: String;
begin
  //读取单个保持寄存器
  if FThis.ModbusTCP1.ReadHoldingRegister(1,v) then
  begin
    FThis.Memo1.Lines.Add('读取单个保持寄存器:' + IntToStr(v));
  end
  else
    FThis.Memo1.Lines.Add('读取单个保持寄存器->>>出错!');
    
  //读取多个保持寄存器 
  if FThis.ModbusTCP1.ReadHoldingRegisters(1,2,s) then
  begin
    FThis.Memo1.Lines.Add('读取多个保持寄存器:' + s);
  end
  else
    FThis.Memo1.Lines.Add('读取多个保持寄存器->>>出错!');   
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • (13)BitBtn04-OnClick事件

  点击该按钮,读取输入寄存器数据并返回结果。

procedure TMyHandler.BitBtn04Click;
//04 读取输入寄存器
var
  v: Word;
  s: String;
begin
  //读取单个输入寄存器
  if FThis.ModbusTCP1.ReadInputRegister(1,v) then
  begin
    FThis.Memo1.Lines.Add('读取单个输入寄存器:' + IntToStr(v));
  end
  else
    FThis.Memo1.Lines.Add('读取单个输入寄存器->>>出错!');
    
  //读取多个输入寄存器 
  if FThis.ModbusTCP1.ReadInputRegisters(1,2,s) then
  begin
    FThis.Memo1.Lines.Add('读取多个输入寄存器:' + s);
  end
  else
    FThis.Memo1.Lines.Add('读取多个输入寄存器->>>出错!');  
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • (14)BitBtn05-OnClick事件设置

  点击该按钮,将数据写入单个线圈寄存器。

procedure TMyHandler.BitBtn05Click;
//05 写单个线圈寄存器
begin
  if FThis.ModbusTCP1.WriteCoil(1,True) then
  begin
    FThis.Memo1.Lines.Add('写单个线圈寄存器:1');
  end
  else
    FThis.Memo1.Lines.Add('写单个线圈寄存器->>>出错!');
end;
1
2
3
4
5
6
7
8
9
10
  • (15)BitBtn06-OnClick事件设置

  点击该按钮,将数据写入单个保持寄存器。

procedure TMyHandler.BitBtn06Click;
//06 写单个保持寄存器
begin
  if FThis.ModbusTCP1.WriteRegister(1,123) then
  begin
    FThis.Memo1.Lines.Add('写单个保持寄存器:123');
  end
  else
    FThis.Memo1.Lines.Add('写单个保持寄存器->>>出错!');
end;
1
2
3
4
5
6
7
8
9
10
  • (16)BitBtn15-OnClick事件设置

  点击该按钮,将数据写入多个线圈寄存器。

procedure TMyHandler.BitBtn15Click;
//15 写多个线圈寄存器
begin
  if FThis.ModbusTCP1.WriteCoils(1,2,'1,0,1') then
  begin
    FThis.Memo1.Lines.Add('写多个线圈寄存器:1,0,1');
  end
  else
    FThis.Memo1.Lines.Add('写多个线圈寄存器->>>出错!');
end;
1
2
3
4
5
6
7
8
9
10
  • (17)BitBtn16-OnClick事件

  点击该按钮,将数据写入多个保持寄存器。

procedure TMyHandler.BitBtn16Click;
//16 写多个保持寄存器
begin
  if FThis.ModbusTCP1.WriteRegisters(1,'1,123,224') then
  begin
    FThis.Memo1.Lines.Add('写多个保持寄存器:1,123,224');
  end
  else
    FThis.Memo1.Lines.Add('写多个保持寄存器->>>出错!');
end;
1
2
3
4
5
6
7
8
9
10

# 4. 运行结果

  通过工具栏保存,将程序保存为 sdb 项目文件。

  使用鼠标点击工具栏运行(Run),测试运行结果。

  在设定完成设备地址与端口信息后,点击右侧的[连接]按钮,开启ModbusTCP连接。

  仿真软件切换至线圈寄存器模式,点击[01 读取线圈寄存器],程序读取对应的线圈寄存器位址并返回读取结果。点击[05 写单个线圈寄存器],程序向单个线圈寄存器位址写入数据并返回结果。点击[15 写多个线圈寄存器],程序向多个线圈寄存器位址写入数据并返回结果。

  仿真软件切换至离散输入寄存器模式,点击[02 读取离散输入寄存器],程序读取对应的离散输入寄存器位址并返回读取结果。

  仿真软件切换至保持寄存器模式,点击[03 读取保持寄存器],程序读取对应的保持寄存器位址并返回读取结果。点击[06 写单个保持寄存器],程序向单个保持寄存器位址写入数据并返回结果。点击[16 写多个保持寄存器],程序向多个保持寄存器位址写入数据并返回结果。

  仿真软件切换至输入寄存器模式,点击[04 读取输入寄存器],程序读取对应的输入寄存器位址并返回读取结果。

RS485计数器
ModbusTCP控制LED灯

← RS485计数器 ModbusTCP控制LED灯→

Copyright © 2021-2025 爱招飞IsoFace | ALL Rights Reserved
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式