TASE.2 consists of three documents
 IEC 870-6-503 TASE.2 Services and Protocol
 IEC 870-6-702 TASE.2 Profiles
 IEC 870-6-802 TASE.2 Object Models

Telecontrol Application Service Element (TASE.2)
Inter-Control Centre Communications Protocol, ICCP

RFC1006

ASN.1 ACSE

Abstract Syntax Notation 1 (ASN.1)
( ISO/IEC 8824 and 8825 )

ISO/IEC 8824-1:1998, Information technology - Abstract Syntax Notation One (ASN.1): Specification of
                     basic notation
                    
ISO/IEC 8824-2:1998, Information technology - Abstract Syntax Notation One (ASN.1): Information object
                     specification
                    
ISO/IEC 8825-1:1998, Information technology - ASN.1 encoding rules: Specification of Basic Encoding
                     Rules (BER), Canonical Encoding Rules (CER, and Distinguished Encoding Rules (DER)
                    
ISO/IEC 8825-2:1998, Information technology - ASN.1 encoding rules: Specification of Packed Encoding
                     Rules (PER)

ISO/ISP 14226-1:1996 Industrial automation systems -- International Standardized Profile AMM11:
                     MMS General Applications Base Profile -- Part 1: Specification of ACSE,
                     Presentation and Session protocols for use by MMS

ISO/ISP 14226-2:1996 Industrial automation systems -- International Standardized Profile AMM11:
                     MMS General Applications Base Profile -- Part 2: Common MMS requirements

ISO/ISP 14226-3:1996 Industrial automation systems -- International Standardized Profile AMM11:
                     MMS General Applications Base Profile -- Part 3: Specific MMS requirements
 
学习好地方
http://www.ncepu.com.ru/home/html/f72.html(有些参考论文)
http://corba.blogbus.com/index.html(个人blog)

====================================
 IEC 870-6-503 TASE.2 Services and Protocol
 IEC 870-6-702 TASE.2 Profiles
 IEC 870-6-802 TASE.2 Object Models
文档google到了,只是比较旧的

最近得好好学习ASN.1了,这玩艺看样子,应用挺广的
不学不行啊!!

有正学习ASN.1的相互交流啊!!!

ASN.1 --- MMS ----ICCP -----IEC 61850

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
An asterisk (*) following two names, "A" and "B", denotes the "empty" lexical item (see 11.7), or one of the permitted sequences of lexical items associated with "A", or an alternating series of one of the sequences of lexical items associated with "A" and one of the sequences of lexical items associated with "B", both starting and finishing with one associated with "A". Thus:   
  C ::= A B * (空或者以A开头和以A结尾的条目)
is equivalent to:
  C ::= D | empty
 D ::= A | A B D
"D" being an auxiliary name not appearing elsewhere in the productions.
EXAMPLE – "C ::= A B *" is the shorthand notation for the following alternatives of C:
  empty
 A
 A B A
 A B A B A
 A B A B A B A
--------------------------------------
E ::= A B +  (以A开头和以A结尾的条目,不能为空)
--------------------------------------
F ::= A ? (为空或A串)

编码的基本原则是类型—长度—值的三段式结构,简称TLV(TypeLength--Value)结构
ASN.1编码的基本型结构和递归型结构
ASN.1 TAG含义:
Bits 7,6     Type of tag
Bit  5         Primitive or Constructed Flag
Bit  4-0     Tag value






ASN.1有四种类型:
简单类型,它相当于原子,没有下层组件;
结构类型,有组成部分;
标签类型,由其它类型生成;
其它类型,包括CHOICE和ANY类型。
可以使用ASN.1的分配符(::=)给类型和值指定名字,这些名字可以用于定义其它类型或值。

除了CHOICE和ANY类型以外,每种ASN.1类型都有一个标签,由一个类和一个非负的标签数组成。标签值可以唯一区分ASN.1类型。也就是说,ASN.1类型的名字并不影响它的抽象含义,只有标签值才有这个作用。有四类标签:

●Universal:该类型的含义在所有的application中都相同。这种类型只在X.208中定义。
●Application:该类型的含义由application决定,如X.500目录服务。两个不同的application中的类型可以具有相同的application-specific标签但是可以具有不同的含义。
●Private:,该类型的含义根据给定的企业而不同。
●Context-specific:该类型的含义根据给定的结构类型而不同。Context-specific标签用于在一个给定的结构类型上下文中区分使用相同的下层标签的组件类型。在两个不同的结构类型中组件类型可以具有相同的标签但是含义不同。

MMS中
Bits 7,6    Bit 5      Description, key words
--------     -----        -------------------------
0 0            0            Description: Universal Tag, Primitive
                                        Example keywords: INTEGER, BITSTRING, BOOLEAN
0 0            1            Description: Universal Tag, Constructed
                                        Example keyword: SEQUENCE, SEQUENCE OF
1 0            0            Description: Context Specific, Primitive
                                        Example Keyword: IMPLICIT
1 0            1            Description: Context Specific, Constructed
                                        Example Keywords: IMPLICIT SEQUENCE
                                                          IMPLICIT SEQUENCE OF
-----------------------------------------------------------------------------------------
识别符由小写字母开头,类型索引由大写字母开头。
类型索引由大写字母开头。

简单类型(Simple types)
    ●BIT STRING:由0和1任意组成的比特流
    ●IA5String:由IA5(ASCII)字符任意组成的字符流
    ●INTEGER:一个任意的整数
    ●NULL:null值
    ●OBJECT IDENTIFIER:对象识别符,有一列整数构成,用于确定对象,如算法或属性类型
    ●OCTET STRING:任意的octet(8bit值)流
    ●PrintableString:任意可打印字符流
    ●T61String:T.61(8bit)字符的任意流
    ●UTCTime:"coordinated universal time"或者格林威治平均时(GMT)值。

结构化类型
    ●SEQUENCE:一个或多个类型的有序集合
    ●SEQUENCE OF:0个或某个给定类型多次出现的有序集合
    ●SET:一个或多个类型的无序集合
    ●SET OF:0个或某给定类型多次出现的无序集合

隐式和显式标签类型
●隐式标签类型是在其它类型基础上通过改变其下层类型的标签生成的。
●显式标签是在其它类型基础上通过在其下层类型的标签之外添加一个外层标签生成的。从效果上看,显式标签类型是包含一个组件的结构类型,该组件即下层类型。

其他类型
包括CHOICE和ANY类型。
●CHOICE类型表示一个联合体,它具有一个或多个备选项(alternative);
●ANY类型表示任意类型的任意值,其中任意类型可能在使用对象识别符或整数值注册中定义。

基本编码规则BER(Basic Encoding Rules)
●三种编码方法
   基本的,     定长编码;
   结构化的,定长编码;
   结构化的,不定长编码

简单的non-string类型使用第一种(简单、定长编码);结构类型可使用任一种结构化的编码方法;简单的string类型根据值的长度是否已知可使用任一种方法。隐式标签定义的类型可使用下层类型的方法,显式标签定义的类型使用结构化的编码方法。

 每种BER编码方法都有三或四部分:
 ●Identifier octets:定义了ASN.1值的类和标签值,指明编码方法是简单化的还是结构化的。
 ●Length octets:对于定长编码方法,它指出了内容octet的个数;对于结构化、非定长编码方法,它指名长度是不确定的。
 ●Contents octets:对于简单的、定长编码方法,它给出了值的具体表示;对于结构化的方法,它给出了值的内容的BER编码的串联。
 ●End-of-contents octets:对于结构化、非定长的编码方法,它表示内容结束;对于其它方法,没有该部分。

简单定长方法(Primitive, definite-length method)
这种方法用于简单类型及通过对简单类型使用隐式标签生成的类型。它要求值的长度是事先预知的

1.Identifier octets,有两种形式:较小的标签值(标签值在0和30之间)和较大的标签值(标签值大于等于31)
 ●Low-tag-number form:一个octet。Bit8和bit7表示类(如表2),bit6值为0,表示编码方法为简单化的。Bit5-1给出了标签值。如下表所示:
              Class                Bit 8    Bit 7
              universal               0    0 
              application            0    1
              context-specific    1    0
              private                   1    1
●High-tag-number form:两个或多个octet。第一个octet形式如low-tag-number form,但是bit5-1均为1。第二个和以后的octet给出标签值,基于128,最高位在先,以便使用尽可能少的数字,每个octet的bit8都置为1,最后一个为0。

2.Length octets:有两种格式:短型(长度在0至127之间)和长型(长度在0至21008-1之间)
●Short form: 一个octet,bit8为0,bit7-1表示长度。
●Long form: 2-127个octet。第一个octet的Bit8为1,bit7-1表示后面有多少个用于表示实际长度的octet。第二个和随后的octet给出实际长度,基于256,高位数字在先。

3.Contents octets:给出了值的具体表示(如果类型是由隐式标签定义的,则给出了下层类型的值)

3.2 结构化定长方法(Constructed, definite-length method)

     结构化的、定长方法适用于简单的string类型、结构类型、在二者基础上通过隐式标签生成的类型和在任何类型基础上由显式标签生成的类型。要求值的长度事先已知。BER编码方法各部分如下:

 1.Identifier octets:与第3.1节介绍的一样,但bit6的值为1,表示编码方法是结构化的。
 2.Length octets:见第3.1节。
 3.Contents octets,值的组件的BER编码的串联

●对于简单string类型和在其基础上由隐式标签生成的类型,是值的连续子串的BER编码的串联(隐式标签的下层值)
●对于结构类型和在其基础上由隐式标签生成的类型,是值的组件的BER编码的串联(隐式标签的下层值)
●对于在任何类型基础上使用显式标签生成的类型,是下层值的BER编码特定类型的细节见第5节。

3.3 结构化非定长方法(Constructed, indefinite-length method)

    结构化的、非定长编码用于简单string类型、结构类型、在二者基础上使用隐式标签生成的类型和在任何类型基础上使用显式标签生成的类型。不要求事先知道值的长度。BER编码各部分如下:

    ●Identifier octets,见第3.2节
    ●Length octets.一个octet,值为80
    ●Contents octets.见第3.2节。
    ●End-of-contents octets两个octet,为00  00。

 由于end-of-contents octet出现在通常普通BER编码出现的位置(例如,在一个sequence值的内容octet出现的位置),可把00和00分别视为identifier和length octet。因此end-of-contents octet实际上是一个具有universal class,标签值为0,长度为0的值的简单定长编码。
----------------------------------------------------------------
部分摘自:
RSA实验室技术笔记
作者:Burton S.Kaliski Jr.
最终修订日期:Nov 1,1993
翻译:David(
David@javaresearch.org),2002年6月
----------------------------------------------------------------