更改 Communicator 和插件设置

在某些情况下,您可能需要使用特定设置(例如,端口设置和日志等级)启动 Communicator,或需要在启动期间为插件定义特定设置。以下部分概述了可用的选项和各种设置方法。

基本上,可通过三种方法定义所需的设置,每种方法都有其优势。

Communicator 的默认 .ini 文件 (Communicator.ini) 中定义设置

默认情况下,Communicator 使用默认 Communicator.ini 文件中定义的设置。如果想要更改所有会话的设置,但不想在每次启动 Communicator 时进行定义,则在 Communicator.ini 文件中定义它们将非常方便。另请参阅 Communicator .ini 文件主题,了解更多信息。

在单独的 .ini 文件中定义设置

如果需要同时使用多个 Communicator 实例,则可以在每个额外实例自己的 .ini 文件中定义设置。Communicator 随后可通过命令行使用相应的 .ini 文件启动。要使用默认 Communicator.ini 以外的附带特定 .ini 文件启动 Communicator,请使用以下命令。

复制
merlic_communicator.exe --ini <FILE>
在启动期间通过命令行定义设置

如果仅想在当前会话使用特定设置,可以通过命令行启动 Communicator 并使用相应的命令行选项定义设置。

定义端口

用于“事件”和命令的端口

默认情况下,MERLIC 将端口 21590 用于“事件”,并将端口 21591 用于命令(例如“操作”)。如果想要使用其他端口,可以在 .ini 文件或命令行中进行设置。如果要在同一系统上运行多个相互独立的 CommunicatorMERLIC RTE 实例,则必须定义不同的端口集。

CommunicatorMERLIC RTE 的端口必须匹配才能建立连接。如果指定了 Communicator 的端口,则必须确保为 MERLIC RTE 设置对应的端口。

在 .ini 文件中定义端口

要更轻松地设置在同一计算机上运行的多个 MERLIC Communicator 实例,还可以在 .ini 文件中指定端口。在 [Communicator]: 部分中定义端口

复制
[Communicator]
EventPort=<event port>
CommandPort=<command port>

如果在 Communicator 的默认 .ini 文件 (Communicator.ini) 中定义了端口,现在可通过 Windows 开始菜单启动 Communicator,且新设置会自动应用。如果在其他 .ini 文件中定义端口,则必须在命令行中启动 Communicator 并指定相应的 .ini 文件,如在单独的 .ini 文件中定义设置部分所述。

通过命令行定义端口

如果仅想为 Communicator 的当前会话使用特定端口,则可以在启动 Communicator 时使用以下选项在命令行中定义端口。

命令行选项

默认

描述

--event_port

21590

定义用于“事件”的端口。

--command_port

21591

定义用于命令(例如“操作”)的端口。

复制
merlic_communicator.exe --plugin <NAME> --event_port <PORT1> --command_port <PORT2>

每个标记后必须跟一个 1 到 65535 之间的端口号。在每种情况下,事件端口 21590 和命令端口 21591 均为默认值。

用于插件远程配置的端口

默认情况下,当连接到远程系统上的 MERLIC RTE Setup 以配置 Communicator 插件时,MERLIC 会将临时端口用于 Communicator 插件的配置服务。如果要使用固定端口,可以使用命令行选项“--plugin_config_ports”或 .ini 文件属性“PluginConfigurationPorts”来定义端口。

您必须指定三个端口以确保远程配置正常工作,例如“10123;10124;10125”。您可以使用 1024 到 65535 范围内的端口。如果定义固定端口,则必须确保满足以下条件:

  • 指定的端口必须可用。否则,Communicator 将不会启动,并且无法访问 MERLIC RTE Setup 中的配置。
  • 指定的端口不应与“MERLIC5.ini”文件的 [General] 部分中为“MERLIC5.ini”属性定义的端口重叠。否则,配置服务无法同时工作。
在 .ini 文件中定义端口

要通过 .ini 文件指定端口,可打开要使用的 .ini 文件并将端口添加到 [Communicator] 部分。

复制
PluginConfigurationPorts=<PORT1;PORT2;PORT3>

如果在 MERLIC 的默认 .ini 文件(即 MERLIC5.ini)中指定了端口设置,则在启动 Communicator 时会自动使用相应端口。如果在另一个 .ini 文件中定义了端口,则必须使用相应的 .ini 文件启动 Communicator(通过命令行启动 Communicator)并指定相应的 .ini 文件,如在单独的 .ini 文件中定义设置部分所述。

通过命令行定义端口

使用命令行选项“--plugin_config_ports”指定端口。

复制
merlic_communicator.exe --plugin_config_ports <PORT1;PORT2;PORT3>

如果使用命令行选项“--plugin_config_ports”或 .ini 文件中的配置属性“PluginConfigurationPorts”定义固定端口,则只能启动 Communicator 的一个实例。

定义日志等级

Communicator 的日志等级和 Communicator 可以单独设置。默认情况下,插件使用与 Communicator 相同的日志等级。如果要为插件使用不同的日志等级,可以在启动插件时进行定义。Communicator 的默认日志等级为“info”。因而,此全局日志等级也默认用于 Communicator 插件。

在 .ini 文件中定义全局日志等级

要在 .ini 文件中设置 Communicator 的全局日志等级,请将所需的日志等级添加到 [Logging] 部分,如下所示:

复制
[Logging]
Threshold=<LOG_LEVEL>

如果在 Communicator 的默认 .ini 文件 (Communicator.ini) 中定义了日志等级,现在可通过 Windows 开始菜单启动 Communicator,且新设置会自动应用。如果在其他 .ini 文件中定义日志等级,则必须在命令行中启动 Communicator 并指定相应的 .ini 文件,如在单独的 .ini 文件中定义设置部分所述。

通过命令行定义全局日志等级

如果仅为当前会话定义 Communicator 和插件的全局日志等级,可以从命令行启动 Communicator 并使用命令行选项“--log-level”或“-d”直接在可执行文件后面指定日志等级。在以下示例中,全局日志等级设置为“error”。

复制
merlic_communicator.exe --log-level error
定义插件特定的日志等级

要为插件定义不同于全局设置的单独日志等级,必须从命令行启动插件,并使用命令行选项“--log-level”或“-d”在插件名称后面指定日志等级。在以下示例中,全局日志等级设置为“debug”。而“event-logger”插件的日志等级设置为“error”。“action-sender”插件使用了全局日志等级“debug”,因为未为该插件指定日志等级。

复制
merlic_communicator.exe --log-level debug --plugin event-logger d:error --plugin action-sender
MERLIC RTE Setup 中使用日志等级“debug”启动插件

如果想要为插件使用日志等级“debug”,可以使用 MERLIC RTE Setup 的图形用户界面。通过 MERLIC RTE Setup 的“通讯”选项卡中的“添加插件实例”按钮添加新插件实例时,可以在选择插件的同时按 ALT 键。插件随后将使用日志等级“debug”启动。

定义插件的访问等级

默认情况下,插件的访问等级与实现插件时在 MVInfo 函数中设置的功能相对应。如果已为插件设置功能 eMVCapabilities_MonitorAndControl(“monitor and control”),则可以将插件的访问等级限制为“monitor”或“control”。为此,必须在命令行中使用命令行选项“a”启动插件。在以下示例中,OPC UA server 插件的访问等级设置为“control”。

复制
merlic_communicator.exe --plugin MQTT a:monitor

更改插件目录

插件目录代表所有相关插件的关联位置,即,如果在命令行选项“--plugin”中只给出了插件名称而没有给出其绝对路径,则该插件应存储在插件目录中。

默认情况下,插件目录是 MERLIC Communicator 的可执行文件所在的目录,例如在“%PROGRAMFILES%\MVTec\MERLIC-5.6”中。您既可以在 .ini 文件中更改插件目录或定义多个插件目录,也可以通过命令行参数“--plugin_dir”进行更改,如以下示例所示。

在 .ini 文件中更改插件目录

要在 .ini 文件中设置插件目录,可将位置路径添加到 [Communicator],如以下示例所示:

复制
[Communicator]
PluginDir=C:/communicator/plugins

如果在 Communicator 的默认 .ini 文件 (Communicator.ini) 中定义了目录,现在可通过 Windows 开始菜单启动 Communicator,且新设置会自动应用。如果在其他 .ini 文件中定义目录,则必须在命令行中启动 Communicator 并指定相应的 .ini 文件,如在单独的 .ini 文件中定义设置部分所述。

通过命令行更改插件目录

可以使用命令行参数“--plugin_dir”更改插件目录,如以下示例所示。

复制
merlic_communicator.exe --plugin_dir C:/communicator/plugins
定义多个插件目录

您还可以定义多个插件目录,例如,如果希望将插件库保留在相应的构建输出目录中,而不是将文件复制到另一个插件目录中。这样,您可以在同一个 Communicator 实例中使用来自不同目录的 Communicator 插件。将在所有指定的插件目录中搜索,以查找用于 插件的具有“pmV”前缀的 Communicator 插件库。在 MERLIC RTE Setup 中,您将获得在指定目录中找到的所有 Communicator 插件的列表。

要定义其他插件目录,可以将各自的路径指定为以分号分隔的列表。

以下示例显示如何在 .ini 文件中定义多个插件目录。在这个示例配置中,在目录“C:/communicator/plugins”以及默认插件目录中搜索 Communicator 插件。您还可以通过命令行使用以分号分隔的列表指定多个插件目录。

复制
[Communicator]
PluginDir=C:/communicator/plugins;C:/Program Files/MVTec/MERLIC 5/bin/x64-win64

要在同一 Communicator 实例中使用由 MERLIC(如 MQTT)提供的一个 Communicator 插件和您自己的一个 Communicator 插件,除了存储您的 Communicator 插件的目录(如相应的构建输出目录)之外,您还必须指定默认插件目录。

如果具有相同名称的插件出现在两个或多个指定的插件目录中,它只列出一次。将此插件添加到 MERLIC RTE Setup 时,将使用在插件目录列表中最先出现的目录中的版本。

更改插件的配置目录

默认配置目录是系统的标准配置位置,例如,在 Windows 上为“%AppData%/MVTec/Communicator/conf”。

它包含用于插件的 JSON 配置文件。如果预期位置不存在配置目录,则在启动 Communicator 时将自动创建该目录。您可以选择不同的位置,例如,在对默认配置目录没有写入访问权限的情况下。

配置目录可以在 .ini 文件中更改,也可以通过命令行参数“--config_dir”进行更改,如以下示例所示。

在 .ini 文件中更改配置目录

要在 .ini 文件中设置配置目录,可将位置路径添加到 [Communicator],如以下示例所示:

复制
[Communicator]
ConfigDir=D:/communicator/plugin_configuration
通过命令行更改配置目录

如果仅为当前会话更改配置目录,可以在命令行中启动 Communicator,并使用命令行选项“--config_dir”指定所需的位置,如以下示例所示。

复制
merlic_communicator.exe --config_dir D:/communicator/plugin_configurations

如果在 Communicator 的默认 .ini 文件 (Communicator.ini) 中定义了目录,现在可通过 Windows 开始菜单启动 Communicator,且新设置会自动应用。如果在其他 .ini 文件中定义目录,则必须在命令行中启动 Communicator 并指定相应的 .ini 文件,如在单独的 .ini 文件中定义设置部分所述。

有关配置创建的更多信息,请参阅 Communicator API 参考文档中的主题Life Cycle of a Plug-in Instance

Communicator 插件可由用户配置,但我们建议仅在必要时手动调整配置文件,因为在 MVExpose 函数期间信息可能会被覆盖。