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

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

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

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

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

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

    • 安装配置
    • 快速上手
    • 界面介绍
    • 功能介绍
    • 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帮助主页
  • 学习手册

    • 基本入门

    • 功能介绍

    • 控件说明

      • 公共属性
      • 公共方法
      • 公共事件
      • 窗口控件
      • 系统控件
      • 标准控件
      • 对话框控件
      • 标准工控控件
      • 专业工控控件
      • 数据控制控件
      • 数据表格控件
      • 数据感知控件
      • 通讯控制控件
        • 1. TMQTTChannel 组件
          • 1.1. 属性
          • 1.1.1. BrokerHostName属性
          • 1.1.2. BrokerPort属性
          • 1.1.3. ClientID属性
          • 1.1.4. DataType属性
          • 1.1.5. DataValue属性
          • 1.1.6. DataControl属性
          • 1.1.7. DataField属性
          • 1.1.8. Enabled属性
          • 1.1.9. Username属性
          • 1.1.10. Password属性
          • 1.1.11. Formula属性
          • 1.1.12. Topic属性
          • 1.1.13. LowerWarning属性
          • 1.1.14. Machine属性
          • 1.1.15. MeterType属性
          • 1.1.16. MobusConnection属性
          • 1.1.17. ModuleName属性
          • 1.1.18. ModeuleNo属性
          • 1.1.19. MonitorType属性
          • 1.1.20. MsgScript属性
          • 1.1.21. Offset属性
          • 1.1.22. BeginTime属性
          • 1.1.23. Site属性
        • 2. TMQTTClient 组件
          • 2.1. 属性
          • 2.1.1. BrokerHostName属性
          • 2.1.2. BrokerPort属性
          • 2.1.3. ClientID属性
          • 2.1.4. DataType属性
          • 2.1.5. DataValue属性
          • 2.1.6. DataControl属性
          • 2.1.7. DataField属性
          • 2.1.8. Enabled属性
          • 2.1.9. Username属性
          • 2.1.10. Password属性
          • 2.1.11. Formula属性
          • 2.1.12. Topic属性
          • 2.2. 事件
          • 2.2.1. OnPublishReceived事件
          • 2.3. 方法
          • 2.3.1. Subscribe函数
          • 2.3.2. UnSubscribe函数
          • 2.3.3. PublishStr函数
          • 2.3.4. PublishByte函数
        • 3. TModbusRTUReadChannel 组件
          • 3.1. 属性(Properties)
          • 3.1.1. ConnectionMode属性
          • 3.1.2. DataControl属性
          • 3.1.3. DataFields属性
          • 3.1.4. DataLower属性
          • 3.1.5. DataType属性
          • 3.1.6. DataUpper属性
          • 3.1.7. DataValue属性
          • 3.1.8. DBConnection属性
          • 3.1.9. Enabled属性
          • 3.1.10. Formula属性
          • 3.1.11. FuntionCode属性
          • 3.1.12. EndTime属性
          • 3.1.13. Interval属性
          • 3.1.14. LowerWarning属性
          • 3.1.15. Machine属性
          • 3.1.16. MeterType属性
          • 3.1.17. MobusConnection属性
          • 3.1.18. ModuleName属性
          • 3.1.19. ModeuleNo属性
          • 3.1.20. MonitorType属性
          • 3.1.21. MsgScript属性
          • 3.1.22. Offset属性
          • 3.1.23. RegCount属性
          • 3.1.24. SavaData属性
          • 3.1.25. SavaInterval属性
          • 3.1.26. ServerAddress属性
          • 3.1.27. BeginTime属性
          • 3.1.28. Site属性
          • 3.1.29. StartReg属性
          • 3.1.30. UpperWarning属性
          • 3.2. 方法(Methods)
          • 3.2.1. GetRegValues方法
          • 3.2.2. GetBitValues方法
          • 3.2.3. SetPropValue方法
          • 3.2.4. GetPropValue方法
        • 4. TModbusRTUWriteChannel 组件
          • 4.1. 属性(Properties)
          • 4.1.1. ConnectionMode属性
          • 4.1.2. DataControl属性
          • 4.1.3. DataField属性
          • 4.1.4. DataLower属性
          • 4.1.5. DataType属性
          • 4.1.6. DataUpper属性
          • 4.1.7. DataValue属性
          • 4.1.8. DBConnection属性
          • 4.1.9. Formula属性
          • 4.1.10. FuntionCode属性
          • 4.1.11. Host属性
          • 4.1.12. LowerWarning属性
          • 4.1.13. Machine属性
          • 4.1.14. MeterType属性
          • 4.1.15. MobusConnection属性
          • 4.1.16. ModuleName属性
          • 4.1.17. ModeuleNo属性
          • 4.1.18. MonitorType属性
          • 4.1.19. MsgScript属性
          • 4.1.20. RegCount属性
          • 4.1.21. Site属性
          • 4.1.22. StartReg属性
          • 4.1.23. UpperWarning属性
          • 4.2. 方法(Methods)
          • 4.2.1. execute方法
          • 4.2.2. Write方法
        • 5. TModbusTCPReadChannel 组件
          • 5.1. 属性(Properties)
          • 5.1.1. ConnectionMode属性
          • 5.1.2. DataControl属性
          • 5.1.3. DataFields属性
          • 5.1.4. DataLower属性
          • 5.1.5. DataType属性
          • 5.1.6. DataUpper属性
          • 5.1.7. DataValue属性
          • 5.1.8. DBConnection属性
          • 5.1.9. Enabled属性
          • 5.1.10. Formula属性
          • 5.1.11. FuntionCode属性
          • 5.1.12. Host属性
          • 5.1.13. EndTime属性
          • 5.1.14. Interval属性
          • 5.1.15. LowerWarning属性
          • 5.1.16. Machine属性
          • 5.1.17. MeterType属性
          • 5.1.18. ModuleName属性
          • 5.1.19. ModeuleNo属性
          • 5.1.20. MonitorType属性
          • 5.1.21. MsgScript属性
          • 5.1.22. Offset属性
          • 5.1.23. Port属性
          • 5.1.24. RegCount属性
          • 5.1.25. SavaData属性
          • 5.1.26. SavaInterval属性
          • 5.1.27. BeginTime属性
          • 5.1.28. Site属性
          • 5.1.29. StartReg属性
          • 5.1.30. UpperWarning属性
          • 5.2. 方法(Methods)
          • 5.2.1. GetRegValues方法
          • 5.2.2. GetBitValues方法
          • 5.2.3. SetPropValue方法
          • 5.2.4. GetPropValue方法
        • 6. TModbusTCPWriteChannel 组件
          • 6.1. 属性(Properties)
          • 6.1.1. ConnectionMode属性
          • 6.1.2. DataControl属性
          • 6.1.3. DataField属性
          • 6.1.4. DataLower属性
          • 6.1.5. DataType属性
          • 6.1.6. DataUpper属性
          • 6.1.7. DataValue属性
          • 6.1.8. DBConnection属性
          • 6.1.9. Formula属性
          • 6.1.10. FuntionCode属性
          • 6.1.11. Host属性
          • 6.1.12. LowerWarning属性
          • 6.1.13. Machine属性
          • 6.1.14. MeterType属性
          • 6.1.15. ModuleName属性
          • 6.1.16. ModeuleNo属性
          • 6.1.17. MonitorType属性
          • 6.1.18. MsgScript属性
          • 6.1.19. Port属性
          • 6.1.20. RegCount属性
          • 6.1.21. Site属性
          • 6.1.22. StartReg属性
          • 6.1.23. UpperWarning属性
          • 6.2. 方法(Methods)
          • 6.2.1. execute方法
          • 6.2.2. Write方法
        • 7. TModbusConnection 组件
        • 8. TModbusClient 组件
          • 8.1. 属性(Properties)
          • 8.2. 方法(Methods)
          • 8.2.1. ReadCoils方法
          • 8.2.2. ReadDiscreteInputs方法
          • 8.2.3. ReadHoldingRegisters方法
          • 8.2.4. ReadInputRegisters方法
          • 8.2.5. WriteSingleCoil方法
          • 8.2.6. WriteMultipleCoils方法
          • 8.2.7. WritSingleRegister方法
          • 8.2.8. WriteMultipleRegisters方法
          • 8.3. 事件
          • 8.3.1. OnCoilsRead事件
          • 8.3.2. OnDiscreteInputsRead事件
          • 8.3.3. OnHoldingRegistersRead事件
          • 8.3.4. OnHoldingRegistersRead事件
        • 9. TModbusTCP 组件
          • 9.1. 属性(Properties)
          • 9.1.1. AutoConnect
          • 9.1.2. Host属性
          • 9.1.3. Port属性
          • 9.1.4. UnitID属性
          • 9.2. 事件(Events)
          • 9.3. 方法(Methods)
          • 9.3.1. Connect方法
          • 9.3.2. ReadCoil方法
          • 9.3.3. ReadCoils方法
          • 9.3.4. ReadHoldingRegister方法
          • 9.3.5. ReadHoldingRegisters方法
          • 9.3.6. ReadInputRegister方法
          • 9.3.7. WriteCoil方法
          • 9.3.8. WriteCoils方法
          • 9.3.9. WriteRegister方法
          • 9.3.10. WriteRegisters方法
        • 10. TOPCDAServer 组件
        • 11. TAMapView 组件
          • 11.1. 属性
          • 11.2. 方法
          • 11.2.1. LoadMap方法
        • 12. TBaiduAPI 组件
          • 12.1. 属性(Properties)
        • 13. TIdModbuClient 组件
          • 13.1. 属性
          • 13.2. 方法
          • 13.2.1. Connected方法
          • 13.2.2. ReadCoil方法
          • 13.2.3. ReadCoils方法
          • 13.2.4. ReadHoldingRegister方法
          • 13.2.5. ReadHoldingRegisters方法
          • 13.2.6. ReadInputRegister方法
          • 13.2.7. WriteCoil方法
          • 13.2.8. WriteCoils方法
          • 13.2.9. WriteRegister方法
          • 13.2.10. WriteRegisters方法
        • 14. TIdModbusServer 组件
          • 14.1. 属性
        • 15. TRestAPI 组件
          • 15.1. 属性
          • 15.1.1. Body
          • 15.1.2. ContentType
          • 15.1.3. Headers
          • 15.1.4. Method
          • 15.1.5. Params
          • 15.1.6. Script
          • 15.1.7. Server
          • 15.1.8. Url
          • 15.2. 事件
          • 15.2.1. ResultData
          • 15.3. 方法
          • 15.3.1. Send
        • 16. TWebSocketClient 组件
          • 16.1. 属性
          • 16.1.1. Active
          • 16.1.2. Authentication
          • 16.1.3. HeartBeat
          • 16.1.4. Host
          • 16.1.5. LoadBalancer
          • 16.1.6. LogFile
          • 16.1.7. NotifyEvents
          • 16.1.8. Options
          • 16.1.9. Port
          • 16.1.10. Proxy
          • 16.1.11. QueueOptions
          • 16.1.12. Throttle
          • 16.1.13. TLS
          • 16.1.14. TLSOptions
          • 16.1.15. WatchDog
          • 16.2. 事件
          • 16.3. 方法
          • 16.3.1. Connect
          • 16.3.2. DisConnect
          • 16.3.3. WriteString
          • 16.3.4. WriteStream
          • 16.3.5. Ping
          • 16.3.6. Start
          • 16.3.7. Stop
        • 17. TWebSocketSever 组件
          • 17.1. 属性
          • 17.1.1. Active
          • 17.1.2. Authentication
          • 17.1.3. Bindings
          • 17.1.4. Extensions
          • 17.1.5. FallBack
          • 17.1.6. HeartBeat
          • 17.1.7. HTTP2Options
          • 17.1.8. IOHandlerOptions
          • 17.1.9. LoadBalancer
          • 17.1.10. LogFile
          • 17.1.11. MaxConnections
          • 17.1.12. NotifyEvents
          • 17.1.13. Options
          • 17.1.14. Port
          • 17.1.15. QueueOptions
          • 17.1.16. SecurityOptions
          • 17.1.17. SSL
          • 17.1.18. SSLOptions
          • 17.1.19. WatchDog
          • 17.2. 事件
          • 17.3. 方法
          • 17.3.1. WriteString
          • 17.3.2. WriteStream
      • 仪表采集控件
      • 监控视频控件
      • 数据图表控件
      • 流程图表控件
      • 数据分析控件
      • 复合数控控件
      • 模拟数控控件
      • 调节数控控件
      • 数位数控控件
      • 数据数控控件
      • 地图控件
      • 其他控件
      • SVG控件
      • IsoBean控件
      • 样式控件
      • 样式外观控件
      • 样式高级控件
      • 样式工具控件
      • 样式数据控件
      • 样式控件GP
      • 样式数据控件GP
    • 功能用法

    • 专用模板

    • 开发流程

    • 函数程序

  • 开发手册

目录

通讯控制控件

# Smart 控件使用(通讯控制)

  通讯控制控件组中包含特定通讯协定的连接方式的设定控件,用于实现物联网的相关功能。

# 1. TMQTTChannel 组件

  MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

  TMQTTChannel 组件是基于MQTT扩展的,它集成了更丰富的功能,其集成的脚本功能,可实现对获取到的数据进行二次加工的能力。

# 1.1. 属性

  • TMQTTChannel组件主要属性
属性 功能说明
BrokerHostName 指定MQTT代理服务器地址
BrokerPort 指定MQTT代理服务器端
ClientID 指定客户端标识
Username 指定MQTTBroker 用户名
Password 指定MQTTBroker 密码
Topic 指定MQTT主题
DataControl 指定数据控件
DataFields 指定数据字段
DataLower 指定数据下限
DataType 指定数据类型
DataUpper 指定数据上限
DataValue 指定数据值
DBConnection 指定数据连接组件
Enabled 表示MQTTClient是否连接
EndTime 指定数据采集结束时间
Formula 指定数据解析脚本公
LowerWarning 指定数据下限报警等级
Machine 指定采集点所在的机器
MeterType 指定采集点仪表类型
ModuleName 指定设备名称
ModeuleNo 指定设备编号
MonitorType 指定监测类型
MsgScript 指定消息脚本
Name 指定控件名称
Offset 指定偏移量
PulseRatio 指定活动率%
ReadConfig 指定是否读取配置
SavaData 指定是否保存采集之数据
Site 指定站点名称
BeginTime 指定数据采集开始时间
UpperWarning 指定数据上限报警等级

# 1.1.1. BrokerHostName属性

property BrokerHostName: string read FHost write SetHost;
1

   指定MQTT代理服务器地址

# 1.1.2. BrokerPort属性

property BrokerPort: Integer read FPort write SetPort;
1

   指定MQTT代理服务器端

# 1.1.3. ClientID属性

property ClientID:string read FClientID write SetClientID;
1

   指定客户端标识

# 1.1.4. DataType属性

property DataType: TDataType read FDataType write FDataType;
1

   数据类型

# 1.1.5. DataValue属性

property DataValue: Variant read FDataValue write FDataValue;
1

   获取到的数据值

# 1.1.6. DataControl属性

property DataControl: string read FDataControl write FDataControl;
1

   指定一个需要显示数据的控件名

# 1.1.7. DataField属性

property DataField: string read FDataField write FDataField;
1

   指定一个数据控件显示数据的属性名

# 1.1.8. Enabled属性

property Enabled: boolean read FEnabled write SetEnabled;
1

   表示MQTTClient是否连接

# 1.1.9. Username属性

property Username: string read FUsername write SetUsername;
1

   指定MQTTBroker 用户名

# 1.1.10. Password属性

property Password: string read FPassword write SetPassword;
1

   指定MQTTBroker 密码

# 1.1.11. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

   数据解析公式

# 1.1.12. Topic属性

property Topic: string read FTopic write FTopic;
1

   指定MQTT主题

# 1.1.13. LowerWarning属性

property LowerWarning: TLowerWarning read FLowerWarning write SetLowerWarning;
1

   UpperWarning属性是指数据下限异常类型,目前有:lw1,lw2,lw3,lw4,lwNote。

# 1.1.14. Machine属性

property Machine: string read FMachine write FMachine;
1

   Machine属性指采集站点所属哪个机台设备。

# 1.1.15. MeterType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MeterType属性指仪表类型

# 1.1.16. MobusConnection属性

property ModbusConnection: TModbusConnection read FModbusConnection write SetModbusConnection;
1

   MobusConnection属性指TModbusConnection组件,使用时必需绑定此组件。

# 1.1.17. ModuleName属性

property ModuleName: string read FModuleName write FModuleName;
1

   ModuleName属性指Modbus设备名称,XX温控器、XX电表 等。

# 1.1.18. ModeuleNo属性

property ModuleNo: string read FModuleNo write FModuleNo;
1

   ModuleNo属性指Modbus设备的编号,如001、002等。

# 1.1.19. MonitorType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MonitorType属性指站点的监测类型,如温度、压力等。

# 1.1.20. MsgScript属性

property MsgScript: TStrings read FMsgScript write SetMsgScript;
1

   MsgScript属性用作预警消息触发时,可在脚本中进行其它的业务整合运用,脚本采用纯Pascal语言脚本。

# 1.1.21. Offset属性

property Offset: Double read FOffset write SetOffset;
1

   Offset属性是指数据偏移量。

# 1.1.22. BeginTime属性

property BeginTime: string read FStartDateTime write FStartDateTime;
1

   BeginTime属性指采集数据的起始时间。

# 1.1.23. Site属性

property Site: string read FSite write FSite;
1

  Site属性是指MQTT设备的站点名称,可以作为MQTT数据地址的说明之用。


# 2. TMQTTClient 组件

  MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

# 2.1. 属性

  • TMQTTClient组件主要属性
属性 功能说明
BrokerHostName 指定MQTT代理服务器地址
BrokerPort 指定MQTT代理服务器端
ClientID 指定客户端标识
DataType 数据类型
DataValue 获取到的数据值
DataControl 指定一个需要显示数据的控件名
DataField 指定一个数据控件显示数据的属性名
Enabled 表示MQTTClient是否连接
Username 指定MQTTBroker 用户名
Password 指定MQTTBroker 密码
Formula 数据解析公式
Topic 指定MQTT主题

# 2.1.1. BrokerHostName属性

property BrokerHostName: string read FHost write SetHost;
1

   指定MQTT代理服务器地址

# 2.1.2. BrokerPort属性

property BrokerPort: Integer read FPort write SetPort;
1

   指定MQTT代理服务器端

# 2.1.3. ClientID属性

property ClientID:string read FClientID write SetClientID;
1

   指定客户端标识

# 2.1.4. DataType属性

property DataType: TDataType read FDataType write FDataType;
1

   数据类型

# 2.1.5. DataValue属性

property DataValue: Variant read FDataValue write FDataValue;
1

   获取到的数据值

# 2.1.6. DataControl属性

property DataControl: string read FDataControl write FDataControl;
1

   指定一个需要显示数据的控件名

# 2.1.7. DataField属性

property DataField: string read FDataField write FDataField;
1

   指定一个数据控件显示数据的属性名

# 2.1.8. Enabled属性

property Enabled: boolean read FEnabled write SetEnabled;
1

   表示MQTTClient是否连接

# 2.1.9. Username属性

property Username: string read FUsername write SetUsername;
1

   指定MQTTBroker 用户名

# 2.1.10. Password属性

property Password: string read FPassword write SetPassword;
1

   指定MQTTBroker 密码

# 2.1.11. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

   数据解析公式

# 2.1.12. Topic属性

property Topic: string read FTopic write FTopic;
1

   指定MQTT主题

# 2.2. 事件

  • TMQTTClient组件主要事件列表
事件 何时触发
OnPublishRecerived 当发布消息返回时触发该事件

# 2.2.1. OnPublishReceived事件

Procedure OnPublishReceived(ASender: TObject; APacketID: Word; ATopic: string; APayload: string);
1

# 2.3. 方法

方法 功能说明
Subscribe 主题订阅
Unsubscribe 取消主题订阅
PublishStr 推送主题消息(字符串)
PublishByte 推送主题消息 (字节)

# 2.3.1. Subscribe函数

function Subscribe(ATopic: string): Word;
1

说明: MQTT 订阅主题 返回值: Word类型

  • Subscribe函数语法中各部分说明
部分 说明
ATopic 主题内容
  • 示例
 //订阅LED主题
 FThis.MQTTClient1.MQTTSubscribe('LED');
1
2

# 2.3.2. UnSubscribe函数

function Unsubscribe(ATopic: string): Word;
1

说明: 注销MQTT主题 返回值: Word类型

  • MQTTUnSubscribe函数语法中各部分说明
部分 说明
ATopic 主题内容
  • 示例
//注销LED主题
FThis.MQTTClient1.UnSubscribe('LED');
1
2

# 2.3.3. PublishStr函数

function PublishStr(ATopic: string; APayload: string): Word;
1

说明: MQTT推送消息 返回值: Word类型

  • MQTTPublishStr函数语法中各部分说明
部分 说明
ATopic 主题内容
APayload 推送的内容
  • 示例
//熄灭LED
FThis.MQTTClient1.PublishStr('LED','0');
1
2

# 2.3.4. PublishByte函数

function PublishByte(ATopic: string; APayload: TBytes): Word;
1

说明: MQTT推送消息 返回值: Word类型

  • PublishByte函数语法中各部分说明
部分 说明
ATopic 主题内容
APayload 推送的内容
  • 示例
//熄灭LED
FThis.MQTTClient1.PublishByte('LED',0);
1
2

示例

  • MQTT 控制LED灯
type
  TMyHandler = class(TForm)
private 
  FThis:TBaseForm; 
Public 
  constructor Create(AOwner: TComponent); override;
{模块声明  MODULE-DECLARE}
  procedure LEDOpenClick(Sender: TObject);
  procedure LEDCloseClick(Sender: TObject);
  procedure MQTTClientLEDPublishReceived(ASender: TObject; APacketID: Word; ATopic: string; APayload: string);
end;

constructor TMyHandler.Create(AOwner: TComponent);
begin
  FThis :=TBaseForm(AOwner);
  //MQTTClientLED 属性赋值
  FThis.MQTTClientLED.BrokerHostName := FThis.edtBrokerHostName.Text;
  FThis.MQTTClientLED.BrokerPort := StrToInt(FThis.edtBrokerPort.Text);
  FThis.MQTTClientLED.Password := FThis.edtPassword.Text;
  FThis.MQTTClientLED.Username := FThis.edtUsername.Text;
  //MQTTClientLED 连接
  FThis.MQTTClientLED.Enabled := true;
end;

{方法实现  MODULE-REAL}

//LEDOpen 控件 Click 事件
procedure TMyHandler.LEDOpenClick;
begin
  //点亮LED
   FThis.MQTTClientLED.PublishStr('LED','1');
end;

//LEDClose 控件 Click 事件
procedure TMyHandler.LEDCloseClick;
begin
  //熄灭LED
   FThis.MQTTClientLED.PublishStr('LED','0');
end;

//MQTTClientLED 控件 OnPublishReceived 事件(发布收到的内容)
procedure TMyHandler.MQTTClientLEDPublishReceived;
begin 
  if APayload='1' Then
    FThis.MemoMsg.Lines.Add(ATopic+'->开')
  else
    FThis.MemoMsg.Lines.Add(ATopic+'->关');
end;

var
  FMyHandler:TMyHandler;
begin
  FMyHandler := TMyHandler.Create(this);
{事件绑定  MODULE-BIND}
  this.LEDOpen.OnClick := FMyHandler.LEDOpenClick;
  this.LEDClose.OnClick := FMyHandler.LEDCloseClick;
  this.MQTTClientLED.OnPublishReceived := FMyHandler.MQTTClientLEDPublishReceived;
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58

# 3. TModbusRTUReadChannel 组件

  ModbusRTU多功能数据读取组件,可通过定义多个TModbusRTUReadItem子项实现对多个Modbus设备的数据采集。

  你可以简单设置TModbusRTUReadItem组件属性即可完成ModbusRTU设备的数据采集功能,无需使用脚本。当然配合脚本使用可以丰富系统业务功能。

  可通过右键点击控件,选择 Import Excel... 选项打开导入界面,选择基础资料表格文件实现导入的功能。制作的Excel表格表头与表格内容的示例如下:

SlaveID StartReg RegCount FunctionCode ConnectionMode ModuleNo ModuleName Site Machine MeterType MonitorType DataType BeginTime EndTime DataUpper DataLower UpperWarning LowerWarning SaveData PulseRatio Offset Interval SaveInterval
1 1 1 fc03 cmClient 温度 温控器 温湿度 dtfloat 08:00 20:00 100 -30 uw1 lw1 TRUE 0.5 1 1000 2000
1 2 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:01 20:01 101 -29 uw1 lw1 TRUE 0.5 1 1000 2000
1 3 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:02 20:02 102 -28 uw1 lw1 TRUE 0.5 1 1000 2000
2 1 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:03 20:03 103 -27 uw1 lw1 TRUE 0.5 1 1000 2000
2 2 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:04 20:04 104 -26 uw1 lw1 TRUE 0.5 1 1000 2000
2 3 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:05 20:05 105 -25 uw1 lw1 TRUE 0.5 1 1000 2000
3 1 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:06 20:06 106 -24 uw1 lw1 TRUE 0.5 1 1000 2000
3 2 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:07 20:07 107 -23 uw1 lw1 TRUE 0.5 1 1000 2000
3 3 1 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:08 20:08 108 -22 uw1 lw1 TRUE 0.5 1 1000 2000
4 1 2 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:09 20:09 109 -21 uw1 lw1 TRUE 0.5 1 1000 2000
4 3 2 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:10 20:10 110 -20 uw1 lw1 TRUE 0.5 1 1000 2000
4 5 2 fc03 cmClient 湿度 温控器 温湿度 dtfloat 08:11 20:11 111 -19 uw1 lw1 TRUE 0.5 1 1000 2000

# 3.1. 属性(Properties)

  • TModbusRTUReadItem组件主要属性
属性 功能说明
ConnectionMode 指定连接模式
DataControl 指定数据控件
DataFields 指定数据字段
DataLower 指定数据下限
DataType 指定数据类型
DataUpper 指定数据上限
DataValue 指定数据值
DBConnection 指定数据连接组件
Enabled 指定是否启用
EndTime 指定数据采集结束时间
Formula 指定数据解析脚本公
FuntionCode 指定Modbus功能码
Interval 指定数据采集间隔时间
LowerWarning 指定数据下限报警等级
Machine 指定采集点所在的机器
MeterType 指定采集点仪表类型
MobusConnection 指定Modbus连接组件
ModuleName 指定设备名称
ModeuleNo 指定设备编号
MonitorType 指定监测类型
MsgScript 指定消息脚本
Name 指定控件名称
Offset 指定偏移量
PulseRatio 指定活动率%
ReadConfig 指定是否读取配置
RegCount 指定数据长度
SavaData 指定是否保存采集之数据
SavaInterval 指定数据保存间隔时间(毫秒)
ServerAddress 指定ModbusRUT设备地址
Site 指定站点名称
BeginTime 指定数据采集开始时间
StartReg 指定起始地址
UpperWarning 指定数据上限报警等级

# 3.1.1. ConnectionMode属性

property ConnectionMode: TConnMode read FConnectionMode write FConnectionMode;
1

   ConnectionMode属性有两个值:cmClient、cmServer。 cmClient模式下,是客户端直接与Modbus设备进行通讯采集数据并显示的,cmServer模式下,是读取TARS物联网之下的配置内容,仅显示TARS采集的数据。

# 3.1.2. DataControl属性

property DataControl: string read FDataControl write SetDataControl;
1

   DataControl属性是指需要将采集之数据显示在某个组件上时,这个组件的名称。

# 3.1.3. DataFields属性

property DataFields: string read FDataFields write SetDataFields;
1

   DataFields属性是指需要将采集之数据显示在某个组件上时,这个组件的属性名称。

# 3.1.4. DataLower属性

property DataLower: Double read FDataLower write SetDataLower;
1

   DataLower属性是指数据下限值,当采集之数据低于下限值时,启动报警或异常。

# 3.1.5. DataType属性

property DataType: TDataType read FDataType write SetDataType;
1

   DataType属性是指采集之数据的数据类型。例如:* dtBoolean -- 布尔类型, dtInt --整数类型。

# 3.1.6. DataUpper属性

property DataUpper: Double read FDataUpper write SetDataUpper;
1

   DataLower属性是指数据上限值,当采集之数据超过上限值时,启动报警或异常。

# 3.1.7. DataValue属性

property DataValue: Double read FDataValue write FDataValue;
1

   DataValue属性指采集之数据存放处。

# 3.1.8. DBConnection属性

property DBConnection: TRFConnection read FOwerDBConnection write SetDBConnection;
1

   DBConnection属性是用来指定TRFConnection组件的,通过TRFConnection组件,可与TARS云端服务器进行数据交互。

# 3.1.9. Enabled属性

property Enabled: boolean read FEnabled write SetEnabled;
1

   当Enabled设置为True时,表示启动定时采集线程,可设置Interval属性值改变采集频率。

# 3.1.10. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

  Formula属性是指可通过脚本对采集之数据进行业务处理,经过业务处理后的值还是存储于DataValue中。

示例

begin
 FThis.DataValue := FThis.GetRegValues(0) * 0.1;
end.
1
2
3

# 3.1.11. FuntionCode属性

property FunctionCode: TFunReadCode read FFunctionCode write SetFunctionCode;
1

   FuntionCode属性是指Modbus功能码,根据不同的功能码读取Modbus设备不同区之地址的数据。

TModbusRTUReadItem支持的读取功能码:

  • fc01 读取输出数位讯号 Coils(code $01)
  • fc02 读取输入数位讯号 Discrete Inputs (code $02)
  • fc03 读取输出类比讯号 Holding Registers (code $03)
  • fc04读取输入类比讯号 Input Registers (code $04)

# 3.1.12. EndTime属性

property EndTime: string read FEndDateTime write FEndDateTime;
1

   EndTime属性是指采集数据的动作何时结束。

# 3.1.13. Interval属性

property Interval: Integer read FInterval write SetInterval;
1

   Interval属性是指采集线程的频率,默认1000毫秒。

# 3.1.14. LowerWarning属性

property LowerWarning: TLowerWarning read FLowerWarning write SetLowerWarning;
1

   UpperWarning属性是指数据下限异常类型,目前有:lw1,lw2,lw3,lw4,lwNote。

# 3.1.15. Machine属性

property Machine: string read FMachine write FMachine;
1

   Machine属性指采集站点所属哪个机台设备。

# 3.1.16. MeterType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MeterType属性指仪表类型

# 3.1.17. MobusConnection属性

property ModbusConnection: TModbusConnection read FModbusConnection write SetModbusConnection;
1

   MobusConnection属性指TModbusConnection组件,使用时必需绑定此组件。

# 3.1.18. ModuleName属性

property ModuleName: string read FModuleName write FModuleName;
1

   ModuleName属性指Modbus设备名称,XX温控器、XX电表 等。

# 3.1.19. ModeuleNo属性

property ModuleNo: string read FModuleNo write FModuleNo;
1

   ModuleNo属性指Modbus设备的编号,如001、002等。

# 3.1.20. MonitorType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MonitorType属性指站点的监测类型,如温度、压力等。

# 3.1.21. MsgScript属性

property MsgScript: TStrings read FMsgScript write SetMsgScript;
1

   MsgScript属性用作预警消息触发时,可在脚本中进行其它的业务整合运用,脚本采用纯Pascal语言脚本。

# 3.1.22. Offset属性

property Offset: Double read FOffset write SetOffset;
1

   Offset属性是指数据偏移量。

# 3.1.23. RegCount属性

property RegCount: Integer read FRegCount write SetRegCount;
1

   RegCount属性是指读取ModbusTCP数据地址的数据长度。

# 3.1.24. SavaData属性

property SaveData: boolean read FSaveData write FSaveData default false;
1

   SavaData属性勾选后,会将监测到的数据上传到TARS云端服务器,这里必需要指定DBConnection属性的控件。

# 3.1.25. SavaInterval属性

property SaveInterval: Integer read FSaveInterval write SetSaveInterval;
1

   SavaInterval属性是指采集数据保存时的频率。

# 3.1.26. ServerAddress属性

property ServerAddress: Integer read FServerAddress write SetServerAddress;
1

   ServerAddress属性是指ModbusRTU设备的地址(1~127)。

# 3.1.27. BeginTime属性

property BeginTime: string read FStartDateTime write FStartDateTime;
1

   BeginTime属性指采集数据的起始时间。

# 3.1.28. Site属性

property Site: string read FSite write FSite;
1

   Site属性是指ModbusTCP设备的站点名称,可以作为ModbusTCP数据地址的说明之用。

# 3.1.29. StartReg属性

property StartReg: Integer read FStartReg write SetStartReg;
1

   RegCount属性是指读取ModbusTCP数据起始地址。

# 3.1.30. UpperWarning属性

property UpperWarning: TUpperWarning read FUpperWarning write SetUpperWarning;
1

   UpperWarning属性是指数据上限异常类型,目前有:uw1,uw2,uw3,uw4,uwNote。

# 3.2. 方法(Methods)

  • TfxModbusRead组件主要方法
方法 功能说明
GetRegValues 根据索引号返回数组中的数值
GetBitValues 根据索引号返回数组中的数值
SetPropValue 设置组件属性值
GetPropValue 读取组件属性值

# 3.2.1. GetRegValues方法

//存储类比信号数据
function GetRegValues(QIndex: Integer): Word;
1
2

  通过GetRegValues方法可获取ModbusTCP设备返回的数组中的数据。通过索引号获取对应的数据。

var
 i:Word;
begin
  //获取数组中的第0个数据
  i := FThis.ModbusRTUWriteChannel1.ModbusList[0].GetRegValues(0);
  fxEdit2.Text := IntToStr(i);
end;
1
2
3
4
5
6
7

# 3.2.2. GetBitValues方法

//读取数位信号数据
function GetBitValues(QIndex: Integer): boolean;
1
2

  通过GetRegValues方法可获取ModbusTCP设备返回的数组中的数据。通过索引号获取对应的数据。

var
 i:boolean;
begin
  //获取数组中的第0个数据
  i := FThis.ModbusRTUWriteChannel1.ModbusList[0].GetBitValues(0);
end;
1
2
3
4
5
6

# 3.2.3. SetPropValue方法

procedure SetPropValue(QControl, QControlProp: string; QValue: Variant);
1

  设置控件属性值,通过SetPropValue方法可以将DataValue赋值给指定控件的属性。

 FThis.ModbusRTUWriteChannel1.ModbusList[0].SetPropValue(fxEdit1,Text);
1

# 3.2.4. GetPropValue方法

function GetPropValue(QControl, QControlProp: string): Variant;
1

  设置控件属性值,通过GetPropValue方法可以获取指定控件属性的值,并返回。

var
 v:String;
Begin
  v := FThis.ModbusRTUWriteChannel1.ModbusList[0].GetPropValue(fxEdit1,Text);
End;

1
2
3
4
5
6

# 4. TModbusRTUWriteChannel 组件

  ModbusRTU多功能数据写入组件,可通过定义多个TModbusRTUWriteItem子项实现对多个Modbus设备的控制。

  你可以简单设置ModbusRTUWriteChannel组件属性即可完成ModbusRTU设备的数据写入功能,无需使用脚本。当然配合脚本使用可以丰富系统业务功能。

# 4.1. 属性(Properties)

  • TModbusRTUWriteChannel Item组件主要属性
属性 功能说明
ConnectionMode 指定连接模式
DataControl 指定数据控件
DataField 指定数据字段
DataLower 指定数据下限
DataType 指定数据类型
DataUpper 指定数据上限
DataValue 指定数据值
DBConnection 指定数据连接组件
Formula 指定数据解析脚本公式
FuntionCode 指定Modbus功能码
LowerWarning 指定数据下限报警等级
Machine 指定采集点所在的机器
MeterType 指定采集点仪表类型
MobusConnection 指定Modbus连接组件
ModuleName 指定设备名称
ModeuleNo 指定设备编号
MonitorType 指定监测类型
MsgScript 指定消息脚本
ReadConfig 指定是否读取配置
RegCount 指定数据长度
Site 指定站点名称
StartReg 指定起始地址
UpperWarning 指定数据上限报警等级

# 4.1.1. ConnectionMode属性

property ConnectionMode: TConnMode read FConnectionMode write FConnectionMode;
1

   ConnectionMode属性有两个值:cmClient、cmServer。 cmClient模式下,是客户端直接与Modbus设备进行通讯采集数据并显示的,cmServer模式下,是读取TARS物联网之下的配置内容,仅显示TARS采集的数据。

# 4.1.2. DataControl属性

property DataControl: string read FDataControl write SetDataControl;
1

   DataControl属性是指需要将写入之数据显示在某个组件上时,这个组件的名称。

# 4.1.3. DataField属性

property DataField: string read FDataField write SetDataField;
1

   DataField属性是指需要将写入之数据显示在某个组件上时,这个组件的属性名称。

# 4.1.4. DataLower属性

property DataLower: Double read FDataLower write SetDataLower;
1

   DataLower属性是指数据下限值,当写入之数据低于下限值时,启动报警或异常。

# 4.1.5. DataType属性

property DataType: TDataType read FDataType write SetDataType;
1

   DataType属性是指写入之数据的数据类型。例如:* dtBoolean -- 布尔类型, dtInt --整数类型。

# 4.1.6. DataUpper属性

property DataUpper: Double read FDataUpper write SetDataUpper;
1

   DataLower属性是指数据上限值,当写入之数据超过上限值时,启动报警或异常。

# 4.1.7. DataValue属性

property DataValue: Double read FDataValue write FDataValue;
1

   DataValue属性指采写入数据存放处。

# 4.1.8. DBConnection属性

property DBConnection: TRFConnection read FOwerDBConnection write SetDBConnection;
1

   DBConnection属性是用来指定TRFConnection组件的,通过TRFConnection组件,可与TARS云端服务器进行数据交互。

# 4.1.9. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

  Formula属性是指可通过脚本对采集之数据进行业务处理,经过业务处理后的值还是存储于DataValue中。

示例

begin
 FThis.DataValue := FThis.GetRegValues(0) * 0.1;
end.
1
2
3

# 4.1.10. FuntionCode属性

property FunctionCode: TFunReadCode read FFunctionCode write SetFunctionCode;
1

   FuntionCode属性是指Modbus功能码,根据不同的功能码写入Modbus设备不同区之地址的数据。

TfxModbusRead支持的读取功能码:

  • fc05 写入单笔输出数位讯号 Single Coil(code $05)
  • fc06 写入单笔输出类比讯号 Single Register (code $06)
  • fc15 写入多笔输出数位讯号 Multiple Coils(code $0F)
  • fc16 写入多笔输出类比讯号 Multiple Registers (code $10)

# 4.1.11. Host属性

property Host: string read FHost write SetHost;
1

   Host属性是指ModbusTCP设备的地址,如:192.168.1.100。

# 4.1.12. LowerWarning属性

property LowerWarning: TLowerWarning read FLowerWarning write SetLowerWarning;
1

   UpperWarning属性是指数据下限异常类型,目前有:lw1,lw2,lw3,lw4,lwNote。

# 4.1.13. Machine属性

property Machine: string read FMachine write FMachine;
1

   Machine属性指采集站点所属哪个机台设备。

# 4.1.14. MeterType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MeterType属性指仪表类型

# 4.1.15. MobusConnection属性

property ModbusConnection: TModbusConnection read FModbusConnection write SetModbusConnection;
1

   MobusConnection属性指TModbusConnection组件,使用时必需绑定此组件。

# 4.1.16. ModuleName属性

property ModuleName: string read FModuleName write FModuleName;
1

   ModuleName属性指Modbus设备名称,XX温控器、XX电表 等。

# 4.1.17. ModeuleNo属性

property ModuleNo: string read FModuleNo write FModuleNo;
1

   ModuleNo属性指Modbus设备的编号,如001、002等。

# 4.1.18. MonitorType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MonitorType属性指站点的监测类型,如温度、压力等。

# 4.1.19. MsgScript属性

property MsgScript: TStrings read FMsgScript write SetMsgScript;
1

   MsgScript属性用作预警消息触发时,可在脚本中进行其它的业务整合运用,脚本采用纯Pascal语言脚本。

# 4.1.20. RegCount属性

property RegCount: Integer read FRegCount write SetRegCount;
1

   RegCount属性是指写入ModbusTCP数据地址的数据长度。

# 4.1.21. Site属性

property Site: string read FSite write FSite;
1

   Site属性是指ModbusTCP设备的站点名称,可以作为ModbusTCP数据地址的说明之用。

# 4.1.22. StartReg属性

property StartReg: Integer read FStartReg write SetStartReg;
1

   RegCount属性是指写入ModbusTCP数据起始地址。

# 4.1.23. UpperWarning属性

property UpperWarning: TUpperWarning read FUpperWarning write SetUpperWarning;
1

   UpperWarning属性是指数据上限异常类型,目前有:uw1,uw2,uw3,uw4,uwNote。

# 4.2. 方法(Methods)

  • TModbusRTUWriteChannel 组件主要方法
方法 功能说明
Write 执行Modbus写入操作
  • TModbusRTUWriteItem组件主要方法
方法 功能说明
execute 执行Modbus写入操作

# 4.2.1. execute方法

procedure execute;
1

  执行TModbusRTUWriteItem的写入事件。

# 4.2.2. Write方法

procedure Write(QIndex: Integer; QValue: Variant);
1

示例

 //以下两种方法执行的结果是一样的。
 FThis.ModbusRTUWriteChannel.ModbusList[0].DataValue := 1;
 FThis.ModbusRTUWriteChannel.ModbusList[0].execute;
 
 FThis.ModbusRTUWriteChannel.Write(0,1);
1
2
3
4
5

# 5. TModbusTCPReadChannel 组件

  ModbusRTU多功能数据读取组件,可通过定义多个TModbusTCPReadItem子项实现对多个Modbus设备的数据采集。

  你可以简单设置 TModbusRTUReadItem组件属性即可完成ModbusRTU设备的数据采集功能,无需使用脚本。当然配合脚本使用可以丰富系统业务功能。

# 5.1. 属性(Properties)

  • TModbusRTUReadChannel Item组件主要属性
属性 功能说明
ConnectionMode 指定连接模式
DataControl 指定数据控件
DataFields 指定数据字段
DataLower 指定数据下限
DataType 指定数据类型
DataUpper 指定数据上限
DataValue 指定数据值
DBConnection 指定数据连接组件
Enabled 指定是否启用
EndTime 指定数据采集结束时间
Formula 指定数据解析脚本公
FuntionCode 指定Modbus功能码
Host 指定ModbusTCP设备IP地址
Interval 指定数据采集间隔时间
LowerWarning 指定数据下限报警等级
Machine 指定采集点所在的机器
MeterType 指定采集点仪表类型
ModuleName 指定设备名称
ModeuleNo 指定设备编号
MonitorType 指定监测类型
MsgScript 指定消息脚本
Name 指定控件名称
Offset 指定偏移量
PulseRatio 指定活动率%
Port 指定ModbusTCP设备端口号
ReadConfig 指定是否读取配置
RegCount 指定数据长度
SavaData 指定是否保存采集之数据
SavaInterval 指定数据保存间隔时间(毫秒)
Site 指定站点名称
BeginTime 指定数据采集开始时间
StartReg 指定起始地址
UpperWarning 指定数据上限报警等级

# 5.1.1. ConnectionMode属性

property ConnectionMode: TConnMode read FConnectionMode write FConnectionMode;
1

   ConnectionMode属性有两个值:cmClient、cmServer。 cmClient模式下,是客户端直接与Modbus设备进行通讯采集数据并显示的,cmServer模式下,是读取TARS物联网之下的配置内容,仅显示TARS采集的数据。

# 5.1.2. DataControl属性

property DataControl: string read FDataControl write SetDataControl;
1

   DataControl属性是指需要将采集之数据显示在某个组件上时,这个组件的名称。

# 5.1.3. DataFields属性

property DataFields: string read FDataFields write SetDataFields;
1

   DataFields属性是指需要将采集之数据显示在某个组件上时,这个组件的属性名称。

# 5.1.4. DataLower属性

property DataLower: Double read FDataLower write SetDataLower;
1

   DataLower属性是指数据下限值,当采集之数据低于下限值时,启动报警或异常。

# 5.1.5. DataType属性

property DataType: TDataType read FDataType write SetDataType;
1

   DataType属性是指采集之数据的数据类型。例如:* dtBoolean -- 布尔类型, dtInt --整数类型。

# 5.1.6. DataUpper属性

property DataUpper: Double read FDataUpper write SetDataUpper;
1

   DataLower属性是指数据上限值,当采集之数据超过上限值时,启动报警或异常。

# 5.1.7. DataValue属性

property DataValue: Double read FDataValue write FDataValue;
1

   DataValue属性指采集之数据存放处。

# 5.1.8. DBConnection属性

property DBConnection: TRFConnection read FOwerDBConnection write SetDBConnection;
1

   DBConnection属性是用来指定TRFConnection组件的,通过TRFConnection组件,可与TARS云端服务器进行数据交互。

# 5.1.9. Enabled属性

property Enabled: boolean read FEnabled write SetEnabled;
1

   当Enabled设置为True时,表示启动定时采集线程,可设置Interval属性值改变采集频率。

# 5.1.10. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

  Formula属性是指可通过脚本对采集之数据进行业务处理,经过业务处理后的值还是存储于DataValue中。

示例

begin
 FThis.DataValue := FThis.GetRegValues(0) * 0.1;
end.
1
2
3

# 5.1.11. FuntionCode属性

property FunctionCode: TFunReadCode read FFunctionCode write SetFunctionCode;
1

   FuntionCode属性是指Modbus功能码,根据不同的功能码读取Modbus设备不同区之地址的数据。

TModbusRTUReadItem支持的读取功能码:

  • fc01 读取输出数位讯号 Coils(code $01)
  • fc02 读取输入数位讯号 Discrete Inputs (code $02)
  • fc03 读取输出类比讯号 Holding Registers (code $03)
  • fc04 读取输入类比讯号 Input Registers (code $04)

# 5.1.12. Host属性

property Host: string read FHost write SetHost;
1

   Host属性是指ModbusTCP设备的地址,如:192.168.1.100。

# 5.1.13. EndTime属性

property EndTime: string read FEndDateTime write FEndDateTime;
1

   EndTime属性是指采集数据的动作何时结束。

# 5.1.14. Interval属性

property Interval: Integer read FInterval write SetInterval;
1

   Interval属性是指采集线程的频率,默认1000毫秒。

# 5.1.15. LowerWarning属性

property LowerWarning: TLowerWarning read FLowerWarning write SetLowerWarning;
1

   UpperWarning属性是指数据下限异常类型,目前有:lw1,lw2,lw3,lw4,lwNote。

# 5.1.16. Machine属性

property Machine: string read FMachine write FMachine;
1

   Machine属性指采集站点所属哪个机台设备。

# 5.1.17. MeterType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MeterType属性指仪表类型

# 5.1.18. ModuleName属性

property ModuleName: string read FModuleName write FModuleName;
1

   ModuleName属性指Modbus设备名称,XX温控器、XX电表 等。

# 5.1.19. ModeuleNo属性

property ModuleNo: string read FModuleNo write FModuleNo;
1

   ModuleNo属性指Modbus设备的编号,如001、002等。

# 5.1.20. MonitorType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MonitorType属性指站点的监测类型,如温度、压力等。

# 5.1.21. MsgScript属性

property MsgScript: TStrings read FMsgScript write SetMsgScript;
1

   MsgScript属性用作预警消息触发时,可在脚本中进行其它的业务整合运用,脚本采用纯Pascal语言脚本。

# 5.1.22. Offset属性

property Offset: Double read FOffset write SetOffset;
1

   UpperWarning属性是指数据偏移量。

# 5.1.23. Port属性

property Port: Integer read FPort write SetPort;
1

   Host属性是指ModbusTCP设备的端口号,默认502。

# 5.1.24. RegCount属性

property RegCount: Integer read FRegCount write SetRegCount;
1

   RegCount属性是指读取ModbusTCP数据地址的数据长度。

# 5.1.25. SavaData属性

property SaveData: boolean read FSaveData write FSaveData default false;
1

   SavaData属性勾选后,会将监测到的数据上传到TARS云端服务器,这里必需要指定DBConnection属性的控件。

# 5.1.26. SavaInterval属性

property SaveInterval: Integer read FSaveInterval write SetSaveInterval;
1

   SavaInterval属性是指采集数据保存时的频率。

# 5.1.27. BeginTime属性

property BeginTime: string read FStartDateTime write FStartDateTime;
1

   BeginTime属性指采集数据的起始时间。

# 5.1.28. Site属性

property Site: string read FSite write FSite;
1

   Site属性是指ModbusTCP设备的站点名称,可以作为ModbusTCP数据地址的说明之用。

# 5.1.29. StartReg属性

property StartReg: Integer read FStartReg write SetStartReg;
1

   RegCount属性是指读取ModbusTCP数据起始地址。

# 5.1.30. UpperWarning属性

property UpperWarning: TUpperWarning read FUpperWarning write SetUpperWarning;
1

   UpperWarning属性是指数据上限异常类型,目前有:uw1,uw2,uw3,uw4,uwNote。

# 5.2. 方法(Methods)

  • TModbusTCPReadItem 组件主要方法
方法 功能说明
GetRegValues 根据索引号返回数组中的数值
GetBitValues 根据索引号返回数组中的数值
SetPropValue 设置组件属性值
GetPropValue 读取组件属性值

# 5.2.1. GetRegValues方法

//存储类比信号数据
function GetRegValues(QIndex: Integer): Word;
1
2

  通过GetRegValues方法可获取ModbusTCP设备返回的数组中的数据。通过索引号获取对应的数据。

var
 i:Word;
begin
  //获取数组中的第0个数据
  i := FThis.ModbusTCPReadChannel1.ModbusList[0].GetRegValues(0);
  fxEdit2.Text := IntToStr(i);
end;
1
2
3
4
5
6
7

# 5.2.2. GetBitValues方法

//读取数位信号数据
function GetBitValues(QIndex: Integer): boolean;
1
2

  通过GetRegValues方法可获取ModbusTCP设备返回的数组中的数据。通过索引号获取对应的数据。

var
 i:boolean;
begin
  //获取数组中的第0个数据
  i := FThis.ModbusTCPReadChannel1.ModbusList[0].GetBitValues(0);
end;
1
2
3
4
5
6

# 5.2.3. SetPropValue方法

procedure SetPropValue(QControl, QControlProp: string; QValue: Variant);
1

  设置控件属性值,通过SetPropValue方法可以将DataValue赋值给指定控件的属性。

 FThis.ModbusTCPReadChannel1.ModbusList[0].SetPropValue(fxEdit1,Text);
1

# 5.2.4. GetPropValue方法

function GetPropValue(QControl, QControlProp: string): Variant;
1

  设置控件属性值,通过GetPropValue方法可以获取指定控件属性的值,并返回。

var
 v:String;
Begin
  v := FThis.ModbusTCPReadChannel1.ModbusList[0].GetPropValue(fxEdit1,Text);
End;

1
2
3
4
5
6

# 6. TModbusTCPWriteChannel 组件

  ModbusTCP多功能数据写入组件,可通过定义多个TModbusTCPWriteItem子项实现对多个Modbus设备的控制。

  你可以简单设置ModbusTCPWriteChannel组件属性即可完成ModbusTCP设备的数据写入功能,无需使用脚本。当然配合脚本使用可以丰富系统业务功能。

# 6.1. 属性(Properties)

  • TModbusTCPWriteChannel Item组件主要属性
属性 功能说明
ConnectionMode 指定连接模式
DataControl 指定数据控件
DataField 指定数据字段
DataLower 指定数据下限
DataType 指定数据类型
DataUpper 指定数据上限
DataValue 指定数据值
DBConnection 指定数据连接组件
Formula 指定数据解析脚本公式
FuntionCode 指定Modbus功能码
Host 指定ModbusTCP设备IP地址
LowerWarning 指定数据下限报警等级
Machine 指定采集点所在的机器
MeterType 指定采集点仪表类型
ModuleName 指定设备名称
ModeuleNo 指定设备编号
MonitorType 指定监测类型
MsgScript 指定消息脚本
Port 指定ModbusTCP设备端口号
ReadConfig 指定是否读取配置
RegCount 指定数据长度
Site 指定站点名称
StartReg 指定起始地址
UpperWarning 指定数据上限报警等级

# 6.1.1. ConnectionMode属性

property ConnectionMode: TConnMode read FConnectionMode write FConnectionMode;
1

   ConnectionMode属性有两个值:cmClient、cmServer。 cmClient模式下,是客户端直接与Modbus设备进行通讯采集数据并显示的,cmServer模式下,是读取TARS物联网之下的配置内容,仅显示TARS采集的数据。

# 6.1.2. DataControl属性

property DataControl: string read FDataControl write SetDataControl;
1

   DataControl属性是指需要将写入之数据显示在某个组件上时,这个组件的名称。

# 6.1.3. DataField属性

property DataField: string read FDataField write SetDataField;
1

   DataField属性是指需要将写入之数据显示在某个组件上时,这个组件的属性名称。

# 6.1.4. DataLower属性

property DataLower: Double read FDataLower write SetDataLower;
1

   DataLower属性是指数据下限值,当写入之数据低于下限值时,启动报警或异常。

# 6.1.5. DataType属性

property DataType: TDataType read FDataType write SetDataType;
1

   DataType属性是指写入之数据的数据类型。例如:* dtBoolean -- 布尔类型, dtInt --整数类型。

# 6.1.6. DataUpper属性

property DataUpper: Double read FDataUpper write SetDataUpper;
1

   DataLower属性是指数据上限值,当写入之数据超过上限值时,启动报警或异常。

# 6.1.7. DataValue属性

property DataValue: Double read FDataValue write FDataValue;
1

   DataValue属性指采写入数据存放处。

# 6.1.8. DBConnection属性

property DBConnection: TRFConnection read FOwerDBConnection write SetDBConnection;
1

   DBConnection属性是用来指定TRFConnection组件的,通过TRFConnection组件,可与TARS云端服务器进行数据交互。

# 6.1.9. Formula属性

property Formula: TStrings read FFormula write SetFormula;
1

  Formula属性是指可通过脚本对采集之数据进行业务处理,经过业务处理后的值还是存储于DataValue中。

示例

begin
 FThis.DataValue := FThis.GetRegValues(0) * 0.1;
end.
1
2
3

# 6.1.10. FuntionCode属性

property FunctionCode: TFunReadCode read FFunctionCode write SetFunctionCode;
1

   FuntionCode属性是指Modbus功能码,根据不同的功能码写入Modbus设备不同区之地址的数据。

TfxModbusRead支持的读取功能码:

  • fc05 写入单笔输出数位讯号 Single Coil(code $05)
  • fc06 写入单笔输出类比讯号 Single Register (code $06)
  • fc15 写入多笔输出数位讯号 Multiple Coils(code $0F)
  • fc16 写入多笔输出类比讯号 Multiple Registers (code $10)

# 6.1.11. Host属性

property Host: string read FHost write SetHost;
1

   Host属性是指ModbusTCP设备的地址,如:192.168.1.100。

# 6.1.12. LowerWarning属性

property LowerWarning: TLowerWarning read FLowerWarning write SetLowerWarning;
1

   UpperWarning属性是指数据下限异常类型,目前有:lw1,lw2,lw3,lw4,lwNote。

# 6.1.13. Machine属性

property Machine: string read FMachine write FMachine;
1

   Machine属性指采集站点所属哪个机台设备。

# 6.1.14. MeterType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MeterType属性指仪表类型

# 6.1.15. ModuleName属性

property ModuleName: string read FModuleName write FModuleName;
1

   ModuleName属性指Modbus设备名称,XX温控器、XX电表 等。

# 6.1.16. ModeuleNo属性

property ModuleNo: string read FModuleNo write FModuleNo;
1

   ModuleNo属性指Modbus设备的编号,如001、002等。

# 6.1.17. MonitorType属性

property MonitorType: string read FMonitorType write FMonitorType;
1

   MonitorType属性指站点的监测类型,如温度、压力等。

# 6.1.18. MsgScript属性

property MsgScript: TStrings read FMsgScript write SetMsgScript;
1

   MsgScript属性用作预警消息触发时,可在脚本中进行其它的业务整合运用,脚本采用纯Pascal语言脚本。

# 6.1.19. Port属性

property Port: Integer read FPort write SetPort;
1

   Host属性是指ModbusTCP设备的端口号,默认502。

# 6.1.20. RegCount属性

property RegCount: Integer read FRegCount write SetRegCount;
1

   RegCount属性是指写入ModbusTCP数据地址的数据长度。

# 6.1.21. Site属性

property Site: string read FSite write FSite;
1

   Site属性是指ModbusTCP设备的站点名称,可以作为ModbusTCP数据地址的说明之用。

# 6.1.22. StartReg属性

property StartReg: Integer read FStartReg write SetStartReg;
1

   RegCount属性是指写入ModbusTCP数据起始地址。

# 6.1.23. UpperWarning属性

property UpperWarning: TUpperWarning read FUpperWarning write SetUpperWarning;
1

   UpperWarning属性是指数据上限异常类型,目前有:uw1,uw2,uw3,uw4,uwNote。

# 6.2. 方法(Methods)

  • TModbusTCPWriteChannel 组件主要方法
方法 功能说明
Write 执行Modbus写入操作
  • TModbusTCPWriteItem组件主要方法
方法 功能说明
execute 执行Modbus写入操作

# 6.2.1. execute方法

procedure execute;
1

  执行TModbusTCPWriteItem的写入事件。

# 6.2.2. Write方法

procedure Write(QIndex: Integer; QValue: Variant);
1

示例

 //以下两种方法执行的结果是一样的。
 FThis.ModbusTCPWriteChannel.ModbusList[0].DataValue := 1;
 FThis.ModbusTCPWriteChannel.ModbusList[0].execute;
 
 FThis.ModbusTCPWriteChannel.Write(0,1);
1
2
3
4
5

# 7. TModbusConnection 组件

  ModbusRTU 网络通讯协议的连接组件。   TModbusConnection配合TModbusClient 、TModbusRTUReadChannel 、TModbusRTUWriteChannel 组件使用,不可单独使用。

配置界面

TModbusConnection 主要属性说明

  • Serial Port:通讯端口。
  • Baud Rate:波特率。
  • Echo Query Before Reply:查询前先回复。
  • Data Bits:数据位。
  • Paritty:校验位。
  • Stop Bits:停止位。
  • Transmission Mode:传输方式。
  • Flow Control:流控制。
  • Enabled Lines:可控制线。
  • Silent Interval [character times]:间歇时间间隔。

# 8. TModbusClient 组件

  ModbusRTU多功能数据采集与控制组件。

# 8.1. 属性(Properties)

  • TModbusClient组件主要属性
属性 功能说明
Connection 指定TModbusConnection通讯连接组件
MaxConsecutiveTimeouts 指定最长连续超时时间
ServerAddress 指定Modbus设备地址

# 8.2. 方法(Methods)

  • TModbusClient组主要方法
方法 功能说明
ReadCoils 读取多个DO数位讯号输出
ReadHoldingRegisters 读取多个AO类比讯号输出
ReadInputRegister 读取单个AO类比讯号输入
ReadDiscreteInputs 读取单个DO类比讯号输入
WriteSingleCoil 写入单个AO数位讯号输出
WriteCoils 写入多个AO数位讯号输出
WriteSingleRegister 写入单个DO类比讯号输出
WriteMultipleRegisters 写入多个DO类比讯号输出

# 8.2.1. ReadCoils方法

  读取多个线圈状态(01)

function ReadCoils(StartBit: Word; BitCount: Word; UserData: Pointer = nil): Cardinal;
1
  • 示列
  FThis.ModbusClient1.ReadCoils(1,3,nil);
1

# 8.2.2. ReadDiscreteInputs方法

  读取离散输入状态(02)

function ReadDiscreteInputs(StartBit: Word; BitCount: Word; UserData: Pointer = nil): Cardinal;
1
  • 示列
  FThis.ModbusClient1.ReadDiscreteInputs(1,3,nil);
1

# 8.2.3. ReadHoldingRegisters方法

  读取多个保持型寄存器(03)

function ReadHoldingRegisters(StartReg: Word; RegCount: Word; UserData: Pointer = nil): Cardinal;
1
  • 示列
  FThis.ModbusClient1.ReadHoldingRegisters(1,3,nil);
1

# 8.2.4. ReadInputRegisters方法

  读取多个输入寄存器(04)

function ReadInputRegisters(StartReg: Word; RegCount: Word; UserData: Pointer = nil): Cardinal;
1
  • 示列
  FThis.ModbusClient1.ReadInputRegisters(1,3,nil);
1

# 8.2.5. WriteSingleCoil方法

  写入单个线圈状态(05)

function WriteSingleCoil(BitAddr: Word; BitValue: Boolean; UserData: Pointer = nil): Cardinal;
1
  • 示列
  FThis.ModbusClient1.WriteSingleCoil(1,True,nil);
1

# 8.2.6. WriteMultipleCoils方法

  写入多个线圈状态(15)

function WriteMultipleCoils(StartBit: Word; const BitValues: TBitValues;UserData: Pointer = nil): Cardinal;
1
  • 示列
var
 v:TBitValues;
begin
  Setlength(v,3);
  v[0] := true;
  v[1] := true;
  v[2] := false;
  FThis.ModbusClient1.WriteMultipleCoils(1,v,nil);
end;
1
2
3
4
5
6
7
8
9

# 8.2.7. WritSingleRegister方法

  写入单个保持型寄存器(06)

function WriteSingleRegister(RegAddr: Word; RegValue: Word; UserData: Pointer = nil): Cardinal;
1
  • 示例
  FThis.ModbusClient1.ReadInputRegisters(1,3,nil);
1

# 8.2.8. WriteMultipleRegisters方法

  写入多个保持型寄存器(16)

function WriteMultipleRegisters(StartReg: Word; const RegValues: TRegValues;UserData: Pointer = nil): Cardinal;
1
  • 示例
var
 v:TRegValues;
begin
  Setlength(v,3);
  v[0] := 11;
  v[1] := 22;
  v[2] := 33;
  FThis.ModbusClient1.WriteMultipleRegisters(1,v,nil);
end;
1
2
3
4
5
6
7
8
9

# 8.3. 事件

  • TModbusClient主要事件
事件 何时触发
OnReadCoilsRead 在执行ReadCoils方法时触发该事件
OnReadDiscreteInputsRead 在执行ReadDiscreteInputs方法时触发该事件
OnReadHoldingRegistersRead 在执行ReadHoldingRegisters方法时触发该事件
OnInputRegistersRead 在执行ReadInputRegisters方法时触发该事件

# 8.3.1. OnCoilsRead事件

  在执行ReadCoils方法时触发该事件

  procedure OnCoilsRead(Sender: TModbusClient; const Info: TTransactionInfo; StartBit: Word; BitCount: Word; const BitValues: TBitValues);
1
  • 示例
var
 i:Integer;
begin
 for i := Low(BitValues) to High(BitValues) do
 begin
  if BitValues[i] then
   FThis.Memo1.Lines.Add('True')
  else
   FThis.Memo1.Lines.Add('False') 
 end;
end;
1
2
3
4
5
6
7
8
9
10
11

# 8.3.2. OnDiscreteInputsRead事件

  在执行ReadDiscreteInputs方法时触发该事件

  procedure OnDiscreteInputsRead(Sender: TModbusClient; const Info: TTransactionInfo; StartBit: Word; BitCount: Word; const BitValues: TBitValues);
1
  • 示例
var
 i:Integer;
begin
 for i := Low(BitValues) to High(BitValues) do
 begin
  if BitValues[i] then
   FThis.Memo1.Lines.Add('True')
  else
   FThis.Memo1.Lines.Add('False') 
 end;
end;
1
2
3
4
5
6
7
8
9
10
11

# 8.3.3. OnHoldingRegistersRead事件

  在执行ReadHoldingRegisters方法时触发该事件

  procedure OnHoldingRegistersRead(Sender: TModbusClient; const Info: TTransactionInfo; StartReg: Word; RegCount: Word; const RegValues: TRegValues);
1
  • 示例
var
 i:Integer;
begin
 for i := Low(RegValues) to High(RegValues) do
 begin
   FThis.Memo1.Lines.Add(IntToStr(RegValues[i]));
 end;
end;
1
2
3
4
5
6
7
8

# 8.3.4. OnHoldingRegistersRead事件

  在执行ReadInputRegisters方法时触发该事件

  procedure OnInputRegistersRead(Sender: TModbusClient; const Info: TTransactionInfo; StartReg: Word; RegCount: Word; const RegValues: TRegValues);
1
  • 示例
var
 i:Integer;
begin
 for i := Low(RegValues) to High(RegValues) do
 begin
   FThis.Memo1.Lines.Add(IntToStr(RegValues[i]));
 end;
end;
1
2
3
4
5
6
7
8

# 9. TModbusTCP 组件

  一个ModbusTCP客户端组件。

  您可以用TModbusTCP组件实现支持ModbusTCP协议的设备的控制和数据采集。

# 9.1. 属性(Properties)

  • TModbusTCP组件主要属性
属性 功能说明
AutoConnect 是否自动连接
Host 指定一个Modbus设备的IP地址
Port 指定一个Modbus设备的端口号
UnitID 制定Modbus设备的Slave ID

# 9.1.1. AutoConnect

property AutoConnect: Boolean read FAutoConnect write SetAutoConnect default True;
1

# 9.1.2. Host属性

property Host: string;
1

  Host是指ModbusTCP设备的IP地址。如:192.168.1.100。

FThis.ModbusTCP1.Host := '192.168.1.100';
1

# 9.1.3. Port属性

property Port: Word;
1

  Port是指ModbusTCP设备的端口号。默认502。

FThis.ModbusTCP1.Port := 502;
1

# 9.1.4. UnitID属性

property UnitID: Integer;
1

  制定ModbusTCP 设备的SlaveID 对于需要使用SlaveID 的ModbusTCP设备有作用。

# 9.2. 事件(Events)

  无

# 9.3. 方法(Methods)

  • TModbusTCP组件主要方法
方法 功能说明
Connected 判断连接状态
ReadCoil 读取单个DO数位讯号输出
ReadCoils 读取多个DO数位讯号输出
ReadHoldingRegister 读取单个AO类比讯号输出
ReadHoldingRegisters 读取多个AO类比讯号输出
ReadInputRegister 读取单个AI类比讯号输入
WriteCoil 写入单个AO数位讯号输出
WriteCoils 写入多个AO数位讯号输出
WriteRegister 写入单个DO类比讯号输出
WriteRegisters 写入多个DO类比讯号输出

# 9.3.1. Connect方法

function Connected:Boolean;
1

  连接设备。

 if FThis.ModbusTCP1.Connected then
    Showmessage('连接成功!');
1
2

# 9.3.2. ReadCoil方法

function ReadCoil(const RegNo: Word; out Value: Boolean): Boolean;
1

  读取单个数位讯号输出。

//读取DO数位信号输出
Procedure btnReadCoilOnClick(Sender: TObject);
var
 v:boolean;
Begin
  if .ReadCoil(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('ReadCoil Value->>> 1')
    else
       FThis.Memo1.Lines.Add('ReadCoil Value->>> 0');
  End
  else
    FThis.Memo1.Lines.Add('ReadCoil->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 9.3.3. ReadCoils方法

function ReadCoils(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
1

  读取多个DO数位讯号输出。

var
  v:string;
begin
    FThis.ModbusTCP1.ReadCoils(1,2,v);
end;
1
2
3
4
5

# 9.3.4. ReadHoldingRegister方法

function ReadHoldingRegister(const RegNo: Word; out Value: Word): Boolean;
1

  读取单个AO类比讯号输出。

//读取AO类比信号输出
Procedure btnReadHoldingRegisterOnClick(Sender: TObject);
var
 v:word;
Begin
  if FThis.ModbusTCP1.ReadHoldingRegister(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v))
    else
       FThis.Memo1.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v));
  End
  else
    FThis.Memo1.Lines.Add('ReadHoldingRegister->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 9.3.5. ReadHoldingRegisters方法

function ReadHoldingRegisters(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
1

  读取多个AO类比讯号输出。

var
    v:String;
Begin
   FThis.ModbusTCP1.ReadHoldingRegisters(1,4,v);
End;
1
2
3
4
5

# 9.3.6. ReadInputRegister方法

function ReadInputRegister(const RegNo: Word; out Value: Word): Boolean;
1

  读取单个AI类比讯号输入。

//读取AI数位信号输入
Procedure btnReadInputRegisterOnClick(Sender: TObject);
var
 v:word;
Begin
  if FThis.ModbusTCP1.ReadInputRegister(1,v) then
  begin
    if v Then
       fxMemo1.Lines.Add('ReadInputRegister Value->>> '+floattostr(v))
    else
       fxMemo1.Lines.Add('ReadInputRegister Value->>> '+floattostr(v));
  End
  else
    fxMemo1.Lines.Add('ReadInputRegister->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 9.3.7. WriteCoil方法

function WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;
1

  控制单个DO数位信号输出。

//控制DO数位信号输出
Procedure btnWriteCoilOnClick(Sender: TObject);
var
 v:boolean;
Begin
  v := false;
  if FThis.ModbusTCP1.WriteCoil(1,v) then
  begin
    if v Then
       fxMemo1.Lines.Add('WriteCoil Value->>> 1')
    else
       fxMemo1.Lines.Add('WriteCoil Value->>> 0');
  End
  else
    fxMemo1.Lines.Add('WriteCoil->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 9.3.8. WriteCoils方法

function WriteCoils(const RegNo: Word; const Blocks: Word; const RegisterData: string): Boolean;
1

  控制多个DO数位信号输出。

var
  v:boolean;
  RegisterData:string;
begin
    RegisterData := '1,0';1代表True,0代表False
    v := FThis.ModbusTCP1.WriteCoils(1,2,'1,0');
end;
1
2
3
4
5
6
7

# 9.3.9. WriteRegister方法

function WriteRegister(const RegNo: Word; const Value: Word): Boolean;
1

  写入单个DO类比讯号输出

var
 v:word;
Begin
  v := 123;
  if FThis.ModbusTCP1.WriteRegister(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('WriteRegister Value->>> '+floattostr(v))
    else
       FThis.Memo1.Lines.Add('WriteRegister Value->>> '+floattostr(v));
  End
  else
    FThis.Memo1.Lines.Add('WriteRegister->>> error!');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 9.3.10. WriteRegisters方法

function WriteRegisters(const RegNo: Word; const RegisterData: string; Modbus: TfxModbusTCP): Boolean;
1

  写入多个DO类比讯号输出。

var
  v:boolean;
  RegisterData:string;
begin
    RegisterData := '1,0'
    v := FThis.ModbusTCP1.WriteRegisters(1,2,'1,0');
end;
1
2
3
4
5
6
7

# 10. TOPCDAServer 组件

  该组件用于配置OPCDA服务器与客户端的连接。将OPCDAServer拖动至窗体界面后,配置方式如下(此处以OPCDA控制LED灯范例中的OPC客户端为例):

  • 双击OPCDAServer1,打开OPC Inspector对话框。
  • 选择Server-Select,打开Select OPC Server对话框。
  • 点击右侧的Find按钮,列表中会出现可选的OPC服务器,选择该服务器,点击[ok]。
  • 回到OPC Inspector界面,选择Server-Connect,连接成功。接下来在该界面下新建Groups与Items。选择Groups-Add,填写组名称,点击OK保存。
  • 选择Items-Add,在Select OPC Item对话框中选择项目,此处的项目是在Arduino程序中进行定义的。选择对应选项,点击Open按钮。
  • 至此 OPCDAServer1配置完毕。

# 11. TAMapView 组件

  该组件显示为高德地图的展示,可用于定位信息的标注。

# 11.1. 属性

  • TAMapView组件主要属性
属性 功能说明
Options.Center 指定地图默认显示的位置经纬度信息
Options.lang 指定地图显示的默认语言
Satellite.Visible 指定是否显示卫星地图

# 11.2. 方法

# 11.2.1. LoadMap方法

procedure LoadMap;
1

  该方法可用于启用组件的加载地图功能。


# 12. TBaiduAPI 组件

  TBaiduAPI是一个基于BaiduOCR的OCR识别组件。使用时需要到百度官方网站进行注册申请Key。

# 12.1. 属性(Properties)

  • TBaiduAPI组件SdkConfig主要属性
属性 功能说明
APIKey 百度OCR APIKey
Secret 百度OCR密钥
  • 示例

基础文字识别

  //基础文字识别
 var
  v:string;
 begin
  //可指定文件或指定图片的Bitmap
  v := fxBaiduAPI1.doFileToGeneralBasic(PicturePath)//PicturePath是指图片路径
  v := fxBaiduAPI1.doBitmapToGeneralBasic(Image1.Bitmap)//指定图片的Bitmap
 end;
1
2
3
4
5
6
7
8
//基础文字识别时触发OnGeneralBasic事件,可在事件中定义其它配合的业务逻辑
Procedure fxBaiduAPI1OnGeneralBasic(Sender: TObject; Info: string);
Begin
  Showmessage(Info);
End;
1
2
3
4
5

车牌识别

  //车牌识别
 var
  v:string;
 begin
  //可指定文件或指定图片的Bitmap
  v := fxBaiduAPI1.doFileToLicensePlate(PicturePath)//PicturePath是指图片路径
  v := fxBaiduAPI1.doBitmapToLicensePlate(Image1.Bitmap)//指定图片的Bitmap
 end;
1
2
3
4
5
6
7
8
//车牌识别时触发DolicensePlate事件,可在事件中定义其它配合的业务逻辑
Procedure fxBaiduAPI1OnlicensePlate(Sender: TObject; Color: string; Number: string);
Begin
  Showmessage('颜色:'+Color+',车牌号:'+Number);
End;
1
2
3
4
5

车型识别

  //车型识别
 var
  v:string;
 begin
  //可指定文件或指定图片的Bitmap
  v := fxBaiduAPI1.doFileToCarInfo(PicturePath)//PicturePath是指图片路径
  v := fxBaiduAPI1.doBitmapToCarInfo(Image1.Bitmap)//指定图片的Bitmap
 end;
1
2
3
4
5
6
7
8
//车型识别时触发OnCarInfo事件,可在事件中定义其它配合的业务逻辑
Procedure fxBaiduAPI1OnCarInfo(Sender: TObject; Info: string);
Begin
  Showmessage(Info);
End;
1
2
3
4
5

# 13. TIdModbuClient 组件

  此控件可生成一个Modbus控件,用于读取ModbusTCP协议连接的设备数据。

# 13.1. 属性

属性 功能说明
AutoConnect 是否允许自动连接
Host ModbusTCP服务端的地址
Port ModbusTCP服务端连接的端口号

# 13.2. 方法

  • TIdModbusClient组件主要方法
方法 功能说明
Connected 判断连接状态
ReadCoil 读取单个DO数位讯号输出
ReadCoils 读取多个DO数位讯号输出
ReadHoldingRegister 读取单个AO类比讯号输出
ReadHoldingRegisters 读取多个AO类比讯号输出
ReadInputRegister 读取单个AI类比讯号输入
WriteCoil 写入单个AO数位讯号输出
WriteCoils 写入多个AO数位讯号输出
WriteRegister 写入单个DO类比讯号输出
WriteRegisters 写入多个DO类比讯号输出

# 13.2.1. Connected方法

procedure Connect;
function Connected:Boolean;
1
2

  连接设备。

 FThis.IdModbusClient1.Connect;
 if FThis.IdModbusClient1.Connected then
    Showmessage('连接成功!');
1
2
3

# 13.2.2. ReadCoil方法

function ReadCoil(const RegNo: Word; out Value: Boolean): Boolean;
1

  读取单个数位讯号输出。

//读取DO数位信号输出
Procedure btnReadCoilOnClick(Sender: TObject);
var
 v:boolean;
Begin
  if FThis.IdModbusClient1.ReadCoil(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('ReadCoil Value->>> 1')
    else
       FThis.Memo1.Lines.Add('ReadCoil Value->>> 0');
  End
  else
    FThis.Memo1.Lines.Add('ReadCoil->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 13.2.3. ReadCoils方法

function ReadCoils(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
1

  读取多个DO数位讯号输出。

var
  v:string;
begin
    FThis.IdModbusClient1.ReadCoils(1,2,v);
end;
1
2
3
4
5

# 13.2.4. ReadHoldingRegister方法

function ReadHoldingRegister(const RegNo: Word; out Value: Word): Boolean;
1

  读取单个AO类比讯号输出。

//读取AO类比信号输出
Procedure btnReadHoldingRegisterOnClick(Sender: TObject);
var
 v:word;
Begin
  if FThis.IdModbusClient1.ReadHoldingRegister(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v))
    else
       FThis.Memo1.Lines.Add('ReadHoldingRegister Value->>> '+floattostr(v));
  End
  else
    FThis.Memo1.Lines.Add('ReadHoldingRegister->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 13.2.5. ReadHoldingRegisters方法

function ReadHoldingRegisters(const RegNo: Word; const Blocks: Word; out RegisterData: string): Boolean;
1

  读取多个AO类比讯号输出。

var
    v:String;
Begin
   FThis.IdModbusClient1.ReadHoldingRegisters(1,4,v);
End;
1
2
3
4
5

# 13.2.6. ReadInputRegister方法

function ReadInputRegister(const RegNo: Word; out Value: Word): Boolean;
1

  读取单个AI类比讯号输入。

//读取AI数位信号输入
Procedure btnReadInputRegisterOnClick(Sender: TObject);
var
 v:word;
Begin
  if FThis.IdModbusClient1.ReadInputRegister(1,v) then
  begin
    if v Then
       fxMemo1.Lines.Add('ReadInputRegister Value->>> '+floattostr(v))
    else
       fxMemo1.Lines.Add('ReadInputRegister Value->>> '+floattostr(v));
  End
  else
    fxMemo1.Lines.Add('ReadInputRegister->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 13.2.7. WriteCoil方法

function WriteCoil(const RegNo: Word; const Value: Boolean): Boolean;
1

  控制单个DO数位信号输出。

//控制DO数位信号输出
Procedure btnWriteCoilOnClick(Sender: TObject);
var
 v:boolean;
Begin
  v := false;
  if FThis.IdModbusClient1.WriteCoil(1,v) then
  begin
    if v Then
       fxMemo1.Lines.Add('WriteCoil Value->>> 1')
    else
       fxMemo1.Lines.Add('WriteCoil Value->>> 0');
  End
  else
    fxMemo1.Lines.Add('WriteCoil->>> error!');
End;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 13.2.8. WriteCoils方法

function WriteCoils(const RegNo: Word; const Blocks: Word; const RegisterData: string): Boolean;
1

  控制多个DO数位信号输出。

var
  v:boolean;
  RegisterData:string;
begin
    RegisterData := '1,0';1代表True,0代表False
    v := FThis.IdModbusClient1.WriteCoils(1,2,'1,0');
end;
1
2
3
4
5
6
7

# 13.2.9. WriteRegister方法

function WriteRegister(const RegNo: Word; const Value: Word): Boolean;
1

  写入单个DO类比讯号输出。

var
 v:word;
Begin
  v := 123;
  if FThis.IdModbusClient1.WriteRegister(1,v) then
  begin
    if v Then
       FThis.Memo1.Lines.Add('WriteRegister Value->>> '+floattostr(v))
    else
       FThis.Memo1.Lines.Add('WriteRegister Value->>> '+floattostr(v));
  End
  else
    FThis.Memo1.Lines.Add('WriteRegister->>> error!');
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 13.2.10. WriteRegisters方法

function WriteRegisters(const RegNo: Word; const RegisterData: string; Modbus: TfxModbusTCP): Boolean;
1

  写入多个DO类比讯号输出。

var
  v:boolean;
  RegisterData:string;
begin
    RegisterData := '1,0'
    v := FThis.IdModbusClient1.WriteRegisters(1,2,'1,0');
end;
1
2
3
4
5
6
7

# 14. TIdModbusServer 组件

  该组件作为服务端用于作为可供连接的ModbusTCP服务器使用。

# 14.1. 属性

属性 功能说明
Active 功能是否处于激活状态
BaseRegister 寄存器的起始地址
DefaultPort ModbusTCP连接的端口号信息
MaxConnections 设定允许的最大连接
MaxRegister 设定最大的寄存器数量
MinRegister 设定最小的寄存器数量

# 15. TRestAPI 组件

  该组件是RestAPI客户端,用于向第三方的Rest服务器发送请求,并获取反馈的信息。关于REST的表述可参考 REST (opens new window)。

  在控件上使用鼠标右键单击,选择 Properties 选项,可使用向导界面的方式设置Rest请求信息,设置完成后,点击 Send 按钮查看反馈的结果信息。点击 OK 按钮将设置的内容保存至RestAPI控件的属性中。

# 15.1. 属性

属性 功能说明
APIName API的名称,作为标记描述信息使用
Body 请求主体的内容
ContentType 请求的内容类型
Headers 请求头的值的类型
Method 请求的类型
Params 请求的参数内容
Script 请求的脚本内容
Server 请求的服务器的地址信息
Url 请求的除服务器以外的地址的信息

# 15.1.1. Body

property Body: TStringList;
1

  设置请求体中的内容,点击属性右侧的按钮以打开文本编辑框,向其中输入信息,通常可在其中输入格式化的JSON文本或者key=value类型的文本或者纯文本信息,根据API的需求进行填写。

  当ContentType设置为application/json时,Body处填写的是格式化的JSON文本;当ContentType设置为application/x-www-form-urlencoded时,Body处填写的是key=value键值对。

# 15.1.2. ContentType

property ContentType: string;
1

  设置请求内容的类型。通常有以下几种类型:

  • text/html:带有html标记的文本类型。
  • application/json:格式化的json文本类型。
  • application/xml:格式化的xml文本类型。
  • application/octet-stream:未知类型,默认表示为二进制的数据流类型。
  • application/x-www-form-urlencoded:key=value类型的文本编码方式。

# 15.1.3. Headers

property Headers: TStringList;
1

  设置发送请求的请求头的信息。

# 15.1.4. Method

property Method: TRequestMethod;
1

  设置请求的发送方式。

  • rmGET:以GET的方式发送请求。
  • rmPOST:以POST的方式发送请求。
  • rmDELETE:以DELETE的方式发送请求。
  • rmPUT:以PUT的方式发送请求。

# 15.1.5. Params

property Params: TStringList;
1

  设置发送的请求中带有的参数信息。以key=value的方式设置,每行设置一个。此部分的参数在发送中会使用URL编码的方式附加在URL后进行发送。

  比如在Params中设置的参数为:

key1=value1
key2= value2
1
2

  请求的地址为http://192.168.1.1/,则在经过URL编码后请求的地址形式如下:

http://192.168.1.1/?key1=value1&key2=value2
1

  在请求的Rest地址与第一个参数中间使用?分隔,其余的参数与参数之间使用&进行分隔。

# 15.1.6. Script

property Script: TStringList;
1

  用于设置API返回的JSON信息中将会使用的提取特定数值的脚本信息。可使用的有以下几项内容。

  • GetJSONString:获取JSON中特定值的文本。
  • GetJSONNumber:获取JSON中特定值的数值。
  • GETJSONInteger:获取JSON中特定值的整数值信息。
  • GETJSONObject:获取JSON中特定的对象
  • GETJSONBool:获取JSON中特定值的布尔值信息。
  • GETJSONObject:获取JSON中指定名称的对象信息。
  • GETJSONArray:获取JSON中指定名称的对象数组信息。
  • GETJSONPair:获取JSON中指定名称的键值对的信息。

  具体的使用方式如下:

{
    "$user":{
        "auth_token": "ABDEDEEDEDEED",
        "number": 1,
        "float": 3.2,
        "bool": true
    },
    "status":[
        {"ok": true},
        {"ok": false}
    ]
}
1
2
3
4
5
6
7
8
9
10
11
12

  如果我们要从中取出auth_token的值,在脚本信息中可以使用下述方式获取:

方式一:写路径获取

GETJSONString=$user.auth_token
1

方式二:分层单步获取

GETJSONString=$user
GETJSONString=auth_token
1
2

  如果是取特定数组中的对象,使用以下方式来获取:

数组有名称

GETJSONBool=status[0].ok
1

数组无名称:数组无名称通常使用在起始的位置。表示方式如下:

[
    {"bad": "AA"},
    {"bad": "BB"}
]
1
2
3
4

  上述写法如下:

GETJSONString=[0].bad
1

  如果要取JSON中表示的各种数据类型的数值或者对象,使用下述方式:

文本类型

GETJSONString=$user.auth_token
1

数值类型(返回类型为文本)

GETJSONNumber=$user.number
1

整数

GETJSONInteger=$user.number
1

浮点数

GETJSONFloat=$user.float
1

布尔值

GETJSONBool=$user.bool
1

对象

GETJSONObject=$user
1

数组

GETJSONArray=status
1

值对

GETJSONPair=$user
1

# 15.1.7. Server

property Server: string;
1

  设定API厂商的服务地址,此服务地址可从API服务管理界面进行设置。

# 15.1.8. Url

property Url: string;
1

  设定处服务地址外的具体Url路径信息。首位不需要带地址分隔符号。

# 15.2. 事件

# 15.2.1. ResultData

procedure UgRestApiResultData(sender: tobject;aresult: string);
1

  设置当接收到RestAPI返回的消息时触发事件,在aresult中显示返回的文本。

示例:假设从返回的结果中获取auth_token,可使用下述的方式来获取。

//PasScript
procedure TMyHandler.RestAPI1ResultData;
Var
  vValue: TJSONValue;
begin
  FThis.Memo1.Lines.Add(aresult);
  vValue := paxfunc.ParseJSONValue(aresult);
  vValue := TJSONObject(vValue).GetValue('$user');
  vToken := TJSONObject(vValue).GetValue('auth_token').Value;
end;
1
2
3
4
5
6
7
8
9
10

# 15.3. 方法

# 15.3.1. Send

procedure Send;
1

  设置发送请求。

# 16. TWebSocketClient 组件

  此组件为WebSocket客户端组件,可用于与WebSocket服务器连接实现通信。

# 16.1. 属性

# 16.1.1. Active

property Active: Boolean;
1

  是否激活WebSocket客户端,为 True时表示启用客户端功能。

# 16.1.2. Authentication

  用于认证相关的选项,包含四种认证方式。如不需要使用认证,将其中的 Enabled 属性设置为 False。以下是认证方式对应的属性说明。

  • Session:客户端将用户名 User 与 Password 通过HTTP GET的方式发送给服务器,如果WebSocket认证成功,服务器会给客户端反馈一个会话ID,客户端使用会话ID作为参数可发起WebSocket连接。当 Session 中的 Enabled 设置为 True 时使用此认证方式。

  • URL:客户端将用户名User 与密码 Password 作为参数传递给服务器来打开WebSocket连接。当 URL 中的 Enabled 设置为 True 时使用此认证方式。

  • Basic:客户端将用户名User 与密码 Password 置于HTTP请求头中,使用基本认证的方式实现认证。当 Basic 中的 Enabled 设置为 True 时使用此认证方式。

  • Token: 使用令牌的方式进行认证,在发送时将令牌置于请求头中进行发送。当 Token 中的 Enabled 设置为 True 时使用此认证方式。

# 16.1.3. HeartBeat

  用于设置心跳连接的相关选项,当其中的 Enabled 属性设置为 True 时,系统会每隔固定时向服务器发送心跳包以保持客户端的连接。

  • Interval:设置心跳包发送的间隔时长。
  • Timeout:设置发送心跳包的反馈的超时时间。

# 16.1.4. Host

  设置WebSocket服务器的IP地址或域名。

# 16.1.5. LoadBalancer

  设置负载均衡的相关选项。当 Enabled 选项设置为 True 时,表示当前客户端连接至一个负载均衡服务器用以广播消息并获取服务器相关的信息。

  • Host:负载均衡服务器的主机地址。
  • Port:负载均衡服务器的端口号。
  • Servers:手动设置WebSocket Servers进行连接(如果不使用Load Balancer Server获取服务器连接方式)。

# 16.1.6. LogFile

  在Debug模式下使用,用于输出调试日志。

  • Enabled:设置是否启用日志文件。
  • FileName:设置显示的日志文本名称。

# 16.1.7. NotifyEvents

  设置WebSocket事件的通知方式。

  • neAsynchronous:这是默认模式,在异步模式下通知线程事件,将事件添加到与主线程异步同步的队列中。
  • neSynchronous:如果选择该模式,在同步模式下通知线程事件,需要与主线程同步来通知这些事件。
  • nwNoSync:不与主线程同步,如果需要访问非线程安全的控件,则需要实现自己的同步方法。

# 16.1.8. Options

  设置在连接阶段使用自定义的请求头。

  • CleanDisconnect:如果启用,每次客户端与服务器断开连接时,首先发送消息通知服务器连接将被关闭。

  • FragmentedMessages:允许处理碎片消息

    • frgOnlyBuffer:消息被缓冲,直到收到所有数据,它引发 OnBinary 或 OnMessage 事件(默认选项)
    • frgOnlyFragmented:每次收到新的分片时,都会引发 OnFragmented 事件。
    • frgAll:每次接收到一个新的分片时,它会引发 OnFragmented 事件,其中包含从第一个数据包收到的所有数据。 当收到所有数据时,它会引发 OnBinary 或 OnMessage 事件。
  • Origin:自定义连接原点。

  • Parameters:定义 GET 上使用的参数。

  • RaiseDisconnectExceptions:默认启用,每次因协议错误断开连接时引发异常。

  • ValidateUTF8:如果启用,则验证消息是否包含 UTF8 有效字符,默认情况下禁用。

# 16.1.9. Port

  设置连接的端口。

# 16.1.10. Proxy

  设置是否使用代理服务器,如需要使用,设置 Enabled 为 True,填写代理服务器的地址,端口号,用户名与密码,并设置代理服务器的连接类型 proxyType。

  • pxyHTTP:HTTP的代理服务器。
  • pxySocks4:Socks4的代理服务器。
  • pxySocks4A:Socks4A的代理服务器。
  • pxySocks5:Socks5的代理服务器。

# 16.1.11. QueueOptions

  该属性允许在内部队列中排队消息(而不是直接发送)并在连接线程的上下文中发送消息,这可以防止多个线程尝试发送消息时发生锁定。 对于每种消息类型:可以配置文本(Text)、二进制(Binary)或 Ping 队列,默认情况下设置的值是 qmNone,这意味着消息不排队。 其他类型,表示不同的队列级别,它们之间的区别只是处理的顺序(首先处理 qmLevel1,然后是 qmLevel2,最后是 qmLevel3)。

示例:如果Text和Binary消息的属性设置为 qmLevel2 并且 Ping 设置为 qmLevel1。 客户端将首先处理 Ping 消息(因此,如果它们同时排队,则 Ping 消息比 Text 或 Binary 先发送),然后在同一队列中处理 Text 和 Binary 消息。

# 16.1.12. Throttle

  用于限制每秒接收发送的数据速率。设置 Enabled 表示为启用功能,在 BitsPerSec 中设置速率。

# 16.1.13. TLS

  是否启用安全连接。

# 16.1.14. TLSOptions

  如果TLS选项启用,以下可进行TLS选项的自定义设置。

  • ALPNProtocols:将发送到服务器的 ALPN 协议列表。
  • CertFile:证书文件的路径。
  • IOHandler:选择使用哪个库来使用 TLS 进行连接。
    • iohOpenSSL:使用 OpenSSL 库,是 Indy 组件的默认设置。需要部署openssl库(可以从注册客户的私人账户下载)。
    • iohSChannel:使用 Microsoft 为 Windows 实现的安全协议 Secure Channel,不需要部署 openssl 库。仅适用于 Windows 32/64 位。
  • KeyFile:证书密钥文件的路径。
  • RootCertFile:根证书文件的路径。
  • Password:如果证书使用密码保护,请在此处设置。
  • VerifyCertificate:如果必须验证证书,则启用此属性。
  • VerifyDepth:是一个整数属性,表示对 X.509 证书执行验证时允许的最大链接数。
  • Version:默认情况下协商所有可能的 TLS 版本,从新到低。可以选择特定的 TLS 版本。
    • tlsUndefined:这是默认值,客户端将尝试协商所有可能的 TLS 版本(从最新到最旧),直到连接成功。
    • tls1_0:实现 TLS 1.0
    • tls1_1:实现 TLS 1.1
    • tls1_2:实现 TLS 1.2
    • tls1_3:实现 TLS 1.3
  • OpenSSL_Options:openSSL 库的配置。
    • APIVersion:允许定义将使用哪个 OpenSSL API。
      • oslAPI_1_0:使用 API 1.0 OpenSSL,Indy 最新支持
      • oslAPI_1_1:使用 API 1.1 OpenSSL,需要我们的自定义 Indy 库并允许使用 OpenSSL 1.1.1 库(支持 TLS 1.3)。
      • oslAPI_3_0:使用 API 3.0 OpenSSL,需要我们的自定义 Indy 库并允许使用 OpenSSL 3.0.0 库(支持 TLS 1.3)。

# 16.1.15. WatchDog

  当此项启用时,如果检测到连接意外断开,则会自动尝试进行重新连接。

  • Interval:检测的时间间隔。
  • Attempt:尝试的最大次数,如果设置为0,表示会进行无限次数的连接。

# 16.2. 事件

事件名称 触发条件
OnBeforeHeartBeat 如果启用了 HeartBeat,则允许实现自定义 HeartBeat 设置 Handled 参数为 True(这意味着不会发送标准 websocket ping)
OnBinaryExt 当服务器向客户端发送二进制消息时,会触发此事件
OnConnect 当建立 WebSocket 连接时,会触发此事件
OnDisConnect 当 WebSocket 连接断开时,会触发此事件
OnError 每次出现 WebSocket 错误(如格式错误的握手)时,都会触发此事件
OnException 每次发生异常时,都会触发此事件
OnFragmented 当接收到来自消息的片段时(仅在 Options.FragmentedMessages = frgAll 或 frgOnlyFragmented 时触发)
OnHandShake 在客户端评估握手时触发此事件
OnMessage 每次服务器发送消息时,触发该事件
OnSSLVerifyPeer 如果启用了验证证书,在这种情况下您可以验证服务器证书是否有效并接受与否

# 16.3. 方法

# 16.3.1. Connect

function Connect(aTimeout:Integer): Boolean;
1

  向服务器发起连接。

# 16.3.2. DisConnect

function Disconnect(aTimeout:Integer): Boolean;
1

  从服务器断开连接。

# 16.3.3. WriteString

procedure WriteString(aText: String);
1

  向服务器发送文本消息。

FThis.WebSocketClient1.WriteString('{"action":"login","sid":"smart"}');
1

# 16.3.4. WriteStream

procedure WriteString(aStream: TStream);
1

  向服务器发送二进制内容消息。

# 16.3.5. Ping

procedure ping(aText:String);
1

  向服务器发送一个测试包,如果出现连接超时而没有接收到消息,则会关闭连接。

# 16.3.6. Start

procedure Start;
1

  使用第二线程来连接服务器,这样可以避免连接过程中的应用冻结。

# 16.3.7. Stop

procedure Stop;
1

  使用第二线程来断开服务器连接,这样可以避免断开连接过程中的应用冻结。

# 17. TWebSocketSever 组件

  此组件将作为WebSocket服务器控件,用于转发WebSocket消息。

# 17.1. 属性

# 17.1.1. Active

  设置是否激活服务器。

# 17.1.2. Authentication

  如果此项的 Enabled 设置为 True,则启用连接认证。

  • Authusers:设置认证的用户列表,每行的用户认证信息请按照以下方式进行填写:user=password。
  • AllowNonAuth:设置是否运行不使用认证。
  • Basic:设置是否使用为Basic认证。仅适用于服务器与客户端的 Websockets 和 HTTP 请求(客户端 Web 浏览器不支持此类身份验证)。
  • Session:客户端需要做一个 HTTP GET 传递用户名和密码,如果经过身份验证,服务器响应一个会话 ID。 使用此会话 ID,客户端打开作为参数传递的 WebSocket 连接。
  • URL:客户端打开 Websocket 连接,将用户名和密码作为参数传递。

# 17.1.3. Bindings

  用于配置管理服务绑定的IP地址与端口号。可使用此方式来管理绑定用于外部或内部访问的端口信息。

# 17.1.4. Extensions

  您可以对发送的消息启用压缩(如果客户端不支持压缩,则消息将自动交换而无需压缩)。

# 17.1.5. FallBack

  如果浏览器本身不支持 WebSockets 协议,您可以启用以下回退:

  • Flash:如果启用,如果浏览器没有原生 WebSocket 实现并且启用了 Flash,它使用 Flash 作为传输。
  • ServerSentEvents:如果启用,则允许从服务器向浏览器客户端发送推送通知。
    • Retry:尝试重新连接到服务器的时间间隔(以秒为单位)(默认为 3)。

# 17.1.6. HeartBeat

  用于设置心跳连接的相关选项,当其中的 Enabled 属性设置为 True 时,系统会每隔固定时向客户端发送心跳包以保持客户端的连接。

  • Interval:设置心跳包发送的间隔时长。
  • Timeout:设置发送心跳包的反馈的超时时间。

# 17.1.7. HTTP2Options

  默认情况下未启用 HTTP/2 协议,它使用 HTTP 1.1 来处理 HTTP 请求。如果您想在客户端支持的情况下使用 HTTP/2 协议,则启用此属性。

  • Enabled:如果设置为 true,则支持 HTTP/2 协议。如果客户端不支持 HTTP/2,将使用 HTTP 1.1 作为后备。
  • Settings:指定要发送至HTTP/2 服务器的头值。
    • EnablePush:默认选项为 True,设置此项可用于避免服务器向客户端推送内容。
    • HeaderTableSize:允许发送方通知远程端点用于解码头块的头压缩表的最大大小,以八位字节为单位。编码器可以通过使用特定于标头块内的标头压缩格式的信令来选择等于或小于此值的任何大小。初始值为 4,096 个八位字节。
    • InitialWindowSize:设置发送者的初始窗口大小(以八位字节为单位),用于流级流量控制。初始值为 65,535 个字节。此设置影响所有流的窗口大小。
    • MaxConcurrentStreams:设置发送方允许的最大并发流数。这个限制是有方向的:它适用于发送者允许接收者创建的流的数量。默认未设置限制。
    • MaxFrameSize:表示发送方愿意接收的最大帧有效载荷的大小,以八位字节为单位。初始值为 16,384 个八位字节。
    • MaxHeaderListSize:设置通知对等方发送方准备接受的标头列表的最大大小(以八位字节为单位)。该值基于头字段的未压缩大小,包括以八位字节为单位的名称和值的长度以及每个标头字段的 32 个八位字节的开销。

# 17.1.8. IOHandlerOptions

  默认使用普通的 Indy Handler(每个连接都运行在自己的线程中)。

  • iohDefault:默认indy IOHandler,每个新连接创建一个新线程。
  • iohIOCP:仅适用于 windows 并且需要自定义 indy 版本,线程池处理所有连接。

# 17.1.9. LoadBalancer

  连接到负载均衡服务器以广播消息并发送有关服务器的信息。

  • AutoRegisterBindings:如果启用,则自动将服务器绑定发送到负载平衡器服务器。
  • AutoRestart:负载平衡器服务器连接断开并尝试重新连接后等待的时间(以秒为单位); 零表示不重新启动(默认情况下);
  • Bindings:可以设置发送到负载均衡服务器的手动绑定,例如:WS://127.0.0.1:80或者 WSS://127.0.0.2:8888。
  • Enabled:如果启用,它将连接到负载均衡服务器。
  • Guid:用于对负载平衡服务器进行标识。
  • Host:负载均衡服务器主机的地址。
  • Port:负载均衡服务器的端口。

# 17.1.10. LogFile

  在Debug模式下使用,用于输出调试日志。

  • Enabled:设置是否启用日志文件。
  • FileName:设置显示的日志文本名称。

# 17.1.11. MaxConnections

  设置允许的最大连接数(如果设置为零,则表示为无限制)。

# 17.1.12. NotifyEvents

  设置WebSocket事件的通知方式。

  • neAsynchronous:这是默认模式,在异步模式下通知线程事件,将事件添加到与主线程异步同步的队列中。
  • neSynchronous:如果选择该模式,在同步模式下通知线程事件,需要与主线程同步来通知这些事件。
  • nwNoSync:不与主线程同步,如果需要访问非线程安全的控件,则需要实现自己的同步方法。

# 17.1.13. Options

  设置在连接阶段使用自定义的请求头。

  • CleanDisconnect:如果启用,每次客户端与服务器断开连接时,首先发送消息通知服务器连接将被关闭。

  • FragmentedMessages:允许处理碎片消息

    • frgOnlyBuffer:消息被缓冲,直到收到所有数据,它引发 OnBinary 或 OnMessage 事件(默认选项)
    • frgOnlyFragmented:每次收到新的分片时,都会引发 OnFragmented 事件。
    • frgAll:每次接收到一个新的分片时,它会引发 OnFragmented 事件,其中包含从第一个数据包收到的所有数据。 当收到所有数据时,它会引发 OnBinary 或 OnMessage 事件。
  • HTMLFiles:如果此项启用,可允许请求浏览器测试功能。地址格式为 http://host:port/sgcWebSockets.html (opens new window)。

  • JavaScriptFiles:如果此项启用,可允许调用内建的JavaScript库。

  • RaiseDisconnectExceptions:默认启用,每次因协议错误断开连接时引发异常。

  • ReadTimeOut:检查socket连接是否有数据的时间,默认10毫秒。

  • ValidateUTF8:如果启用,则验证消息是否包含 UTF8 有效字符,默认情况下禁用。

  • WriteTimeOut:向其他对等方发送数据的最大时间(以毫秒为单位),默认为 0(仅适用于 Windows 操作系统)。

# 17.1.14. Port

  设置监听的端口号。

# 17.1.15. QueueOptions

  该属性允许在内部队列中排队消息(而不是直接发送)并在连接线程的上下文中发送消息,这可以防止多个线程尝试发送消息时发生锁定。 对于每种消息类型:可以配置文本(Text)、二进制(Binary)或 Ping 队列,默认情况下设置的值是 qmNone,这意味着消息不排队。 其他类型,表示不同的队列级别,它们之间的区别只是处理的顺序(首先处理 qmLevel1,然后是 qmLevel2,最后是 qmLevel3)。

示例:如果Text和Binary消息的属性设置为 qmLevel2 并且 Ping 设置为 qmLevel1。 客户端将首先处理 Ping 消息(因此,如果它们同时排队,则 Ping 消息比 Text 或 Binary 先发送),然后在同一队列中处理 Text 和 Binary 消息。

# 17.1.16. SecurityOptions

  设置安全相关的选项。

  • OriginsAllowed:在此处定义允许哪些来源(默认情况下接受来自所有来源的连接),如果来源不在列表中,则关闭连接。比如:
    • 允许IP 127.0.0.1 和端口 5555 的所有连接。OriginsAllowed = "http://127.0.0.1:5555"
    • 允IP 127.0.0.1 和所有端口的所有连接。 OriginsAllowed = "http://127.0.0.1:*"
    • 允许来自任何 IP 的所有连接。 OriginsAllowed = ""

# 17.1.17. SSL

  是否启用SSL安全连接。

# 17.1.18. SSLOptions

  用于设置SSL的属性:证书,文件名称,密码等。

  • CertFile:证书文件的路径。
  • KeyFile:证书密钥文件的路径。
  • RootCertFile:根证书文件的路径。
  • Password:如果证书使用密码保护,请在此处设置。
  • VerifyCertificate:如果必须验证证书,则启用此属性。
  • VerifyDepth:是一个整数属性,表示对 X.509 证书执行验证时允许的最大链接数。
  • Version:默认情况下协商所有可能的 TLS 版本,从新到低。可以选择特定的 TLS 版本。
    • tlsUndefined:这是默认值,客户端将尝试协商所有可能的 TLS 版本(从最新到最旧),直到连接成功。
    • tls1_0:实现 TLS 1.0
    • tls1_1:实现 TLS 1.1
    • tls1_2:实现 TLS 1.2
    • tls1_3:实现 TLS 1.3
  • OpenSSL_Options:openSSL 库的配置。
    • APIVersion:允许定义将使用哪个 OpenSSL API。
      • oslAPI_1_0:使用 API 1.0 OpenSSL,Indy 最新支持
      • oslAPI_1_1:使用 API 1.1 OpenSSL,需要我们的自定义 Indy 库并允许使用 OpenSSL 1.1.1 库(支持 TLS 1.3)。
      • oslAPI_3_0:使用 API 3.0 OpenSSL,需要我们的自定义 Indy 库并允许使用 OpenSSL 3.0.0 库(支持 TLS 1.3)。
  • ECDHE:如果启用,则使用 ECDHE 而不是 RSA 作为密钥交换。 如果您使用 OpenSSL 1.0.2,建议启用 ECDHE。

# 17.1.19. WatchDog

  当此项启用时,如果检测到连接意外断开,则会自动尝试进行重新连接。

  • Interval:检测的时间间隔。
  • Attempt:尝试的最大次数,如果设置为0,表示会进行无限次数的连接。

# 17.2. 事件

事件名称 触发条件
OnConnect 每次建立 WebSocket 连接时,都会触发此事件
OnDisConnect 每次断开 WebSocket 连接时,都会触发此事件
OnError 每次出现 WebSocket 错误(如格式错误的握手)时,都会触发此事件
OnMessage 每次客户端发送文本消息并被服务器接收时,都会触发此事件
OnBinaryExt 每次客户端发送二进制消息并被服务器接收时,都会触发此事件
OnHandShake 在服务器端评估握手后触发此事件
OnException 每次发生异常时,都会触发此事件
OnAuthentication 如果启用了身份验证,则触发此事件。您可以检查客户端传递的用户和密码,并启用/禁用 Authenticated Variable
OnUnknownProtocol 如果未检测到 WebSocket 协议(例如,因为客户端使用纯 TCP 协议),在这种情况下可以接受或拒绝连接
OnStartup 在服务器启动后触发事件
OnShutdown 在服务器停止后触发
OnTCPConnect 公共事件,在 TCP 连接之后和 Websocket 握手之前调用。当您的服务器接受纯 TCP 连接时很有用(因为 OnConnect 事件仅在客户端发送第一条消息后触发)
OnBeforeHeartBeat 如果启用了 HeartBeat,则允许实现自定义 HeartBeat 设置 Handled 参数为 True(这意味着不会发送标准 websocket ping)

# 17.3. 方法

# 17.3.1. WriteString

procedure WriteString(aGuid,aText: String);
1

  向客户端发送文本消息。

FThis.WebSocketServer1.WriteString(Guid,'{"action":"login","sid":"smart"}');
1

# 17.3.2. WriteStream

procedure WriteString(aGuid: String; aStream: TStream);
1

  向服务器发送二进制内容消息。

数据感知控件
仪表采集控件

← 数据感知控件 仪表采集控件→

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