协议

模拟

qianmoQqianmoQ· 更新于 2026-10-01· 阅读 5 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

模拟驱动在客户端进程中维护自身状态,不与任何真实设备通信。它的存在是为了让 PLC4X 的功能在没有可连接的 PLC 的情况下也能被测试和演示;在学习 PLC4X 时,大多数人最先上手的就是这个驱动。

支持的操作

名称值描述
read支持下文列出的所有标准 IEC 61131 数据类型。
write支持下文列出的所有标准 IEC 61131 数据类型。
subscribe仅限 Java,且是真实实现而非轮询模拟:它直接支持 CYCLIC、CHANGE_OF_STATE 和 EVENT 订阅。Go 驱动的订阅者只是一个桩实现,并不会真正订阅。

连接字符串

模拟驱动完全在进程内运行,从不打开任何传输通道。连接字符串指定的是一个内存中的设备,而不是地址:

simulated:{device-name}

一个示例连接字符串如下:

simulated:foobar

每次调用都会创建一个全新的内存设备;通过某个连接写入的值不会在其关闭后保留,且不同连接之间不会共享设备。

连接字符串选项

名称

类型

默认值

必填

说明

名称

模拟 PLC4X 数据源

代码

simulated

Maven 依赖

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-driver-simulated</artifactId>
  <version>1.0.0</version>
</dependency>

支持的传输协议

配置选项:

标签地址

寻址功能已在 C、Go 和 Java 中实现。有关各实现具体支持的情况,请参阅 协议支持矩阵。

通用格式

模拟地址的格式如下:

{simulation-type}/{alias}:{data-type}[{array-size}]

如果省略数组大小部分,则默认大小为 1。如果省略数据类型部分,则默认为 STRING。

数组选择使用共享的表示法——单个索引、闭区间范围,以及可选的数组声明下界(置于类型之前)。参见数组寻址。

仿真类型

仿真设备支持 3 种不同的仿真类型

  • STATE - 为给定的别名在内存中保存一个值。该值可以读取或写入,但应仅与持久连接配合使用。一旦连接关闭,内存区域即被清空。
  • RANDOM - 每次读取都提供一个新的随机值。写入时会记录一条日志消息,并丢弃该值。
  • STDOUT - 读取时始终返回 null 值。写入时会记录一条日志消息,并丢弃该值。

别名

别名用于标识不同的字段地址。它们只能包含字母数字和句点(.)字符。为了可读性以及语言相关的技术限制,其长度应小于 256 个字符。

数据类型

支持以下数据类型:-

  • BOOL(布尔)
  • SINT(int 8)
  • USINT(uint 8)
  • BYTE(uint 8)
  • INT(int 16)
  • UINT(uint 16)
  • WORD(uint 16)
  • DINT(int 32)
  • UDINT(uint 32)
  • DWORD(uint 32)
  • LINT(int 64)
  • ULINT(uint 64)
  • LWORD(uint 64)
  • REAL(float)
  • LREAL(double)
  • CHAR(char)
  • WCHAR(2 字节字符)
  • STRING(254 字节)

示例

以下所有地址格式都是有效的:-

  • RANDOM/foo:INT
  • RANDOM/foo:UDINT
  • RANDOM/foo[0..7]:INT
  • RANDOM/test[0..1]:DINT
  • STATE/bar:DINT
  • STATE/foo:String
  • STDOUT/foo:BOOL

说明与提示

仿真驱动使用了与其他驱动大量相同的逻辑模板。在没有可连接设备的情况下,它是测试 PLC4X 功能的好方法。

评论

登录后参与评论

正在加载评论…