Just think, Just do it

MMS开发流程思考
 

MMS开发流程思考

 

黄伟  2004-6-30

 

l         先对一个实际设备进行抽象,利用面向对象思想理解设备的逻辑构成。参考7-2中进行抽象建模,提炼出设备所含有的逻辑节点,每个逻辑节点所含的参数、属性,找出逻辑节点之间数据流向。整个过程需要对设备有大概的了解,知道设备可以被抽象为哪几个逻辑节点组成,特别是数据流向问题,还有该设备可能和哪些其他设备发生数据关系。参考7-1找出该设备与其他设备发生交换的时候需要哪些ACSI服务。最终形成一张该设备的按IEC 61850思想获得的逻辑抽象参数表与逻辑数据流程图。(可用UML进行抽象建模)

l         参考设备的逻辑抽象参数表与逻辑数据流程图,根据MMS协议与8-1实现映射,将逻辑节点映射成MMS中的域,特别是设备涉及的ACSI服务,很大一部分其实转映射成MMS中的读写服务。根据映射关系得出MMS映射逻辑抽象参数表与MMS服务与ACSI服务对照表。(可用UML进行抽象建模)

l         根据MMS服务与ACSI服务对照表,准备一个XML文件作为MMS的配置文件,记录该设备的MMS服务以及参数,(这样的好处是采用XML作为数据库存储设备MMS相关信息)(或者考虑两张配置表1张单独为DOMAIN1张为SERVER)

比如:  〈VMD〉

 〈DOMAIN〉

  〈QSE21〉〈/QSE21〉

〈/DOMAIN〉

 〈SERVER〉  〈/SERVER〉(服务带上服务的ASN.1编码)

〈/VMD〉

l         将MMS开发主要分为这三部分

l         MMS的环境管理服务    ASN.1编解码      面向连接的传递机制(考虑Socket)(RPC)

       

        MMS的环境管理服务,比如要实现设备涉及到的各种服务,还有保证这些服务正常的其它管理服务,如产生回调ID,服务时间属性设置(在某一段时间没有完成则认为服务失败,这样真正使得MMS是一种实时通信机制)等等

        这个开发的是三部分里面最难最关键的部分,这个部分完成就能获得一个系统的大体框架


posted @ 2006-01-18 15:07 zfly 阅读(792) | 评论 (0) | 编辑 收藏
 
ASN.1 -2( 笔记 )

 BER1.bmp

posted @ 2006-01-18 14:07 zfly 阅读(290) | 评论 (0) | 编辑 收藏
 
ASN.1 ---1 笔记 *************( 我还有 4天调休 2天年休)

编码规则的区别:
1. DER
为确保编码的唯一性,出现了CER和DER两种编码方案,它们均为BER子集。
其中DER只使用定长编码,CER基于不定长编码。

2. PER
在PER中,tag从不传送,length和value如果双方都知道,也不需传送。
因此,其编码更精简,效率更高。

The key difference between them is that DER uses the definite
length form of encoding while CER uses the indefinite length
form. DER is more suitable for the small encoded values,
while CER is more suitable for the large ones.

Whereas the basic encoding rules give the sender of an encoding
various choices as to how data values may be encoded,
the canonical and distinguished encoding rules select just one
encoding from those allowed by the basic encoding rules, eliminating
all of the sender's options. The canonical and distinguished encoding
rules differ from each other in the set of restrictions that they
place on the basic encoding rules.

The distinguished encoding rules is more suitable than the canonical
encoding rules if the encoded value is small enough to fit into the
available memory and there is a need to rapidly skip over some nested
values. The canonical encoding rules is more suitable than the distinguished
encoding rules if there is a need to encode values that are so large that
they cannot readily fit into the available memory or it is necessary to
encode and transmit a part of a value before the entire value is available.
The basic encoding rules is more suitable than the canonical or distinguished
encoding rules if the encoding contains a set value or set-of value and there
is no need for the restrictions that the canonical and distinguished encoding
rules impose

Structure of an encoding:
a) identifier octets (see 8.1.2);
b) length octets (see 8.1.3);
c) contents octets (see 8.1.4);
d) end-of-contents octets (see 8.1.5).(可选)

posted @ 2006-01-18 10:06 zfly 阅读(398) | 评论 (0) | 编辑 收藏
 
下步学习内容!(下一代规约... ... ASN.1不学不行啊!!)

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(Type—Length--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月
----------------------------------------------------------------

posted @ 2006-01-16 12:30 zfly 阅读(4992) | 评论 (11) | 编辑 收藏
 
哪位兄弟有??
·  IEC 60870-6-503 TASE.2 Services and protocol
·  IEC 60870-6-602 TASE transport profiles
·  IEC 60870-6-702 Functional profile for providing the TASE.2
                                     application service in end systems
·  IEC 60870-6-802 TASE.2 Object models

posted @ 2006-01-13 15:22 zfly 阅读(232) | 评论 (0) | 编辑 收藏
 
Cygwin(或linux) 中环境变量的配置(要区分BASH 和TCSH)

Cygwin 中环境变量的配置:
eg:
1. To see the current value of a particular
 variable, use "printenv ".
  
   > printenv HOME
   /home/yap

2. ":"-separated paths :为分割符
3. set PATH in BASH Shell as follows:
   > export PATH=.:/home/yap/bin:/bin:/usr/local/bin
  
4. in TCSH Shell, you would do:
   > setenv PATH=.:/home/yap/bin:/bin:/usr/local/bin
 
 This says to look first in the current directory ".", then /home/yap/bin,
 then /bin, and finally /usr/local/bin. 

5.
 Better still, since you do not know what the previous value
 of PATH is, it is best to simply append what you want to
 the front or back of the current value of PATH.
 
 > export PATH=.:/home/yap/bin:`printenv PATH`

posted @ 2006-01-09 12:54 zfly 阅读(5017) | 评论 (0) | 编辑 收藏
 
一些C经典用法(笔记)

2006.1.7 :底层C编写的常用 用法
  /* The following macros process structure members:  to determine the       */
  /* offset of a structure member from the beginning of the structure, and   */
  /* to detemine the size of a member of a structure.                        */

  #define DEFS_OFFSET(s,m)       (DEFS_UI16)&(((s *)0)->m)
  #define DEFS_MEMBER_SIZE(s,m)  sizeof(((s *)0)->m)

  /* The following macros make it easier to specify binary numbers. For      */
  /* example, to specify a byte in binary:  DEFS_BINARY(01100001) or to   */
  /* specify a word in binary:  DEFS_BINARY_WORD(00111101,11001010)       */

  #define DEFS_BINARY_CONVERT(byte) (((byte & 0x10000000L) / 0x200000L) +  \
                                        ((byte & 0x01000000L) / 0x040000L) +  \
                                        ((byte & 0x00100000L) / 0x008000L) +  \
                                        ((byte & 0x00010000L) / 0x001000L) +  \
                                        ((byte & 0x00001000L) / 0x000200L) +  \
                                        ((byte & 0x00000100L) / 0x000040L) +  \
                                        ((byte & 0x00000010L) / 0x000008L) +  \
                                        ((byte & 0x00000001L) / 0x000001L))

  #define DEFS_BINARY(byte) DEFS_BINARY_CONVERT(0x##byte)

  #define DEFS_BINARY_WORD(high,low) (DEFS_BINARY_CONVERT(0x##high) * 256) + \

2006.1.7 字节交换顺序

/* This is a set of routines for demonstrating the effects of
 byte ordering between little endian and big endian machines

 Big Endian (B_ENDIAN == TRUE):

  MSB [ n | n+1 | n+2 | n+3 ] LSB

 Little Endian (B_ENDIAN == FALSE):

  MSB [ n+3 | n+2 | n+1 | n] LSB

 little/big-endian is bitness as well.  For example,

  struct {
   short b:5,   --- we _want_ signed for the example ---
   c:11;
  };

 is stored in little-endian (gint32el) ['+' denotes sign bit]:

 tf_Bitstream view -->
   0123456789A BCDEF
  |-----c----+|--b-+|

 Whereas bigendian (Motorola) stores it thus:

 tf_Bitstream view -->
   FEDCB A9876543210
  |+-b--|+----c-----|

 So, you have to invert bits as well to convert endianness.

 #define Gettf_Bit(Val,Idx) ( ( (Val) & (1<<(Idx)) ) )
 #define Settf_Bit(Val,Idx,tf_Bit) ( ( (Val) & (~(1<<Idx)) ) | ((tf_Bit)<<(Idx)) )
 for ( i = 0; i < sizeof(Val)*8; i++)
    NewVal = Settf_Bit(NewVal,sizeof(Val)*8-i-1, Gettf_Bit(Val,i));
*/        

DNP
DnpMasterStart
  --> taskSpawn ("tDnpMaster", priority, VX_FP_TASK, 0x8000,
        (FUNCPTR) DnpMasterTask,
        (int) ini_name, 0, 0, 0, 0, 0, 0, 0, 0, 0)
       
   dnpMasterTask ---> dnp_init()
                 ---> ca_task_initialize()
                 ---> ca_add_fd_registration()
                 ---> 从配置文件中得到dnp的配置信息
                 ---> pdpdvrs_initDNP()
                 ---> addr_init()
                 ---> dnp_loop()
       
  DnpMasterAddDevice
  DnpMasterAdd8550
  DnpMasterAddText
 
  DNP PEER TO PEER
 
  一些debug信息
 
  物理层
   .利用查表法来确定链路层的长度
  --->. pdpphys_initPhysRecMgr 物理层初始化,分配内存
     . valid_address()
    . pdpphys_parseDNPframe() 
 
 
  DnpMasterTask
  

========================================================

  串口:从温旧梦

   非重叠模式优点 .直接
           .易移植
        缺点 .线程中读、写相互堵塞
           .线程间相互堵塞(包括读之间,写之间,读写之间)
 
        单片机,嵌入式如vxworks,任务中相对简单的程序中常用
 
   重叠模式 优点 .灵活,效率高(后台执行操作)
           .多线程间,线程中,读写操作不会相互堵塞
        缺点 .不那么直接
           .不易于移植
   
  EV_RXCHAR:事件通知模式用在非重叠模是一个比较好的方式,因为程序不用轮询串口,以节省CPU的thread quantum
        方式如下:
       DWORD dwCommEvent;
   DWORD dwRead;
   char  chRead;
   
   if (!SetCommMask(hComm, EV_RXCHAR))
      // Error setting communications event mask.
   
   for ( ; ; ) {
      if (WaitCommEvent(hComm, &dwCommEvent, NULL)) {
         if (ReadFile(hComm, &chRead, 1, &dwRead, NULL))
            // A byte has been read; process it.
         else
            // An error occurred in the ReadFile call.
            break;
      }
      else
         // Error in WaitCommEvent.
         break;
   }
   问题出现在:当多个字节连续的发送,第1个byte到,引起EV_RXCHAR 事件发生,
                          WaitCommEvent指示可读.第2个byte紧接着到,EV_RXCHAR只是在内部置位,
                          当第1个byte读完,调用WaitCommEvent时,系统再次指示EV_RXCHAR 事件发生,
                          可读第2个byte,问题出现在当第2个字符到达,而没有被读出时,第3个字符到
                          达了,此时系统也期望将对应于第3个字符的EV_RXCHAR置位,但是系统中的
                          EV_RXCHAR标志位已经被第2个已经置位了,于是就被忽略,当第2个自负读出
        后,只能在系统缓冲区,等待第4个字符到,而读出第3个字符,这样代码和系统
                          就失去同步。
         (我觉得这种情况在一般情况下不会出现,在单片机、
                               嵌入式应该是一个一个字符往外蹦,)
   
         而且WaitCommEvent会导致很多其它事件丢失,在高速情况下。
          
    解决办法是:利用ClearCommError判断缓冲中的字符个数,一次性读完所有到达字符


posted @ 2006-01-09 09:38 zfly 阅读(1571) | 评论 (0) | 编辑 收藏
 
工控方面的知识的 ==== 框架结构学习 好网站!
学学老外的一些思想
http://itco.web.cern.ch/itco/Projects-Services/JCOP/CompleteProjects/


posted @ 2006-01-06 10:53 zfly 阅读(533) | 评论 (2) | 编辑 收藏
 
FASTDB的表=对象的映射
FIELD(name)
Non-indexed field with specified name.

KEY(name, index_type)
Indexed field. index_type should be a combination of HASHED and INDEXED flags. When the HASHED flag is specified, FastDB will create a hash table for the table using this field as a key. When the INDEXED flag is specified, FastDB will create a (special kind of index) T-tree for the table using this field as a key.

RELATION(reference, inverse_reference)
Specifies one-to-one, one-to-many or many-to-many relationships between classes (tables). Both reference and inverse_reference fields should be of reference or of array of reference type. inverse_reference is a field of the referenced table containing the inverse reference(s) to the current table. Inverse references are automatically updated by FastDB and are used for query optimization
posted @ 2006-01-04 09:11 zfly 阅读(976) | 评论 (0) | 编辑 收藏
 
新年新气象!!!
      去年没有什么成就,只是开阔了自己的知识面,知识点!
新年要有新气象!!!改变自己,从自己开始,从小点滴开始。
目标要更加明确些!!
目标要更加具体些!!

implementation fastdb test




posted @ 2005-12-31 11:08 zfly 阅读(188) | 评论 (0) | 编辑 收藏
 
仅列出标题
共14页: First 6 7 8 9 10 11 12 13 14 
 
<2006年4月>
日一二三四五六
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

 公告


我创建的群:21159852,欢迎大家加入! ( Scada,DCS,PLC, RTU,VxWorks, Linux,104,101, DNP,MODBUS ...... )

 导航

  • IT博客
  • 首页
  • 发新随笔
  • 发新文章
  • 联系
  • 管理

 统计

  • 随笔: 137
  • 文章: 3
  • 评论: 97
  • 引用: 0

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿(9)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(141)

  • 学习C C++(28) (rss)
  • 本人作品 ---下载(3) (rss)
  • 生活(47) (rss)
  • 知识(47) (rss)
  • 通讯规约(16) (rss)

随笔档案(137)

  • 2009年2月 (1)
  • 2008年6月 (3)
  • 2008年4月 (1)
  • 2008年2月 (2)
  • 2007年12月 (1)
  • 2007年11月 (1)
  • 2007年10月 (2)
  • 2007年9月 (1)
  • 2007年8月 (2)
  • 2007年7月 (4)
  • 2007年6月 (4)
  • 2007年5月 (4)
  • 2007年4月 (6)
  • 2007年3月 (4)
  • 2007年2月 (2)
  • 2007年1月 (1)
  • 2006年12月 (1)
  • 2006年11月 (1)
  • 2006年9月 (6)
  • 2006年8月 (12)
  • 2006年7月 (1)
  • 2006年6月 (6)
  • 2006年5月 (9)
  • 2006年4月 (3)
  • 2006年3月 (10)
  • 2006年2月 (10)
  • 2006年1月 (11)
  • 2005年12月 (12)
  • 2005年11月 (2)
  • 2005年10月 (6)
  • 2005年9月 (8)

文章分类(2)

  • 技术类(2) (rss)

文章档案(3)

  • 2013年1月 (1)
  • 2008年4月 (1)
  • 2005年8月 (1)

相册

  • SCADA

上传

  • about apache
  • 学习工业控制方面 -知识的好网站
  • 学学老外的思想!

最新随笔

  • 1. 好久没上来了哦
  • 2. 看看未来的节能车,61850竟然也包括其通讯
  • 3. News on IEC 61850
  • 4. 口乃心户之门!
  • 5. 活着!
  • 6. 在HK
  • 7. On-business
  • 8. life..
  • 9. AB PLC
  • 10. AN OVERVIEW OF REAL-TIME DATABASE SYSTEMS

搜索

  •  

积分与排名

  • 积分 - 112262
  • 排名 - 66

最新评论

  • 1. re: IEC104
  • 能否给我一份代码呢。最近刚开始学习104规约,邮箱是270797194@qq.com。不胜感激啊
  • --兵兵
  • 2. re: IEC104
  • 请将源码发给我学习学习啊,lucas_woo@gmail.com。谢谢!!!
  • --ww
  • 3. re: 哎,老有人问我Modbus CRC 算法!! 今天贴出代码!!(超值)以后不再回答
  • 嗯,楼主,谢谢了
  • --sanwen
  • 4. re: 下步学习内容!(下一代规约... ... ASN.1不学不行啊!!)
  • 貌似asnlab 的 ADT软件确实不错,编解码速度快,
  • --迷你猫
  • 5. re: 下步学习内容!(下一代规约... ... ASN.1不学不行啊!!)
  • 从来没接触过asn。1,如何可以最快上手?期待,lengshu66@163.com
  • --me

阅读排行榜

  • 1. Cygwin(或linux) 中环境变量的配置(要区分BASH 和TCSH)(5017)
  • 2. 下步学习内容!(下一代规约... ... ASN.1不学不行啊!!)(4992)
  • 3. 哎,老有人问我Modbus CRC 算法!! 今天贴出代码!!(超值)以后不再回答(4843)
  • 4.  1M带宽到底是多少?和磁盘的1M有什么区别?(4618)
  • 5. 查看. ODT文件! 同时支持windows 和linux(3455)

评论排行榜

  • 1. IEC104(27)
  • 2. 下步学习内容!(下一代规约... ... ASN.1不学不行啊!!)(11)
  • 3. http://www.xialala.com/(11)
  • 4.  1M带宽到底是多少?和磁盘的1M有什么区别?(10)
  • 5. 查看. ODT文件! 同时支持windows 和linux(6)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 zfly