# 来自其他页面

> Logic 那一栏所显示的 System、Server、Connector 和 Process 四个根、每一个固定点位及其含义、只读的点位面板和树枝面板，以及点名每个根由哪个页面编辑的那条通知。

Logic 那一栏的第二个小标题**来自其他页面**下面，放着这个页面只显示的那四个根：**System**、**Server**、**Connector** 和 **Process**，就是这个顺序。它们的点位对每一条表达式、每一段脚本、每一个仪表画面绑定和每一个代理工具都可读，但它们下面的东西一样都不在这里创建、编辑或删除。选中它们中任何一行，本该是命令的位置上会出现一行通知，并配一个打开拥有它那个页面的按钮。

## “由别处编辑”的通知 {#the-edited-elsewhere-notice}

| 根 | 命令栏上带的那一行 | 按钮 | 角色拥有什么时才画出来 |
| --- | --- | --- | --- |
| Connector | 这里只读：驱动、设备和点位在 Connector 页面上编辑。 | “打开 Connector”，通往 [Connector](connector) 页面 | 查看 Connector |
| Process | 这里只读：模型、单元和通道在 Process 页面上编辑。 | “打开 Process”，通往 [Process](process) 页面 | 查看模型、运行流程或查看历史 |
| Server | 这里只读：OPC UA 服务器在 Connector 页面配置。 | “打开 Connector”，落在 [OPC UA 服务器](connector-opcua-server)那一行 | 查看 Connector |
| System | 只读：应用自己发布的诊断信息，任何地方都不编辑。 | 无 | |

这一行对这个根下面每一个节点都显示，不管多深；而按钮只在这个窗口的角色打得开那个去处时才显示，所以一个只能查看的人读到的是那句话，而不是一扇答复他“不行”的门。以拥有那个权限的角色登录进来，按钮就跟着来了。

## System {#system}

| 地址 | 类型 | 读到什么 |
| --- | --- | --- |
| `System.Now` | 日期和时间 | 当前时刻。在一条表达式或一段脚本里，它是这次求值的时刻，所以一次运行里的每一处引用读到的是同一个时间。 |
| `System.StartTime` | 日期和时间 | 应用进程启动的时刻。 |
| `System.Uptime` | 小数 | 应用启动以来的秒数。 |
| `System.Version` | 文本 | 应用版本。 |

这四个点位永远是良好。

## Server {#server}

| 地址 | 类型 | 读到什么 |
| --- | --- | --- |
| `Server.Running` | 布尔值 | 内置 OPC UA 服务器起来了没有。永远是良好。 |
| `Server.StartTime` | 日期和时间 | 服务器启动的时刻。它启动之前是一个不可用的空档。 |
| `Server.Uptime` | 小数 | 服务器启动以来的秒数。它启动之前是一个不可用的空档。 |
| `Server.SessionCount` | 整数 | 已连接的 OPC UA 会话数。服务器不在时是不可用。 |

同样这几个数字也显示在服务器的[状态](connector-opcua-server)那一节上。

## Connector {#connector}

`Connector` 根画的是 [Connector](connector) 页面所配置的那棵实时树：每一种驱动一个文件夹（`Simulated`、`ModbusTcp`、……），然后是设备归档所在的那些文件夹，然后是设备，再然后是它们的点位。只有已启用、并且点位在 Connector 里落地了的设备才出现；一台已禁用的设备，以及一台没有落地点位的设备，连同它们的地址一起缺席。一个点位的地址就是它的别名，`Connector.<Driver>.<Folders…>.<Device>.<Tag>`，每一段都规整过（见[设备文件夹](connector-folders)）；串行线路和 MQTT Broker 都不加一层。驱动和文件夹带文件夹标记，设备带设备标记，点位带它所发布数值类别的标记（布尔、数值、文本、日期）。在“浏览…”选择器里展开一个点位，会列出它的可读面；栏里到点位就停下，选中它会打开点位面板。

## Process {#process}

`Process` 根把每一个模型画成一个文件夹，把它的单元按顺序画成文件夹，每个单元下面再放六个固定的文件夹：

| 文件夹 | 点位 | 类型 |
| --- | --- | --- |
| Channels | 这个模型的每一个通道各一个点位，通过这个单元的绑定来读；绑到点位上的通道提供点位那套面，绑到变量上的提供变量那套面，没有绑定的什么都不提供。 | 这个通道的数据类型 |
| Procedure | `Status`、`Running`、`Busy`、`Verdict`、`Mode`、`ActiveProcedure`、`SegmentIndex`、`CycleIndex`、`CycleCount`、`Cycle`、`FailedCycles`、`SamplesEvaluated`、`SamplesOut`、`SamplesUnavailable`、`SamplesInvalid`、`Elapsed`、`StartedAt`。 | 按各自名字所示，是文本、布尔值、整数、小数或者日期和时间 |
| LastRun | 这个单元最近一次完成的运行记录：`RunId`、`Procedure`、`Status`、`Verdict`、`StartedAt`、`FinishedAt`、`Elapsed`、`CycleCount`、`FailedCycles`、`Metadata`（每个元数据字段一个点位）和 `Evaluations`（每项评估一个文件夹，其下每条判据一个，各带 `Outcome`、`Passed`、`Value`、`MinValue`、`MaxValue`、`Limits`、`WorstExcursion` 和 `FailedCycles`）。在这个单元有一次运行结束之前，是空档，质量不可用。 | 按各自名字所示，是文本、布尔值、整数、小数或者日期和时间 |
| Productivity | `Today` 和 `Rolling`，各带 `Summary`（`ProductivityPercent`、`YieldPercent`、`TypicalElapsedSeconds`、`Finalized`、`OK`、`NOK`、`Indeterminate`、`Unclassified`、`Aborted`、`Failed`）、`Outputs`（每一个产出输出一个文件夹，带 `Quantity` 和 `RatePerHour`）以及 `Procedures`（每一个开了产量统计的流程一个文件夹，带 `Quantity`、`RatePerHour` 和那些汇总点位）。 | 速率、百分比和时长是小数；计数是整数 |
| Commands | `Start`、`Hold`、`Resume`、`Stop`、`Abort`（每一个读的是这条命令此刻能不能执行）以及 `Comment`（没有读数）。 | 布尔值；Comment 是文本 |
| Next | `Procedure`（预选流程的名字）以及预选流程每一个元数据字段各一个点位；换一个流程预选之后这根树枝会重排，而一个序列字段会预告它的下一个值。 | 文本 |

每一个读数是什么意思，在[单元的地址空间](process-addresses)里讲。产量类点位只有在它自己的值存在时才是良好：一个还没有任何完成量的数量是一个真正的零，而一个没有占用时间的速率或者一个没有参照的百分比是一个不可用的空档。命令类点位在哪里都是只读的：仪表画面上的[按钮](component-button)下发命令，并读这个点位来决定要不要把自己置灰；脚本去调它会在校验时被拒绝。Logic 里写不了任何 Process 点位：配方、预选和备注属于[运行界面](process-runs)。

## 点位面板 {#the-point-panel}

在这四个根中任何一个下面选中一个点位（一个诊断值、一个点位、一个通道、一个运行状态或产量点位），会打开一个只读面板，标题栏是这个点位的标记和名称，加上那一行“地址空间发布的一个读数：它此刻保存着什么，以及表达式或脚本用来称呼它的那个地址。”

| 字段 | 显示什么 |
| --- | --- |
| 地址 | 带根的地址，放在一个可以选中并复制的只读文本框里。 |
| 数值 | 当前的读数，大字；地址不再解析得出来时写“?”；空档写一道短横。 |
| 质量 | 良好或不可用。 |
| 更新时间 | 对点位，是它的应用时间戳（没有时用源时间戳）；对变量，是它上一次被写入或求值的时刻；对算出来的点位，就是现在。 |

这些读数每秒刷新两次。下面写着：“在表达式或脚本里使用这个地址（自动补全，或者用“浏览…”）。”这个面板没有任何命令：这里什么都写不了一个点位（要写就到[点位的页面](connector-tags)上写，或者从脚本里、从一个仪表画面控件里写），除了让你把文字选中之外也不会替你复制什么。

## 树枝面板 {#the-branch-panel}

选中一个驱动、一个文件夹、一台设备、一个模型、一个单元或者那五个固定文件夹之一，会打开树枝面板：这根树枝的标记和名称、以一枚胶囊显示的它的地址、那一行“地址空间的一支：它包含什么，以及每个点位此刻读到什么。”，还有一张列出它直接子项的表格，带名称、地址和数值（空档或不可用的读数写一道短横，某一行不再解析得出来时写“?”），每秒刷新两次。每一行末尾有一个**打开**，在栏里选中这一行所代表的东西，和树里它那一行一样；按一行只会把它突出显示。

## 这些节点为什么没有命令 {#why-these-nodes-have-no-verbs}

驱动、设备或点位是在 Connector 页面上配置的，它的那些字段、它的启用开关和它的删除都住在那里；模型、单元或通道在 Process 页面上；OPC UA 服务器同样在 Connector 页面，在“服务器”文件夹里；应用的诊断值哪里都不配置。筛选这一栏、展开、折叠和复制一个地址，是这些行接受的全部手势，右键点它们不会打开任何菜单。
