单元地址空间

一个单元在 Process.模型.单元 下面发布的每一个点位、它的类型和含义、哪些点位是可写的命令,以及一个 Logic 脚本可以从中读到什么。

以 Markdown 查看

每个单元都把自己的运行数据当作普通的 Logic 地址发布在 Process.<Model>.<Unit> 下面,因此仪表画面、Logic 表达式、内置的 OPC UA 服务器和代理都不用额外接线就够得着它。这一支在 Logic 页面上“来自其他页面”下面浏览(见来自其他页面),在每一个地址选择器里也能浏览。重命名一个模型、单元、通道或元数据字段,会替换掉相应的地址,并改写活着的文字引用;已记录的文件保留写下去时冻结的那些名称。各段是净化过的名称:模型“Climatic chamber”里一个名叫“Unit 1”的单元,寻址写作 Process.Climatic_chamber.Unit_1

分支 暴露什么 可写
Channels.<Channel> 每条通道当前绑定到的实时值,按通道声明的类型定型。 可写的通道(只写或读写角色)是经出口可写的点位;被某次运行记录占着的信号源会拒绝其他每一个写入者。
Procedure.<point> 运行状态,每个点位一个标量(见下表)。 否。
Commands.<command> StartHoldResumeStopAbortComment 是:写入即派发(见下表)。
Next.<point> 下一次启动要消耗的那个预选区。 只有手工填写的元数据字段可写。
Productivity.Today.<branch>Productivity.Rolling.<branch> 这个单元在各个周期上的产量统计。 否。

通道

一个通道点位读的是这个单元绑定背后的那个值,投影成通道的数据类型;通道没有绑定、或者它的信号源不可用时,它读作一个空档。在 Logic 脚本里,这个点位是所绑定点位或变量的一个只读定型投影,绝不是那个点位本身:ValueValueObjectValueRawValueScaledValueCalibratedValueLimitedValueRounded,转换函数 ValueToBool()ValueToInteger()ValueToReal()ValueToString()ValueToDateTime(),质量 State(),时间戳 SourceTimeStamp()ApplicationTimeStamp(),以及 Refresh()NameEngineeringUnit。数值转换链上的那些成员是为点位绑定作答的;变量绑定作答的是值和应用时间戳。

Procedure

每一个点位都从活着的那次运行记录算出来,读起来质量良好;没什么可说的点位读作一个空档。

点位 类型 含义
Status 文本 单元已被预留而运行记录还不存在时是 Preparing,没有东西占着它时是 Idle,其余时候就是运行状态:RunningHeldSavingCompletedAbortedFailed
Running 布尔 严格对应运行中这个状态;准备、已暂停、保存中和收尾期间它绝不为真。
Busy 布尔 整段被占用的时间:预留、运行中、已暂停、保存中,以及运行记录文件最后关掉。
Verdict 文本 OKNOKIndeterminateNone。判过的证据在运行记录结束之后仍然读得到,直到下一次运行记录开始。
Mode 文本 活着那次运行记录的模式,InstantTemporalControlled;一条单条命令(快照、立即判定)也会报。空闲时是空档。
ActiveProcedure 文本 活着那次运行记录的名称(“流程 · 单元”)。空闲时是空档。
SegmentIndex 整数 时序曲线当前所在的曲线段,从 0 开始。没有曲线时是空档。
CycleIndex 整数 当前的循环,从 0 开始。空闲时是空档。
CycleCount 整数 这次运行记录的总循环数(单趟为 1)。空闲时是空档。
Cycle 文本 循环运行记录写作“2 / 10”;运行记录不循环时是一个空档,这样绑定上去的数值显示写的是空档标记,而不是误导人的一趟。
FailedCycles 整数 到目前为止判为不合格的循环数。运行记录不循环时是空档。
SamplesEvaluatedSamplesOutSamplesUnavailableSamplesInvalid 整数 判定的证据计数器,由判定引擎原子地更新。没有判过的证据时是空档。
Elapsed 小数 从运行记录开始到现在的秒数。空闲时是空档。
StartedAt 日期和时间 活着那次运行记录是什么时候开始的。空闲时是空档。

Commands

读一个命令点位,回答的是“现在能不能执行”,因此绑定上去的按钮会自己禁用;写它则通过运行控制台派发这条命令,按写入界面的来源记进日志,并连同按下的那个人的身份一起记录下来。命令是一次服务调用,绝不是一次排队的点位写入。

点位 什么时候读作真 写入
Start 单元不忙、运行时接受操作、联锁正常,而且已经预选了一个流程。 用预选的元数据启动预选的流程。
Hold 有一次运行记录在运行中,而且它的流程是时序的。 冻结这个窗口。
Resume 有一次运行记录处于已暂停,而且联锁正常。 解除暂停。
Stop 有一次运行记录在运行中。 以已完成结束这次运行记录。
Abort 有一次运行记录在运行中或者已暂停。 以已中止结束这次运行记录。
Comment 永不:这个点位没有读数。 把写进去的文字作为一条备注追加到活着的那次运行记录上;单元空闲时,则作为一条事后补记加到这个单元最近一次已结束的运行记录上。一个一次运行记录都没有的单元会拒绝(“这个单元没有可以写备注的运行记录。”),空文字也一样被拒绝。

工作站拒绝写入期间(运行时已停止),每一条命令都读作假。

Next

点位 类型 含义
Next.Procedure 文本 预选流程的名称。在这里只读:预选是在运行记录卡片上,或者用流程选择器组件做的。
Next.<Field> 文本 预选的流程提示填写的每一个元数据字段一个点位;单元重新预选时这一支会重新成形,而属于另一个流程的字段读作空档。手工填写的字段(文本或数字)是一个可写的预选点位,绑定到它的输入组件写的就是它。流水号字段是对计数器此刻会拼出的那个标识的只读预测;读它绝不会把它占下来。

预选是全工作站范围的、放在内存里的、临时的:应用启动时它归零,而启动是把它消耗掉,不是把它清空。

Productivity

两个周期,Today(从本地零点起)和 Rolling(模型或单元上声明的那个窗口),各带三个分支(见产量):

分支 点位 类型
Summary ProductivityPercentYieldPercentTypicalElapsedSeconds 小数;分母还不存在时是空档。
Summary FinalizedOKNOKIndeterminateUnclassifiedAbortedFailed 整数计数。
Outputs.<key> QuantityRatePerHour 小数;每个命名的产量项一个键,模型一个产量项都没声明时,则每个计入产出的流程一个键。
Procedures.<key> QuantityRatePerHour,以及上面那些汇总点位 同上,按计入产出的流程分。

这些键是从稳定的 id 和冻结下来的产出单位推出来的,不是从显示名称推出来的,因此重命名绝不会让一个表达式挪窝。每一个点位都是只读的,而这份统计是从历史索引读出来的,绝不从运行记录文件读。

一个脚本可以做什么

Logic 的变量、报警和动作脚本可以这里的一切:通道数值、运行状态、命令就绪状态、预选的值和产量点位。它们不能派发命令、不能写预选字段,也不能追加备注;那些写入属于明确的命令消费者:那些操作面板、仪表画面上的按钮、输入框和流程选择器、单元的自动化,以及那些代理工具。