现场设备集成 第6部分:技术映射_第1页
现场设备集成 第6部分:技术映射_第2页
现场设备集成 第6部分:技术映射_第3页
现场设备集成 第6部分:技术映射_第4页
现场设备集成 第6部分:技术映射_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ICS25.040

N10

中华人民共和国国家标准

GB/T41771.6—XXXX/IEC62769-6:2021

现场设备集成第6部分:技术映射

FieldDeviceIntegration–Part6:TechnologyMapping

(IEC62769-6:2021,IDT)

(征求意见稿)

(本稿完成日期:2023-04)

XXXX-XX-XX发布XXXX-XX-XX实施

国家市场监督管理总局

国家标准化管理委员会

GB/T41771.6—XXXX/IEC62769-6:2021

前  言

本文件按照GB/T1.1—2020《标准化工作导则第1部分:标准化文件的结构和起草规则》的规定

起草。

本文件是GB/T41771的第6部分。GB/T41771已经发布了以下部分:

——第1部分:通用要求;

——第2部分:客户端;

——第3部分:服务器;

——第4部分:包;

——第5部分:信息模型;

——第6部分:技术映射;

——第7部分:通信设备;

——第9部分:行规基金会现场总线H1;

——第10部分:行规基金会现场总线HSE;

——第11部分:行规PROFIBUS;

——第12部分:行规PROFINET;

——第13部分:行规HART和WirelessHART。

本文件等同采用IEC62769-6:2021《现场设备集成(FDI)第6部分:技术映射》。

本文件做了下列最小限度的编辑性改动:

——将标准名称修改为《现场设备集成第6部分:技术映射》。

请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别专利的责任。

本文件由中国机械工业联合会提出。

本文件由全国工业过程测量控制和自动化标准化技术委员会(SAC/TC124)负责归口。

本文件起草单位:机械工业仪器仪表综合技术经济研究所等。

本文件主要起草人:

III

GB/T41771.6—XXXX/IEC62769-6:2021

引  言

现场设备集成系列标准是指导工业过程测量控制等相关活动的重要技术标准,GB/T41771旨在确立

适用于设备集成的规范准则,拟由15个部分构成。

——第1部分:概述,目的是规定现场设备集成规范的概念和概述;

——第2部分:客户端,目的是规定现场设备集成客户端的相关要求;

——第3部分:服务器,目的是规定现场设备集成服务器的相关要求;

——第4部分:包,目的是构建现场设备集成包模型,提供将设备、网络组件和通信服务器集成到

系统所需的全部元素;

——第5部分:信息模型,目的是规定自动化系统的拓扑结构,用于描述自动化系统的设备及通信

连接网络;

——第6部分:技术映射,目的是规定现场设备集成中所描述的概念的技术映射;

——第7部分:通信设备,目的是规定实现通信能力的元素;

——第8部分:行规通用协议,目的是规定现场设备集成包描述的通信服务器、网关及设备所需的

通用协议的详细信息;

——第9部分:行规基金会现场总线H1,目的是规定H1现场总线技术的现场设备集成通信行规;

——第10部分:行规基金会现场总线HSE,目的是规定HSE现场总线技术的现场设备集成通信行规;

——第11部分:行规PROFIBUS,目的是规定PROFIBUS技术的现场设备集成通信行规;

——第12部分:行规PROFINET,目的是规定PROFINET技术的现场设备集成通信行规;

——第13部分:行规HART和WirelessHART,目的是规定HART和WirelessHART技术的现场设备集成

通信行规;

——第14部分:行规Modbus-RTU,目的是规定Modbus-RTU技术的现场设备集成通信行规;

——第15部分:行规ISA100,目的是规定ISA100技术的现场设备集成通信行规。

IV

GB/T41771.6—XXXX/IEC62769-6:2021

现场设备集成第6部分:技术映射

1范围

本文件规定了对于在现场设备集成(FDI)标准中所描述的概念的技术映射。该技术映射主要针对

那些仅特定于IEC62769-4中定义的WORKSTATION平台/.NET的组件FDI客户端和用户界面插件(UIP)

的实现。

2规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,

仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本

文件。

IEC61804(所有部分)过程控制用功能快(FB)和电子设备描述语言(EDDL)(Functionblocks(FB)

forprocesscontrolandElectronicDeviceDescriptionLanguage(EDDL))

IEC62769-1现场设备集成(FDI)第1部分:概述(FieldDeviceIntegration(FDI)-Part1:Overview)

IEC62769-2现场设备集成(FDI)第2部分:FDI客户端(FieldDeviceIntegration(FDI)-Part2:

FDIClient)

IEC62769-4现场设备集成(FDI)第4部分:FDI包(FieldDeviceIntegration(FDI)-Part4:FDI

Packages)

IEC62541(所有部分)OPC统一架构(OPCUnifiedArchitecture)

ISO/IEC19505-1信息技术对象管理组统一建模语言(OMGUML)第1部分:技术架构

(Informationtechnology–ObjectManagementGroupUnifiedModelingLanguage(OMGUML)–Part1:

Infrastructure)

ISO/IEC29500(所有部分)信息技术文档描述和处理语言办公开放式XML文件格式

(Informationtechnology-Documentdescriptionandprocessinglanguages-OfficeOpenXMLFile

Formats)

3术语、定义、缩略语和约定

3.1术语和定义

IEC62769-1界定的以及下列术语和定义适用于本文件。

3.1.1

应用程序域applicationdomain

应用程序执行的隔离环境。

3.1.2FDI类型库FDItypelibrary

包含用于在UIP和FDI客户端之间进行数据交换与数据交互的接口和数据类型的程序集。

3.1.3全局程序集缓存器globalassemblycache

1

GB/T41771.6—XXXX/IEC62769-6:2021

机器范围代码的缓存器,用于存储专门指定为多个应用程序共享的程序集。

3.1.4windows注册表windowsregistry

由系统定义的,应用程序和系统组件可存储和检索配置数据的数据库。

3.2缩略语

下列缩略语适用于本文件。

CLR通用语言运行时(CommonLanguageRun-time)

MSI微软安装器(MicrosoftInstaller)

WPFWindows呈现基础(WindowsPresentationFoundation)

UML统一建模语言(UnifiedModelingLanguage)

3.3符号

本文件中的图形使用符合ISO/IEC19505-1(UML2.0)的图形符号。

3.4约定

IEC62769-1中的约定适用于本文件。

关于4.8.2中非阻塞服务的执行的描述使用斜体字来识别内部功能中应用的通用操作名。

4技术概念

4.1概述

4.1.1综述

在4.1.2、4.2、4.3、4.4和4.5中,本文件首先描述了UIP实现的技术基础,包括相关实现规则的硬件

和软件环境。第4章采用面向生命周期(用例)的方法。

4.6中描述了UIP和FDI客户端的副本部署过程以及相关实现规则。UIP可执行文件的实例化和终止

在4.7中描述。4.8定义了FDI客户端和UIP之间的交互规则。与信息安全相关的定义在4.9中给出。FDI客

户端和UIP的服务接口定义在第5章中给出。

4.1.2平台

UIP和FDI客户端应基于Microsoft.NET构建,并在.NET通用语言运行时下执行。

工作站支持的I/O设备的最小集是:鼠标、键盘和像素为1024×768的彩色屏幕。

表1列出了所有与FDI组件一致的所有技术和他们的版本。

表1技术版本引用

技术标准版本

.NETN/A用于UIP实现的CLR4

EDDLIEC618042016

OPCUA(第1-8部分)IEC625412015

开放打包约定ISO/IEC295002016

2

GB/T41771.6—XXXX/IEC62769-6:2021

可扩展标记语言(XML)N/AW3C,1.0(第5版)

4.1.3FDI类型库

设备访问服务和UIP服务可建模为传递.NET数据类型参数的.NET接口。这些接口和数据类型用于

UIP和FDI客户端之间的数据交换与交互。为在接口方法调用时处理运行时错误,定义了.NET异常类。

FDI.NET接口,数据类型和异常类在单个FDI类型库中定义。FDI类型库是一个强名称程序集。该

程序集的文件名应是“fdi.dll”。fdi.dll的版本控制应符合IEC62769.1:2020中8.1。FDI类型库是FDI核心

技术的一部分。符合IEC62769.1:2020中。因此直接影响FDI技术版本。所有fdi.dll兼容的改变都

会导致FDI技术版本的次版本号增加。不兼容的改变则会导致FDI技术版本主版本号的增加。(见IEC

62769.1:2020的)

FDI类型库由文件的发行者使用单个唯一的密钥签名。FDI类型库作为每个FDI客户端安装的一部分

应分开安装。用户界面插件(UIP)和FDI客户端应用程序应使用fdi.dll实例。UIP不应带有或部署FDI

类型库。FDI客户端有责任提供该类型库定期更新的方法。

图1给出了FDI类型库的结构。

图1FDI类型库结构

注:复合结构图仅给出了实现IEC62769-2定义的接口的核心界面。

4.2UIP表示

UIP变体可包含单个或多个运行时模块(.NET程序集)及其相关的补充文件(例如资源文件)。UIP

变体的运行时模块称为“UIP可执行文件”。UIP变量的补充文件称为“UIP附属”。

3

GB/T41771.6—XXXX/IEC62769-6:2021

UIP附属存储在UIP可执行安装目录的一个子文件夹下。

示例:资源文件和应用程序配置数据。

UIP变量的RuntimeId应是“.NETFrameworkCLR4”,见IEC62769-4。支持此RuntimeId的FDI

客户端应支持使用CLR4的.NETFramework4.6.1或更高版本,具有此RuntimeId的UIP应使用支持

CLR4的.NETFramework4.6.1或更低版本(意味着.NETFramework4.0直至.NETFramework4.6.1)。

UIP变量是自包含的。UIP变体所需要的所有UIP必需的库(.NET程序集)都在同一文件夹中存

储。

4.3UIP可执行文件的表示

UIP的实现取决于用户接口元素的类型,该元素可以嵌入到FDI客户端中用户接口的托管环境中。

UIP可实现为.NETSystem.Windows.Forms类UserControl或Windows呈现基础(WPF)

System.Windows.Controls类UserControl。

UIP可执行文件及其所需的库应具有强名称。可以使用自生成的密钥来完成强名称程序集的签名。

注:强名称程序集的标识由名称、版本、地域、公钥令牌和数字签名组成。

UIP可执行文件及其所需的库应与包含公共密钥的文件一起交付,以启用程序验证。

4.4UIP可执行文件的兼容性规则

UIP组件的不同版本的兼容性规则在IEC62769-4中规定。

UIP的编译目标平台应是“任何CPU”。如果做不到这么灵活,则应以两种变体交付UIP。应为目标平

台“x86”编译一个UIP变体。第二个UIP变体应针对目标平台“x64”进行编译。编译平台目标应在IEC

62769-4定义的catalog.xml文件中描述。catalog.xml文件包含一个描述了用户界面插件变体的xml元素

“CpuInformation”。在xml元素“CpuInformation”中所允许使用的值是“anyCPU”、“x86”或“x64”。

4.5允许的.NET通用语言运行时版本

4.5.1概述

已发布特定的CLR(公共语言运行时)版本,以执行使用特定的.NETFramework版本构建的软件组

件。.NETCLR的4.0版本用于执行.NETFramework4.0内置的软件组件。.NET组件仅为一个CLR版本建

立,但也可在较新的CLR版本下运行。

FDI客户端可在CLR版本4.0或更高版本上建立。当启动UIP时,FDI客户端须实现以下情况:

——如果要在同一运行时建立要启动的UIP,则UIP可被FDI客户端中照常启动;

——当将要启动的UIP以其他CLR版本建立并未针对当前运行的1个CLR版本编译时,FDI客户端应

使用适当的CLR版本在替代过程中启动UIP。(详见4.5.2)

基于此,应以CLR版本4.0或任何更高版本来开发UIP。在CLR版本不匹配的情况下,UIP应在一个

单独的进程中启动。UIP不再在FDI客户端中显示为集成模块,代理过程的实现取决于FDI客户端。

4.5.2CLR兼容性策略

未来,FDI客户端和UIP将被允许在非兼容的不同CLR版本上建立。

如果FDI客户端检测到UIP需要一个与FDI客户端不兼容的CLR,则FDI客户端可使用代理类,该代

理类可与使用不同版本CLR构建的UIP进行交互。

FDI客户端加载一个代理UIP可执行文件,创建一个代理类的实例,将UIP的执行指派给该代理。代

理用所需的CLR启动进程,并在该代理进程中执行UIP。代理类提供标准FDI接口。FDI客户端可使用这

些接口来与代理进程中执行的UIP进行交互。

4

GB/T41771.6—XXXX/IEC62769-6:2021

图2.NET代理进程

4.5.3如何识别UIP的.NET目标平台

编译了某个程序集的.NET目标平台CLR版本信息可通过.NETFramework库函数来提取(见图3)。

clrVersion=Assembly.LoadFrom(<AssemblyPath>).ImageRuntimeVersion;

图3运行时版本的标识

注:VisualStudio2008和2010IDE允许开发者来选择.NETFramework目标。选择一个比当前VisualStudioIDE的

基础要早的.NETFramework目标,会自动在解决方案资源管理器中创建一个名为“app.config”的配置文件。该文件仅反

映了当前编译器的设置。编译器不会读取该文件。

4.6UIP部署

一般的UIP安装规则在IEC62769-2中概述。UIP可执行文件不得在全局程序集缓存中注册。

“强名称”规则确保不同版本的UIP的相关程序集可以在运行时共存。

FDI客户端的实现可确保UIP的部署独立于当前用户证书运行。请参阅如下的注。

注:某些操作系统管理的文件夹要求特定的访问权限。例如,对“ProgramFiles”文件夹中的修改要求“管理员”权限。

Windows操作系统提供了几种方法,以允许以受限用户权限运行的应用程序以对用户透明的管理员特权执行操作,例如,

对已识别目录的特殊限制处理,具有管理权限的服务,配置为自动运行的可执行文件具有管理权。另一种方法是将UIP

可执行文件复制到"普通"用户可写入的文件夹中。

4.7UIP生命周期

4.7.1概述

IEC62769-4中概述的UIP状态机由“已加载”、“已创建”、“运行”、“已停用”和“已处理”状态组成。

影响状态改变的机制在4.7中描述。

5

GB/T41771.6—XXXX/IEC62769-6:2021

在FDI客户端将UIP可执行文件存储在FDI客户端上后,FDI客户端将UIP程序集动态加载到内存中,

并通过调用相应的FDI指定的接口函数执行相关逻辑。

4.7描述了关于FDI客户端应如何激活和停用UIP的规则。

4.7.2UIP程序集激活步骤

加载

FDI客户端应使用LoadFrom机制加载UIP可执行文件。.NETFramework为此提供了

System.Reflection.Assembly.LoadFrom。

LoadFrom机制的行为方式如下:

——LoadFrom加载使用文件路径寻址的程序集以及位于同一目录中的引用程序集。参数字符串

assemblyFile应包含UIP可执行文件的文件名。UIP可执行文件名表示了IEC62769-4中描述的

StartElementName;

——如果程序集使用LoadFrom进行了加载,后来在"加载上下文"中的程序集尝试通过显示名称来加

载同一程序集,那么此加载尝试失败;

——如果已加载具有相同标识的程序集(例如,由另一个UIP加载),那么LoadFrom将返回之前加

载的程序集,即使规定了其他文件路径,也是如此。即使不同的文件名也无关,只有程序集的标识是相

关的;

——如果使用LoadFrom加载了程序集,并且探测路径包括具有相同标识的程序集(例如,在全局程

序集缓存或应用程序目录中),那么即使规定了不同的文件路径,也会加载此程序集;

——LoadFrom要求在指定路径上具有FileIOPermissionAccess.Read和

FileIOPermissionAccess.PathDiscovery权限,或WebPermission权限;

——LoadFrom将程序集加载到默认的应用程序域中;

——如果对于指定的文件路径,存在本地程序集映像(由ngen.exe生成),则不使用它。程序集不

能加载为域无关,即程序集不能在应用程序域之间共享。

该行为方式强制部署规则如下:

——关于程序集依赖关系的规则(见.2)。

FDI客户端应仅使用LoadFrom。不允许使用其他.NET程序集加载/对象创建方式。

——关于共享程序集的规则(见.3);

——预编译的处理器特定的机器代码不能使用;

——有关加载和程序集执行的信息安全方面在4.9中描述。

创建

创建UIP程序集实例时,使用.net库函数System.Reflection.Assembly.GetTypes和

System.Activator.CreateInstance。FDI类型库声明一个名称为UIPactivationClass的"自定义属性"。此属性

应仅添加到实现接口IDtmUiFunction的对象中去,接口IDtmUiFunction实际上实现UIP启动功能。属性

UIPActivationClass应只能使用一次。

FDI客户端现在可以使用System.Reflection服务来清晰确定UIP实现的激活过程。

注1:函数System.Reflection.Assembly.GetTypes可用于查询接口IDtmUiFunction。

注2:函数System.Attribute.GetCustomAttributes可用于读取附加自定义属性。

注3:函数调用System.Activator.CreateInstance的结果是IDtmUiFunction类型的对象。

创建过程需要数据类型转换。

激活

6

GB/T41771.6—XXXX/IEC62769-6:2021

函数IDtmUiFunction.Init的调用最终为用户激活UIP。

外部库

.1概述

UIP程序集可以依赖于外部库(第三方库)和其他程序集,例如特定的用户控件库。FDI客户端

不执行UIP的安装,而是动态加载和执行UIP。为了支持此用法,以及为防止可能出现的程序集冲突

问题的要求,为外部库规定了规则。

外部库应:

——包含在FDI包中;

——不需要安装微软安装程序(MSI);

——不需要在Windows注册表或全局程序集缓存中有登录项;

——遵守4.9.2中描述的访问限制;

——与4.1.2中描述的平台兼容。

.2加载外部库

FDI客户端通过调用.NET框架函数LoadFrom来加载UIP程序集,其中包含实现接口IDtmUiFuntion

的UIP主类。存储在同一目录中的引用程序集将自动与此.NET程序集一起加载。存储在其他位置(例如,

子目录中)的引用程序集必须由UIP自己显式加载。

UIP还应通过调用.NET框架函数LoadFrom来加载此类程序集。不允许使用其他.NET框架方法加载

程序集。

外部库的使用不应违反FDI包的自包含要求;所有外部库应包含在FDI的UIP软件包中。

.3加载共享的外部库

如果可以从不同的UIP可执行文件使用相关的.NET程序集标识,则外部库是共享的外部库。.NET

程序集的标识很重要。安装路径和程序集文件名是不相关的。

共享库的使用不应违反FDI包的自包含要求。交付的每个FDI包应随附所有必需的UIP相关库。共享

机制来自.NET框架实现的优化机制。

如果使用共享程序集,则适用以下规则:

——对共享程序集的任何不兼容更改应导致一个新的标识,例如不同的版本号。

——共享程序集不应假定是从特定的安装路径加载的,例如,依赖于某些文件存储在同一目录或子

目录中的事实。

——如果程序集加载到同一应用程序域中,则共享程序集中的静态变量。因此,在这种情况下,静

态变量不应有副作用。外部共享库不应声明静态变量。

——由于为FDI包定义的自包含规则,共享的程序集应与使用共享程序集的FDI包一起部署。

UIP构造函数调用

构造函数和析构函数的实现不应引发异常。构造函数逻辑应限于按照内部数据结构来实例化对象。

析构函数逻辑应限于按照释放内存资源来销毁对象。构造函数和析构函数不应:

——调用对FDI客户端的任何回调;

——调用任何用户交互。

4.7.3UIP程序集停用步骤

7

GB/T41771.6—XXXX/IEC62769-6:2021

停用

对于UIP停用,FDI客户端应调用接口IDtmUiFunction.BeginClose和IDtmUiFunction.EndClose。成功

执行后,UIP应释放所有资源,FDI客户端应删除对UIP实例的所有引用。.NET垃圾回收器最终处理UIP

运行时对象。

处理

分别加载到相关ApplicationDomain的进程中的.NET程序集永不卸载,除非ApplicationDomain本身

已销毁。这意味着,如果FDI客户端将UIP程序集加载到默认的ApplicationDomain中,则除非应用程序

关闭,否则这些程序集和所有从属程序集永不卸载。

开发UIP程序集时,应牢记此.NET框架行为。为了减少内存消耗,遵循以下规则:

——最小化静态变量的使用,因为这会增加程序集的内存消耗;

——移动不常用(或很少用)的UIP功能到单独的程序集。当执行相应的代码时,这些程序集才会

自动或手动加载;

——尽可能使用共享程序集;

——FDI客户端可以在单独的应用程序域中执行.NET程序集,以便有能力卸载它们。

4.8FDI客户端和UIP之间的交互

4.8.1标准UI元素的处理

UIP应将标准UI元素的表示和处理委托给FDI客户端。标准UI元素是:

——具有标准化语义的UI动作(应用/关闭/在线帮助);

——UIP特定状态信息。

为了确保来自不同供应商的UIP之间的用户接口交互一致,UIP可以将其他UIP特定动作的表示和处

理委托给FDI客户端。但是,允许UIP在其自己的UI区域内实现非标准UI动作。

标准UI动作及其各自的语义集是固定的。但是,根据UIP的内部状态,这些动作的可用性可能随时

更改。其他的UIP特定的动作集及其个别可用性不是固定的。根据要求,UIP可随时添加、删除、重命

名、启用或禁用UIP特定动作。每当UIP的标准动作或特定动作的可用性发生变化时(见事件

IStandardActions.StandardActionItemSetChanged和IApplicationSpecificActions.

ApplicationSpecificActionItemSetChanged),UIP必须通知FDI客户端。

FDI客户端可使用专用的UI元素(如按钮控件)来提供对标准动作的直接访问,并在用户与其他FDI

客户端UI元件交互时,间接调用它们。FDI客户端应始终显示具有专用UI元素的UIP所公开的所有自定

义动作。

4.8.2非阻塞服务的执行

FDI客户端内部函数

函数BeginOperationName的实现应将参数asyncState的内容复制到返回的IAsyncResult对象的成员

AsyncState中。

名为OperationName的函数的生产(耗时)部分应在其他线程中执行。与调用线程的同步通过

AsyncWaitHandle对象(类WaitHandle)处理,该对象也是IAsyncResult对象的成员。

当名为OperationName的函数的生产部分处理完成后,IAsyncResult对象特性IsCompleted应设置为

True。如果AsyncCallBack参数值有效(不等于NULL),则FDI客户端使用回调通知UIP。

8

GB/T41771.6—XXXX/IEC62769-6:2021

CancelOperationName的实现通过使用参数IAsyncResult来标识已使用BeginOperationName启动的服

务。如果BeginOperationName启动了OPCUA服务,则FDI客户端应调用OPCUA定义的Cancel服务。

UIP内部函数

多个并行异步服务的管理应使用AsyncState对象进行管理。

由BeginOperationName返回的IAsyncResult对象包含WaitHandle对象。UIP应使用WaitHandle对象执

行其自己的线程同步。

非阻塞服务执行顺序

下面显示了FDI客户端和UIP之间的交互顺序。在FDI客户端内部实施的线程管理机制未显示。FDI

客户端与FDI服务器之间的交互基于请求/响应模式。FDI客户端服务请求与BeginOperationName匹配。

AsyncCallback调用与接收客户端服务响应匹配。EndOperationName传达响应包含的结果。非阻塞服务

执行的实现不需要在FDI客户端内部进行任何线程管理。图4给出了基于IAsyncPattern的异步服务执行的

示例。

图4基于IAsyncPattern的异步服务执行示例

4.8.3阻塞服务执行

FDI客户端提供的接口允许按照图5所示的方式,使用4.8.1中描述的功能,执行同步信息模型访

问。

ReadAsyncResult是实现接口IAsyncResult的对象。

9

GB/T41771.6—XXXX/IEC62769-6:2021

图5使用基于IAsyncResult模式的阻塞服务执行示例

4.8.4取消服务执行

为接口IDeviceModel(见表3)规定的某些服务支持通过函数CancelServiceName来取消已启动

的服务。下图6将说明基于读取服务示例的处理顺序。

图6取消服务处理顺序示例

CancelRead的调用会触发取消主动读取操作所需的FDI客户端内部函数。FDI客户端可能无法立即

取消操作,但应尽快取消。一旦操作取消,FDI客户端将通过ReadAsyncCallback通知UIP。然后,UIP

应调用EndRead函数。

注:实施这种模式的一般挑战是正确处理双方的竞争条件(UIP2和FDIClient2)。如果FDI客户端通

过OPCUA服务转发了服务执行,则实际服务执行将在FDI服务器内运行。

根据UIP的托管方式,可能有三种独立工作流程。因此,取消请求(由UIP发送)可能在FDI服务器

完成服务请求后立即出现。FDI服务器发送的相关响应可能已到达FDI客户端(或未到达)。当UIP调用

CancelRead时,FDI客户端可以调用ReadAsyncCallBack。

ReadAsyncResult是实现接口IAsyncResult的对象。

4.8.5线程

实现规则

UIP应能够接收任何线程中的调用。

UIP不应阻止来自FDI客户端的调用。

UIP不应使用FDI客户端线程向FDI客户端本身发出回调信号。这是为了防止死锁和无限循环。

UIP不应在用户界面线程中运行4.8.3所述的同步操作:进程的用户界面线程应专用于接收用户输入

并仅执行绘图任务。

10

GB/T41771.6—XXXX/IEC62769-6:2021

UIP和FDI客户端不应阻塞用户界面线程。用户界面应始终保持响应。用户界面线程在不同的FDI

用户界面相关对象之间共享,以用于用户输入和绘图操作。如果一个对象阻塞了此线程以执行某些处理,

这将影响其他用户界面的响应性能力。

UIP和FDI客户端不应阻塞BeginOperationName方法调用:BeginOperationName方法只能启动异步

操作。呼叫者不应被阻塞。

4.8.6超时

第5章中引用的接口启动异步服务执行。此类服务的执行时间取决于相关的性能约束:总线通信,

FDI客户端/FDI服务器性能。下面列出的规则针对关于防止"竞争条件"的系统互操作性。一般规则是,

只允许组件管理完全受该组件控制的进程的超时处理。下面的列项给出了允许整个系统的哪些元素实现

超时检测功能:

——UIP:UIP不应实现超时检测;

——业务逻辑:业务逻辑不应实现超时检测(FDI包);

——FDI客户端:FDI客户端应实现超时检测。对于OPCUA,相关的支持内置在OPCUA通信栈中。

在代表UIP执行的操作过程中,检测到的超时应作为负函数结果代码转发;

——FDI服务器:FDI服务器应实现超时检测。对于OPCUA,相关的支持内置在OPCUA通信栈

中;

——通信服务器:根据OPCUA规范,通信服务器为OPCUA连接实施超时检测。相关支持内置于

OPCUA通信栈中。此外,通信服务器实现超时检测,仅限于直接连接到与通信服务器连接的物理端

口的网络。

4.8.7异常处理

一个重要规范的目标是明确区分软件质量问题和预期处理状态。因此,规范定义了两个常规的异常

类别:

a)指示在软件开发期间未预见到的软件状态或事件的异常情况,被视为软件质量问题(运行时错

误);

b)指示预期的软件运行失败的异常情况。

异常所指示的软件质量问题的示例包括:

——函数参数类型不匹配;

——函数参数值范围不匹配;

——除以零;

——NULL指针引用。

预期的错误处理的示例包括:

——通信问题处理;

——通用IO数据处理;

——用户输入错误。

11

GB/T41771.6—XXXX/IEC62769-6:2021

图7异常源

根据FDI架构,异常可能发生在服务处理的不同步骤中,如图7所示:

a)将UIP的请求发送到FDI客户端:

b)在FDI客户端内部推送请求;

c)处理来自FDI服务器的响应;

d)将响应推送给UIP;

e)在UIP内部处理响应。

通过OPCUA定义的服务结果,处理在FDI服务器的内外所检测到的服务处理问题。

关于IAsyncResult模式的实现,适用以下规则:

——步骤a)发生的任何故障应由"BeginOperationName"引发的异常来报告;

——步骤b)至e)期间发生的任何故障应由相应的组件处理。然后,EndOperationName的执行应

通过异常来报告故障。

4.8.8类型安全接口

信息模型托管不同类型的设备变量。这类变量的值使用类DataValue(FDI接口和数据类型.CHM)

进行传输。

设备访问服务支持在一个服务中写入或读取多个变量。为数据传输选择的数据类型是实现类型安全

传输的DataValue,因为DataValue特性Datatype通过Datatype枚举来描述值数据类型。由于DataValue特性

的Valueget/set函数使用数据类型Object来传达实际值,因此数据接收器(UIP)应在数据处理前验证数

据类型。

4.8.9全球化和本地化

UIP本地化支持可以通过源文件(.res(x))或附属程序集来实现。

FDI客户端应通过调用方法Fdi.Dtm.Ui.IDtmUiFunction.Init提交的参数currentRegion和currentCulture

来设置由UIP使用的本地和国家信息。UIP不应通过Thread.CurrentUICulture获取区域设置信息。

currentRegion的数据类型是.NET命名空间System.Globalization中定义的RegionInfo。currentCulture的数据

类型是.NET命名空间System.Globalization中定义的CultureInfo。

4.8.10WPF控件处理

如果UIP实现基于WPF的UserControl,则UIP将从类UserControl继承接口,这意味着FDI客户端

将有更多的方法属性和事件可用,而FDI规范中没有包含这些内容。反之亦然,UIP实现了可访问性

功能。相关规则一方面涉及UIP产品的质量,另一方面涉及互操作性。

4.8.11Win窗体处理

12

GB/T41771.6—XXXX/IEC62769-6:2021

如果UIP实现基于Windows窗体,则UIP将从类UserControl继承,这意味着FDI客户端将有更多的方

法属性和事件可用,而FDI规范中没有包含这些内容。反之亦然,UIP实现了可访问性功能。相关规则

一方面涉及UIP产品的质量,另一方面涉及互操作性。FDI客户端应对Windows.Forms控件进行线程

安全调用。

4.9信息安全

4.9.1概述

信息安全的目标是保护系统免受损害系统的稳定性、完整性和敏感数据的威胁。

系统范围的信息安全从不在标准化范围之内的设计过程开始。从系统的角度来看,信息安全是控制

对资源(如应用程序组件、数据和硬件)的访问。.NET框架为限制对资源的访问提供了支持。系统的

信息安全基于对访问权限的控制。

另一种方法基于认证和身份验证。由于任何FDI包需要符合性测试和认证,因此可以推定此类认证

过的FDI包不会对系统构成任何威胁。这意味着UIP可以具有完全受信任的权限执行。

虽然过度受限的系统可能导致功能问题,但不受约束的权限可被视为安全威胁。因此,4.9表现了

两种方式之间的权衡。

4.9.2访问权限

概述

除了IEC62769-2中指定的权限和限制外,本条还指定了特定的技术权限。许可和限制应由FDI客户

端强制执行。实现规则定义了应如何实现。

技术特定的UIP权限和限制

一般的UIP权限和限制在IEC62769-2中规定。本条中规定的权限和限制特定于基于.NET的UIP。

a)不允许启动Active-X组件。

b)UIP不应写操作系统注册表。允许读取注册表。

FDI客户端应根据上面的规定限制UIP权限。

实现规则

为了限制UIP的权限,FDI客户端应在单独的进程(不是FDI客户端进程)中执行UIP,该进程应使

用单独的用户帐户运行(4.5.2描述了FDI客户端如何在不同的进程中管理托管的UIP)。通过限制单独

用户帐户的权限,FDI客户端还限制了在单独用户帐户下运行的UIP的权限。

如何创建和配置单独的用户帐户取决于主机。这包括:

——是本地帐户还是域帐户;

——是仅用于UIP托管还是还要用于其他目的;

——是将其重复用于同一FDI客户端实例或多个FDI客户端的所有UIP进程;

——如何实施限制(例如,通过操作系统机制限制对文件系统的访问,通过防火墙阻塞网络访问)。

FDI客户端是在其自己的进程中执行每个UIP实例,还是在同一进程中执行多个或所有UIP实例,是

FDI客户端特定的。

由于UIP在一个单独的进程中运行,UIP开发人员需要意识到,使用操作系统机制打开一个模态对

话框只会在该进程的Windows中提供模态。为了避免这种情况,UIP开发人员可以启动模式UIP或启动

一个新的模式UIP。

13

GB/T41771.6—XXXX/IEC62769-6:2021

4.9.3代码标识概念

唯一标识UIP可执行文件的能力有助于提高系统的信息安全性。

如前4.3所述,UIP可执行文件应使用强名称进行签名。用强名称签名的.NET程序集可启用:

——UIP可执行文件的唯一标识;

——代码完整性验证。

注:如果此程序集动态加载未使用强名称签名的其他库程序集,则强命名的UIP可执行文件的益处将丢失。

5接口定义

表2~表9规定了IEC62769-2中规定的抽象服务与相应的.NET实现之间的映射,该实现可在类型库文

件“FDI.DLL”和相关的帮助文件“FDIInterfacesandDataTypes.chm”中找到。

注:文件“FDI.DLL”和“FDIInterfacesandDataTypes.chm”可以从现场总线组织获得(也可见

)。

表2规定了基础属性服务的映射。

表2基础属性服务

抽象服务.NET实现

GetDeviceAccessInterfaceVersionIDeviceAccess.Version

GetOnlineAccessAvailabilityIDeviceAccess.OnlineAccessAvailable

表3规定了设备模型服务的映射。

表3设备模型服务

14

GB/T41771.6—XXXX/IEC62769-6:2021

抽象服务.NET实现

BrowseIDeviceModel.BeginBrowse

IDeviceModel.CancelBrowse

IDeviceModel.EndBrowse

ReadIDeviceModel.BeginRead

IDeviceModel.CancelRead

IDeviceModel.EndRead

WriteIDeviceModel.BeginWrite

IDeviceModel.CancelWrite

IDeviceModel.EndWrite

CreateSubscriptionIDeviceModel.BeginCreateSubscription

IDeviceModel.EndCreateSubscription

SubscribeIDeviceModel.BeginSubscribe

IDeviceModel.EndSubscribe

UnsubscribeIDeviceModel.BeginUnsubscribe

IDeviceModel.EndUnsubscribe

DeleteSubscriptionIDeviceModel.BeginDeleteSubscription

IDeviceModel.EndDeleteSubscription

DataChangeCallbackDataChangeCallback

表4规定了访问控制服务的映射。

表4访问控制服务

抽象服务.NET实现

InitLockIAccessControl.BeginInitLock

IAccessControl.EndInitLock

ExitLockIAccessControl.BeginExitLock

IAccessControl.EndExitLock

表5规定了直接访问服务的映射。

表5直接访问服务

抽象服务.NET实现

InitDirectAccessIDirectAccess.BeginInitDirectAccess

IDirectAccess.EndInitDirectAccess

ExitDirectAccessIDirectAccess.BeginExitDirectAccess

IDirectAccess.EndExitDirectAccess

TransferIDirectAccess.BeginTransfer

IDirectAccess.EndTransfer

表6规定了主机服务的映射。

15

GB/T41771.6—XXXX/IEC62769-6:2021

表6主机服务

抽象服务.NET实现

GetClientTechnologyVersionFdi.Frame.IFrame.Version

OpenUserInterfacea)Fdi.Frame.Ui.IFrameUi.BeginOpenDtmUiModal

Fdi.Frame.Ui.IFrameUi.EndOpenDtmUiModal

Fdi.Frame.Ui.IFrameUi.BeginOpenDtmUi

Fdi.Frame.Ui.IFrameUi.EndOpenDtmUi

CloseUserInterfacea)Fdi.Dtm.Ui.CloseMeRequestHandlerb)

Fdi.Frame.Ui.IFrameUi.BeginCloseDtmUi

Fdi.Frame.Ui.IFrameUi.EndCloseDtmUi

LogAuditTrailMessageFdi.Frame.IAuditTrail.Notify

SaveUserSettingsFdi.Frame.IUserSettings.SaveUserSettings

LoadUserSettingsFdi.Frame.IUserSettings.LoadUserSettings

TraceFdi.Frame.ITrace.Trace

ShowMessageBoxFdi.Frame.Ui.IFrameUi.ShowMessageBox

ShowProgressBarFdi.Frame.Ui.IFrameUi.ShowProgress

CancelCallbackFdi.Frame.Ui.CancelEventHandler

UpdateShowProgressBarFdi.Frame.Ui.IProgressUi.UpdateProgress

EndShowProgressBarFdi.Frame.Ui.IProgressUi.EndProgress

DefaultResultSystem.Windows.MessageBoxResult

ButtonSetSystem.Windows.MessageBoxButton

AcknStyleSystem.Windows.MessageBoxImage

ExportFileFdi.Frame.ImportExport.IFileExport.BeginInitExport

Fdi.Frame.ImportExport.IFileExport.EndInitExport

Fdi.Frame.ImportExport.IFileExport.BeginWriteExport

Fdi.Frame.ImportExport.IFileExport.EndWriteExport

Fdi.Frame.ImportExport.IFileExport.BeginFinishExport

Fdi.Frame.ImportExport.IFileExport.EndFinishExport

CancelExportFileFdi.Frame.ImportExport.IFileExport.BeginFinishExport

Fdi.Frame.ImportExport.IFileExport.EndFinishExport

ImportFileFdi.Frame.ImportExport.IFileExport.BeginInitImport

Fdi.Frame.ImportExport.IFileExport.EndInitImport

Fdi.Frame.ImportExport.IFileExport.BeginReadImport

Fdi.Frame.ImportExport.IFileExport.EndReadImport

Fdi.Frame.ImportExport.IFileExport.BeginFinishImport

Fdi.Frame.ImportExport.IFileExport.EndFinishImport

CancelImportFileFdi.Frame.ImportExport.IFileExport.BeginFinishImport

Fdi.Frame.ImportExport.IFileExport.EndFinishImport

OpenDefaultApplicationFdi.Frame.DefaultApplication.IOpenDefaultApplication.BeginInitOpenDefaultApplication

Fdi.Frame.DefaultApplication.IOpenDefaultApplication.EndInitOpenDefaultApplication

16

GB/T41771.6—XXXX/IEC62769-6:2021

Fdi.Frame.DefaultApplication.IOpenDefaultApplication.BeginWriteOpenDefaultApplication

Fdi.Frame.DefaultApplication.IOpenDefaultApplication.EndWriteOpenDefaultApplication

Fdi.Frame.DefaultApplication

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论