资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
1OpenPLC 对不同数据类型的寻址方式对不同数据类型的寻址方式 史珺 德维森科技(深圳)有限公司 1 数据类型数据类型 PLC 内部的每个可寻址的内存在进行访问时,都要通过一些代号来进行寻址的,这些 地址代号也含有许多关于数据的其它信息,如数据位,数据类型等。 在程序中的常数通常要加一个前缀,因此,OpenPLC 可以知道如何将它翻译成二进制 数。 1 位(bit)是布尔代数类型的数据元素,现代计算机技术的发展已经不在逐位 地读写数据了,位是一组一组(以字节或字的形式)地存在内存中的,因此,对每一位的寻 址首先要对字节或字进行寻址,然后再确定是哪一位。 2 一个字节(Byte)由 8 位组成, 可以是独立的 8 位数, 但通常都是按一个整数 (0 到 255)来看待。一个字(word)则由 16 位组成,一个 16 位的内存可以存储独立的 16 位数, 也可以将之看成一个从 0 到 65535 之间的整数,或者按有符号数,看作-32768 到+32767 的 整数。新的 OpenPLC 提供了双精度数,由 32 位整数组成,大约范围是从-20 亿到+20 亿之 间的整数。 3 OpenPLC 为以定时器和计数器的格式专门预留了 16 位的内存区域,供 OpenPLC 的定时器和计数器用。虽然每个 OpenPLC 的制造商的格式不同,但通常都是包括 预设值、累计值和一些状态位。前一章对 OpenPLC 的定时器和计数器已经作了介绍。 4 中型以上的 OpenPLC 预留了 32 位的浮点数,现在已经出现了 64 位的 OpenPLC,可以进行复杂的科学计算。 5 对于键盘的文本和字母有 ASCII 码的方式,每个 ASCII 码占 8 位内存。 6 新型的 OpenPLC 现在允许数组的使用,对 ASCII 码的数组则成为字符串。 7 一组没有共同特点不属同一类型的数,成为一个结构(STRUCTURE) ,可以 由一写现代化的 OpenPLC 控制器来处理,数据结构中包含数组,甚至还包括其它的数据结 构,有的 PLC 的定时器和计数器是放在数据结构中的。 8 指针是以 PLC 能够解释的方式存在数据内存区的内存的地址。指针是用来间 接寻址的。 为了防止用户编程时将不同的地址和数据的类型混淆,OpenPLC 对于编程时的指令有 一些保护措施,如防止改变输入映射表和对 ASCII 码的区域不能改写等,此外,有的指令 也只能操作特定的数据类型。 2 寻址方式寻址方式 PLC 允许程序员采用几种寻址方式来在程序中输入内存的地址: 1、 常数。常数是程序中用到的一个数,编程人员不需要知道它在内存中的地址, 但是因为它确实存在于内存的某个地方,因此,常数也有一个寻址方式,就称2之为常数方式。 2、 最普通的寻址方式是绝对地址模式。它给出了数据存储的准确的地址,通常以 一个字符表示数据类型,随后跟一个数字表示内存的位置,所有的 PLC 都允许 绝对寻址方式。 3、 符号寻址。是绝对寻址的变种。程序员用编程器输入一个表格,给每个绝对地 址对应一个字符, 程序员只要输入这个字符, 编程器就会将他转换为绝对地址。 4、 索引寻址, 或者允许程序员采用可交换的数据块的方式。 这两种方式十分类似。 用索引寻址方式,首先要在预先指定的一个内存的位置中放置一个偏移量,当 PLC 遇到一个指令包括一个基本地址指向一个偏移量,PLC 则将把偏移两与基 本地址相加,即得到要处理的数据的绝对地址。一般,如果在地址前面有#号标 志的,就表示该地址是一个索引地址。而数据块的方式是,用户程序先调用一 个数据块 (等于建立一个偏移量) , 以后的地址就是从该地址起始的加上偏移量 的地址。 5、 有些 PLC 可以采用间接寻址的方式,当 PLC 遇到一个地址属于间接寻址方式 时,PLC 首先读出该地址的内容,把该地址作为内存的绝对地址,再去处理该 绝对地址的内存。第一个地址放的是一个指针,该指针指向第二个地址。 6、 还有些 PLC 编程采用正式操作符的方式定义所代表的数值, 这样一个程序中的 数可以由另一个程序来提供和使用。这样,一个字符的正式的操作符的名称在 程序里就被用来代替了实际的地址。由于 IEC1131-3 标准中,每个不同程序和 功能需要在内存中有一部分是只能供自己这个程序使用, 不能被其它程序使用。 当这个 IEC1131-3 的标准实现后,将有更多的 PLC 支持使用正规操作符。 3 OpenPLC 对各类数据类型的寻址方式对各类数据类型的寻址方式 OpenPLC 的 CPU 内存中,包括着由程序文件和数据文件组成的处理器文件,这些文件 是 CPU 必须的。其中,程序文件由包含用户程序和操作系统组态信息,数据文件包括用户 的数据和程序文件所需要的系统组态数据。 数据文件是一直保留的, 只要后备电池没有耗尽, 即使掉电或者是不在运行模式,都不会丢失,除非是通过程序有意进行改动或删除。这一点 是 OpenPLC 与其它 PLC 的不同之处,其它 PLC 的数据内存是可变内存,当 PLC 不在运行 模式后,内存就被自动清除。 3.1 OpenPLC 的常数和各类数据文件的常数和各类数据文件 OpenPLC 的常数的常数 在 OpenPLC 程序中,常数可以直接被输入,不需要寻址,以下是 OpenPLC 可以输入 的常数类型: 1 有符号整数,范围从-32768 到 32767 2 大的十进制数可以用浮点方式输入,范围与下面科学计数的范围一样。 3 科学计数可以采用指数方式,最大是 32 位数。按照 IEEE 754 规定的浮点数标准, 可以达到(1.17549410-38到3.40282810+38) 4 16 进制数,八进制,二进制和 ASCII 常数都可以被相关的指令接受,但要加合适 的前缀,这些前缀是: a) &H,表示 16 进制,范围从 0 到 FFFF,(如,&HFF06) 3b) &O,表示 8 进制数,范围从 0-177777,(如&O177000) c) &B,表示二进制数,位数 CPU 的位数一样(如&B0010101111001010) d) &A,表示 ASCII 码,(如&Ahi) OpenPLC 的数据文件的数据文件 OpenPLC 的用户程序中,只要不是常数的数据,都要以数据文件的方式放在 OpenPLC 的可寻址内存中。每个数据文件用来存储一个字节的数据,OpenPLC 中一共有三种基本的 数据文件: O 输出映射数据字, I 输入映射数据字; S 状态字; 包含OpenPLC的组态信息和描述OpenPLC的运行和操作条件的状态数据; 除了以上三种数据文件外, 对于一些特殊的用户数据类型还有另外的一些数据文件。 有 些是被默认用来作为一些特殊类型的数据的文件的,有: B3 16 位字的位存储 T4 定时器数据结构,每个有三个数据字 C5 计数器数据机构,每个有三个数据字 R6 控制数据结构,每个有三个数据字 N7 整数数据字存储 F8 浮点数存储 其它还有很多不对应数据类型的数据文件, 如对 PPC21 的 10 到 255, PPC31 的 9 到 999, 这些可以附加的存储器,可以用来存储为、定时器、计数器、控制元素、整数、浮点数,或 者存储其它任何下面所描述的数据类型。在编程时,输入一个数据文件的文件号码,就会将 该数据文件和类型与这个号码对应起来,比如,创建一个数据文件 12,作为一个附加的位 存储数据文件,可以按如下方式写程序: B12/X,或者,B12:x, 或者,B12:x/x 这个指令将把文件 12 定下来用作位存储(X,必须是一个有效位或者字地址,位文件 的地址结构将在后面叙述) 。数据文件也可以通过编程单元的文件生成功能被用来预定为特 殊的数据类型。 OpenPLC 的状态文件的状态文件 状态文件通常是默认的。每个 16 位的状态字包含着 OpenPLC 的组态数据或者当 OpenPLC 运行和操作时,描述其条件的状态数据。任何状态字都可以被用户访问,大多数 状态字是动态的, 用户程序可以对之进行改写, 比如当用户程序运行时, 希望改变 OpenPLC 的组态方式。也有一些状态字是静态的,它们只能在 OpenPLC 处于编程模式的时候才能被 改变。状态字是由下列方式进行能够寻址的: S:e “e”表示一个 16 位的状态字元素的树木, (如 S:1,表示一个数据字包 含 16 个处理器的状态位) 第一个状态字的编号为 0,最后一个随着 OpenPLC 的型号的不同而不同。单个的状态 位也可以用布尔逻辑来寻址,如: S:e/b “b”是一个从 0 到 15 的数,表示要操作的是哪一位(如 S:1/15 表示要 操作字 1 的最高位;这个重要的状态位每次当 OpenPLC 切换到运行模式时,每个扫描周期4就增加一次。 OpenPLC 的位文件的位文件 位文件是用来进行位存储的。文件 3 是被默认作为位文件,寻址的前缀是“B3” 。前缀 “B”也用在其它没有使用的文件号码上,将该文件作为附加的位文件。当用来作为位存储 时,文件 3 的单个位通常用下面的方法寻址: B3/b “b”是一个从 0 到 4096 的数, OpenPLC 也允许在位存储文件中,用不同的办法来寻址位,由于所有的位都是 16 位字 的一个组成部分,因此,也可以按下面的方式: B3:e/b 其中, “e”是一个字元素,从 0 到 255, “b”是一个从 0 到 15 的数, 表示该字的某一位。 上述两种方法其实是一样的。位文件是由 16 位的数据字组成的,这些字也可以作为整 个字来进行处理,整体位数据字可以用如下方式来寻址和操作: B3:e “e”是一个从 0 到 255 的字元素, (新的 PPC31 可以从 0 到 999) OpenPLC 的定时器结构文件的定时器结构文件 文件 4 是被缺省地作为定时器的文件的。这个文件中的所有的数据都必须加前缀 T4。 每个定时器元素结构由三个 16 位数据字构成,安排如图 4.3。 图 4.3 OpenPLC 的定时器数据结构 编程时,对整个定时器的结构字采用如下方式来寻址: T4:/e “e”是一个从 0 到 255 的数字,表示三字结构元素的数量。 每个定时器数据字结构中的数据字也可以作为单独的一个字被寻址,方式如下: T4:e.m 其中, “e”是三字结构元素的序号, “m”是按照规定的区分各个数据字 的代号,如 ACC,表示累计值,PRE 表示预先设定值。如果不用代号,就用序号也可以, 那么,m 就表示 0,1,2,内容见图 4.3。 累计值 预先设定值 0 15EN 15 TT 14 DN 13 字: 1 2 3 5对于定时器的状态,可以用如下方式来寻址定位: T4:e.m 其中,m 表示三个状态位的代号,如 TT,DN,EN 等。比如,T4:3.TT 就表示定时器 3 的 TT 位的状态。 OpenPLC 的计数器结构文件的计数器结构文件 文件 5 是被默认为计数器的数据结构的。对这个文件的数据进行寻址时,必须加上前 缀“C5” ,每个三字结构的格式见图 4.4。 图 4.4 OpenPLC 的计数器字结构 对计数器的寻址与定时器的寻址方式类似。见下面: C5:e 对三字结构计数器元素寻址 C5:e.m 对结构中的子元素的一个字或者状态位进行寻址。 字中的 m 可以是缩写代号,也可以是数字,但对状态位时,必须是缩写代号。 OpenPLC 的控制结构文件的控制结构文件 文件 6,是 OpenPLC 预定作为控制数据结构的文件。控制结构文件中的数据在寻址时 必须加上前缀“R6” (之所以用“R”作为前缀是因为,英文 CONTROL 的前面四个字在 OpenPLC 开发出控制元素之前,已经被用作计数器、输
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号