标题：公共信息模型
简介
公共信息模型（CIM）是一个抽象模型，描述电力企业的所有主要对象，特别是与电力运行有关的对象。通过提供一种用对象类和属性及他们之间关系来表示电力系统资源的标准方法，CIM方便了实现不同卖方独立开发的能量管理系统（EMS）应用的集成，多个独立开发的完整EMS系统之间的集成，以及EMS系统和其它涉及电力系统运行的 不同方面的系统，例如发电或配电系统之间的集成。这是通过定义一种基于CIM的公共语言（即语法和语义），使得这些应用或系统能够不依赖于信息的内部表示而访问公共数据和交换信息来实现的。
CIM中描述的对象类本质上是抽象的，可以用于各种应用。CIM的使用远远超出了它在EMS中应用的范围。应当把本标准理解为一种能够在任何领域实行集成的工具，只要该领域需要一种公共电力系统，使得应用和系统之间能够实现互操作和插入兼容性，而与任何具体实现无关。
由于完整的CIM的规模较大，所以将包含在CIM中的对象分成了几个逻辑包，每个逻辑包代表整个电力系统模型的某一部分。这些包的集合发展成为独立的标准。DL/T890的本部分规定了包的基本集合，提供了电力企业内部各应用共享的EMS信息的物理方面的逻辑视图。其它标准规定了某些特定应用所需的模型的特殊部分。
各个逻辑包的简介如下：
核心包（Core）：包含所有应用共享的核心的命名（Naming）、电力系统资（PowerSystemResource）、设备容量器（EquipmentContainer）和导电设备(ConductingEquipment)实体，以及这些实体的常见的组合。并不是所有的应用都需要所有的Core实体。这个包不依赖于任何其他的包，而其他包中的大部分都具有依赖于本包的关联和普遍化。
拓扑包(Topology)：这个包是Core包的扩展，它与Terminal类一起建立连接性(Connectivity)的模型，而连接性是设备怎样连接在一起的物理定义。另外，它还建立了拓扑 (Topology)的模型，拓扑是设备怎样通过闭合开关连接在一起的逻辑定义。拓扑的定义与其它的电气特性无关。
电线包(Wires)：这个包是Core和Topology包的扩展，它建立了输电(Transmission)和配电(Distribution)网络的电气特性的信息模型。这个包用于网络应用，例如状态估计(State Estimation)、潮流(Load Flow)及最优潮流(Optimal Power Flow)。
停运包 (Outage)：这个包是Core和Wires包的扩展，它建立了当前及计划网络结构的信息模型。这些实体在典型的网络应用中是可选的。
保护包 (Protection)：这个包是Core和Wires包的扩展，它建立了保护设备，例如继电器的信息模型。这些实体用于培训模拟和配电网故障定位应用。
量测包(Meas)：这个包包含描述各应用之间交换的动态测量数据的实体。
负荷模型包(LoadModel)：这个包以曲线及相关的曲线数据的形式为能量用户及系统负荷提供模型。这里还包括影响负荷的特殊情况，例如季节与日类型。这一信息由负荷预测(Load Forecasting)和负荷管理(Load Management)使用。
发电包(Generation)：这个包分成两个子包：Production包和GenerationDynamics包。
电力生产包(Production)：这个包提供了各种类型发电机的模型。它还建立了生产成本信息模型，用于发电机间进行经济需求分配及计算备用量大小。这一信息用于机组组合(Unit Commitment)、水力和火力发电机组的经济调度(Economic Dispatch)、负荷预测及自动发电控控制 (Automatic Generation Control)等应用。
发电动态包(GenerationDynamics)：这个包提供原动机，例如汽轮机和锅炉的模型，这些模型在模拟和培训应用中需要用到。这一信息用于动态培训仿真器(Dynamic Training Simulator)应用的机组建模。
域包(Domain)：Domain包是量与单位的数据字典，定义了可能被其他任何包中的任何类使用的属性的数据类型。此包包含原始数据类型的定义，包括量测的单位和允许的值。每一种数据类型包含一个值(value)属性和一个可选的量测单位(unit)，这个单位指定为一个被初始化为该量测单位文字描述的静态变量。枚举型数据的允许值在该属性的文档(documentation)中用UML约束句法在大括号({})内列出。字符串长度在文档中列出，并被指定为长度属性。
财务包(Financial)：财务包与结算和会计有关。这些类表达了参与正式和非正式协议的法律实体。
能量计划包(Energy Seheduling)：能量计划包提供了对公司之间的电力交易进行计划和考核的能力。它包括电力产生、消费、损失、输送、出售和采购的交易。这些类应用在电能的考核结算、发电容量、电能传输、辅助服务中。
备用包(Reservation)：备用包包含了用于电能交易计划、发电容量、电能传输、辅助服务中的信息。
SCADA包(SCADA)：SCADA包描述了用于数据采集(SCADA)和控制应用的模型信息，涉及到量测、PT、CT、RTU、扫描装置、通讯电路等设备，。控制应用支持对设备的控制操作，例如断开/合上断路器;数据采集应用从多个来源采集遥测数据，遥测实体的子类型有意遵照IEC61850标准的定义。SCADA包也支持报警的表达，但是不希望被其他应用使用。
CIM类和关系
每一个CIM包的类图展示了该包中的所有的类及它们的关系。在与其他包中的类存在关系时，这些类也展示出来，而且标以表明其所属的报的类别。
类与对象所建的模型正是电力系统中需要一种对多种EMS应用通用的方法来描绘的东西，一个类是对现实世界中发现的一种对象的表示，例如在EMS中需要表示为整个电力系统模型的一部分的变压器、发电机或负荷。其他类型的对象包括诸如EMS应用需要处理、分析与储存的计划与量测。这些对象需要一种通用的表示，以达到EMS—API标准的插入兼容和互操作的目的。在电力系统中具有唯一身份的一个具体对象则被建模成它所属类的一个实例。
还应该注意到，定义CIM是为了方便数据交换。正如本文档中定义的那样，CIM实体除了缺省的生成、删除、更新和读出外，没有其他行为。为了使CIM尽可能地通用，非常希望对具体实现于配置。一般来说，改变属性的值或域比改变类定义更为容易。这些原则暗示CIM应当避免定义类的太多的具体子类型。相反，CIM定义一些通用的类，由属性来给定类型名。因而应用可以根据需要使用这一信息去实例化具体的对象类型。应用可能需要其他信息去定义 有效类型与关系的集合。
类具有描述对象特性的属性。CIM中的每一个类包含描述和识别具体实例的属性。只有各个EMS应用共同感兴趣的那些属性才包括在的类的描述中。
每一个属性都具有一个类型，它识别该属性是哪一种类型的属性。典型的属性类型有整型、浮点型、布尔型、字符串型及枚举型，它们被称为原始类型。然而，许多其他类型也被定义为CIM规范的一部分。例如，补偿器（Compensator）有一个类型为Voltage的MaximumkV属性。数据类型的定义包含在Domain包中。
类之间的关系揭示了它们相互之间是怎样构造的。普遍化、简单关联、聚集。
普遍化
普遍化是一个叫普遍的类与一个较具体的类之间的一种关系。较具体的类只能包含在附加的信息。例如，一台电力变压器是电力系统资源的一种具体型。普遍化使具体的类可以从它上层的所有更普遍的类继承属性和关系。
简单关联：
简单关联是类之间的概念上的联系。每一个关联具有两个角色。每个角色表示了关联中的一种方向，表示目标类与源类有关系，角色给定为目标类的名称，具有或不具有动词短语。每一个角色也具有多样性/汇集性的属性，以确定有多少对象可以参与指定的关系。在CIM中，关联关系是不需要命名的。
聚集：
聚集是关联关系的一个特例。聚集关系指明类之间的关系是整体和局部的关系，整体的类由局部的类“组成”，或整体的类“包含”局部的类，局部的类是整体的类的一部分。局部的类并不是像泛化关系中从整体的类继承而来。
区别
然而，与面向对象的类不同，CIM 的类包含唯一标识对象实例的关键字。纯面向对象的设计不用关键字标识实例（虽然一些对象技术 -- 诸如 Enterprise JavaBeans -- 的确有关键字定义）。另外，CIM 包含一个很象数据库连接的特别的 关联类。这个关联涉及的实例，就象磁盘外壳和外壳里的物理磁盘。这种关联不是创建外壳和磁盘类之间的关系，而是定义两个类之间的关系。类本身没有这样的关系。通过关联而不是通过显式查询受管资源类实例来为实例定位。使用 CIM 对象实例中的关键字才可使关联定位成为可能。 
CIM 和纯面向对象设计的区别是由于它们在各自环境中有不同的使用意向。然而面向对象技术已经发展成服务于创建应用程序编程环境的需求，CIM 则明确地适用于描述，编目录和与受管资源交互。为进一步理解 CIM 是如何工作的，应该看创建和构建它的类层次和各种模型的方式。