版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OpenPLC 对不同数据类型的寻址方式史珺科技()1 数据类型PLC的每个可寻址的内存在进行时,都要通过一些代号来进行寻址的,这些地址代号也含有许多关于数据的其它信息,如数据位,数据类型等。在程序中的常数通常要加一个前缀,因此,OpenPLC 可以知道如何将它翻译成二进制数。1位(bit)是代数类型的数据元素,现代计算机技术的发展已经不在逐位地读写数据了,位是一组一组(以字节或字的形式)地存在内存中的,因此,对每一位的寻址首先要对字节或字进行寻址,然后再确定是哪一位。2到 255)来一个字节(Byte)由 8 位组成,可以是独立的 8 位数,但通常都是按一个整数(0。一个字(word)则由
2、16 位组成,一个 16 位的内存可以独立的 16 位数,也可以将之看成一个从 0 到 65535 之间的整数,或者按有符号数,看作-32768 到的整数。新的 OpenPLC 提供了双精度数,由 32 位整数组成,大约范围是从-20 亿到+20 亿之间的整数。3wwOpenPLC 为以定时器和计数器的格式专门预留了 16 位的内存区域,供OpenPLC 的定时器和计数器用。虽然每个 OpenPLC 的制造商的格式不同,但通常都是包括预设值、累计值和一些状态位。前一章对 OpenPLC 的定时器和计数器已经作了介绍。4中型以上的 OpenPLC 预留了 32 位的浮点数,现在已经出现了 64
3、位的OpenPLC,可以进行复杂的科学计算。567对于键盘的文本和字母有 ASCII 码的方式,每个 ASCII 码占 8 位内存。 新型的 OpenPLC 现在允许数组的使用,对 ASCII 码的数组则成为字符串。一组没有共同特点不属同一类型的数,成为一个结构(STRUCTURE),可以由一写现代化的 OpenPLC 控制器来处理,数据结构中包含数组,甚至还包括其它的数据结构,有的 PLC 的定时器和计数器是放在数据结构中的。8接寻址的。指针是以 PLC 能够解释的方式存在数据内存区的内存的地址。指针是用来间为了防止用户编程时将不同的地址和数据的类型,OpenPLC 对于编程时的指令有一些保
4、护措施,如防止改变输入也只能操作特定的数据类型。表和对 ASCII 码的区域不能改写等,此外,有的指令2 寻址方式PLC 允许程序员采用几种寻址方式来在程序中输入内存的地址:1、常数。常数是程序中用到的一个数,编程不需要知道它在内存中的地址,但是因为它确实存在于内存的某个地方,因此,常数也有一个寻址方式,就称1之为常数方式。最普通的寻址方式是绝对地址模式。它给出了数据2、的准确的地址,通常以一个字符表示数据类型,随后跟一个数字表示内存的位置,所有的 PLC 都允许绝对寻址方式。符号寻址。是绝对寻址的变种。程序员用编程器输入一个表格,给每个绝对地址对应一个字符,程序员只要输入这个字符,编程器就会
5、将他转换为绝对地址。索引寻址,或者允许程序员采用可交换的数据块的方式。这两种方式十分类似。用索引寻址方式,首先要在预先指定的一个内存的位置中放置一个偏移量,当 PLC 遇到一个指令包括一个基本地址指向一个偏移量,PLC 则将把偏移两与基本地址相加,即得到要处理的数据的绝对地址。一般,如果在地址前面有#号标志的,就表示该地址是一个索引地址。而数据块的方式是,用户程序先调用一个数据块(等于建立一个偏移量),以后的地址就是从该地址起始的加上偏移量的地址。有些 PLC 可以采用间接寻址的方式,当 PLC 遇到一个地址属于间接寻址方式时,PLC 首先读出该地址的内容,把该地址作为内存的绝对地址,再去处理
6、该绝对地址的内存。第一个地址放的是一个指针,该指针指向第二个地址。还有些 PLC 编程采用正式操作符的方式定义所代表的数值,这样一个程序中的数可以由另一个程序来提供和使用。这样,一个字符的正式的操作符的名称在程序里就被用来代替了实际的地址。由于 IEC1131-3 标准中,每个不同程序和功能需要在内存中有一部分是只能供自己这个程序使用,不能被其它程序使用。3、4、5、6、当这个 IEC1131-3 的标准实现后,将有的 PLC 支持使用正规操作符。ww3OpenPLC 对各类数据类型的寻址方式OpenPLC 的 CPU 内存中,包括着由程序文件和数据文件组成的处理器文件,这些文件是 CPU 必
7、须的。其中,程序文件由包含用户程序和操作系统组态信息,数据文件包括用户的数据和程序文件所需要的系统组态数据。数据文件是一直保留的,只要后备电池没有耗尽,即使掉电或者是不在运行模式,都不会丢失,除非是通过程序有意进行改动或删除。这一点是 OpenPLC 与其它 PLC 的不同之处,其它 PLC 的数据内存是可变内存,当 PLC 不在运行模式后,内存就被自动清除。3.1 OpenPLC 的常数和各类数据文件OpenPLC 的常数在 OpenPLC 程序中,常数可以直接被输入,不需要寻址,以下是 OpenPLC 可以输入的常数类型:123有符号整数,范围从-32768 到 32767大的十进制数可以
8、用浮点方式输入,范围与下面科学计数的范围一样。科学计数可以采用指数方式,最大是 32 位数。按照 IEEE 754 规定的浮点数标准,可以达到(1.17549410-38 到3.40282810+38)16 进制数,八进制,二进制和 ASCII 常数都可以被相关的指令接受,但要加合适的前缀,这些前缀是:4a)&H,表示 16 进制,范围从 0 到F,(如,&HFF06)2b)c)d)&O,表示 8 进制数,范围从 0-177777,(如&O177000)&B,表示二进制数,位数 CPU 的位数一样(如&B0010101111001010) &A,表示 ASCII 码,(如&Ahi)OpenPL
9、C 的数据文件OpenPLC 的用户程序中,只要不是常数的数据,都要以数据文件的方式放在 OpenPLC的可寻址内存中。每个数据文件用来一个字节的数据,OpenPLC 中一共有三种基本的数据文件:O IS输出输入数据字,数据字;状态字;包含OpenPLC 的组态信息和描述OpenPLC 的运行和操作条件的状态数据;除了以上三种数据文件外,对于一些特殊的用户数据类型还有另外的一些数据文件。有些是被默认用来作为一些特殊类型的数据的文件的,有:B3 T4 C5 R6 N7F816 位字的位定时器数据结构,每个有三个数据字计数器数据机构,每个有三个数据字控制数据结构,每个有三个数据字 整数数据字浮点数
10、ww其它还有很多不对应数据类型的数据文件,如对 PPC21 的 10 到 255,PPC31 的 9 到 999,这些可以附加的器,可以用来为、定时器、计数器、控制元素、整数、浮点数,或者其它任何下面所描述的数据类型。在编程时,输入一个数据文件的文件号码,就会将该数据文件和类型与这个号码对应起来,比如,创建一个数据文件 12,作为一个附加的位数据文件,可以按如下方式写程序:B12/X,或者,B12:x, 或者,B12:x/x这个指令将把文件 12 定下来用作位(X,必须是一个有效位或者字地址,位文件的地址结构将在后面叙述)。数据文件也可以通过编程单元的文件生成功能被用来预定为特殊的数据类型。O
11、penPLC 的状态文件状态文件通常是默认的。每个 16 位的状态字包含着 OpenPLC 的组态数据或者当OpenPLC 运行和操作时,描述其条件的状态数据。任何状态字都可以被用户,大多数状态字是动态的,用户程序可以对之进行改写,比如当用户程序运行时,希望改变 OpenPLC的组态方式。也有一些状态字是静态的,它们只能在 OpenPLC 处于编程模式的时候才能被改变。状态字是由下列方式进行能够寻址的:S:e“e”表示一个 16 位的状态字元素的树木,(如 S:1,表示一个数据字包含 16 个处理器的状态位)第一个状态字的为 0,最后一个随着 OpenPLC 的型号的不同而不同。单个的状态位也
12、可以用S:e/b操作字 1 的最逻辑来寻址,如:“b”是一个从 0 到 15 的数,表示要操作的是哪一位(如 S:1/15 表示要;这个重要的状态位每次当 OpenPLC 切换到运行模式时,每个扫描周期3就增加一次。OpenPLC 的位文件位文件是用来进行位的。文件 3 是被默认作为位文件,寻址的前缀是“B3”。前缀 “B”也用在其它没有使用的文件号码上,将该文件作为附加的位文件。当用来作为位时,文件 3 的单个位通常用下面的方法寻址:B3/b“b”是一个从 0 到 4096 的数,OpenPLC 也允许在位文件中,用不同的办法来寻址位,由于所有的位都是 16 位字的一个组成部分,因此,也可以
13、按下面的方式:B3:e/b其中,“e”是一个字元素,从 0 到 255, “b”是一个从 0 到 15 的数,表示该字的某一位。上述两种方法其实是一样的。位文件是由 16 位的数据字组成的,这些字也可以作为整个字来进行处理,整数据字可以用如下方式来寻址和操作:B3:e“e”是一个从 0 到 255 的字元素,(新的 PPC31 可以从 0 到 999)OpenPLC 的定时器结构文件文件 4 是被缺省地作为定时器的每个定时器元素结构由三个 16 位数据字件中的所有的数据都必须加前缀 T4。,安排如图 4.3。ww字:123图 4.3 OpenPLC 的定时器数据结构编程时,对整个定时器的结构字
14、采用如下方式来寻址:T4:/e“e”是一个从 0 到 255 的数字,表示三字结构元素的数量。每个定时器数据字结构中的数据字也可以作为单独的一个字被寻址,方式如下:T4:e.m其中,“e”是三字结构元素的序号,“m”是按照规定的区分各个数据字的代号,如 ACC,表示累计值,PRE 表示预先设定值。如果不用代号,就用序号也可以,那么,m 就表示 0,1,2,内容见图 4.3。4EN 15TT 14DN 13预先设定值累计值对于定时器的状态,可以用如下方式来寻址定位:T4:e.m其中,m 表示三个状态位的代号,如 TT,DN,EN 等。比如,T4:3.TT就表示定时器 3 的 TT 位的状态。Op
15、enPLC 的计数器结构文件文件 5 是被默认为计数器的数据结构的。对这个文件的数据进行寻址时,必须加上前缀“C5”,每个三字结构的格式见图 4.4。字:012* 有些OpenPLC 将第 10 位作为附加的状态位,代号为UA。图 4.4 OpenPLC 的计数器字结构ww对计数器的寻址与定时器的寻址方式类似。见下面:C5:eC5:e.m对三字结构计数器元素寻址对结构中的子元素的一个字或者状态位进行寻址。字中的 m 可以是缩写代号,也可以是数字,但对状态位时,必须是缩写代号。OpenPLC 的控制结构文件文件 6,是 OpenPLC 预定作为控制数据结构的文件。控制结构文件中的数据在寻址时必须
16、加上前缀“R6”(之所以用“R”作为前缀是因为,英文 CONTROL 的前面在OpenPLC 开发出控制元前,已经被用作计数器、输出、整数、定时器了)。三字结构的字:012格式见图 4.5。* 位0-7 在后期的OpenPLC 产品中被5EN 15EU 14DN 13EM 12ER 11UL 10IN 9FD 8*LEN(位阵列/文件的长度)(位指针/位置)CU 15CD 14DN 13OV 12UN 11* 10PREACC用来错误代码。图 4.5 OpenPLC 的控制字结构控制数据可按如下方式进行寻址:R6:eR6:e.m寻找 3 字的控制器元素寻找三字结构中的某个字,或者某个位。如果是
17、对位进行寻址,则必须用该位的缩写代号。OpenPLC 的整数文件文件 7 是被预定作为整数的区域的,整数的范围是-32768 到。每个整数值都存在一个 16 位的二进制数中。这个文件中的单个的数据可以采用如下方式寻址:N7:ee 代表文件中的某个字,范围是从 0-999。文件中的单个位也可以采用下列方式寻址:N7:e.bb 是一个数据中位的地址,为从 0 到 15 的整数。OpenPLC 的浮点数结构文件ww文件 8 是 OpenPLC 默认为用来预定存放浮点数的内存区域。浮点数的范围是( 1.17549410-38 到3.40282810+38),是根据 IEEE754 的浮点数编码标准格式
18、来进行编码的,需要 32 位。因此,每个浮点数需要两个 16 位的数据字,单个的位和 16 位字都无法被寻址(实际也没有必要),因此,浮点数的寻址很简单:F8:ee 代表元素的号码。范围从 0-999(或从 0-255)。OpenPLC 的 ASCII 字符文件对于 ASCII 字符文件,OpenPLC 没有默认的文件,但任何没有用到的文件都可以预定为 ASCII 字符。ASCII 字符包括原始的标准电传键盘字符集,对每个字符,都有一个 7 位的二进制数对应。ASCII 字符目前是用来将键盘字符进行二进制化的最常见的方式。在 OpenPLC 的 ASCII 字符文件中,每个编码都存在一个 16
19、 位字的一半中,因此,一个 16 位字可以两个字符。由于 OpenPLC 不允许对字节寻址,因此,每个 ASCII 文件的元素包括两个 ASCII字符。ASCII 文件的寻址方式如下:Af:e数,包含两个 ASCII 码)Af:e.bf 代表文件的序号, e 是文件中字的序号(每个字是一个 16 位b 代表该两个 ASCII 码的位的序号,从 0 到 15。6OpenPLC 的字符串数组文件对于字符串数据的,OpenPLC 也没有默认的指定区,但任何没有用到的数据文件都可以被预存。每个字符串由一系列的 42 个 16 位字的字符集组成,其中,第一个数据字包括一个描述当前该字符串中的 ASCII
20、 字符的实际数量的数字。随后的 16 位字,每个字都包含两个 ASCII 字符,如图 4.6 所示。(图中显示的是 ASCII 字符,但实际码)。的是 ASCII字:01234。图 4.6 OpenPLC 的字符串文件的 ASCII 码方式。OpenPLC 提供了对字符串进行操作的指令,只有用这些指令才可以对字符串元素、对其中的字和某个字的位都可以操作,这是由于 OpenPLC 不允许对单个字符串或位进行寻址,而只允许对每个字符串的第一个字进行寻址,该字是表示字符串所包含的 ASCII 字符的数目的。第一个字可以用下列方法寻址:wwSTf:e.LEN其中,f 是文件的序号,而 e 是字符串元素
21、的号码。3.2 OpenPLC 的间接寻址和 I/O 寻址间接寻址OpenPLC 提供了间接寻址功能。在间接寻址方式中,本来代表地址的数字由一个表示地址的表达式来代替了。例如,间接地址“NB3:4:1”实际上就表示“N7:1”(条件是 B3:4 位置包含的数字是 7)。间接寻址的中间参数必须用方括号代替。文件号、字号、位号都可以用另外一个地址的内容来间接表示。而在定时器、计数器和控制结构中,只有数据字才能用来进行间接寻址。以下给出一些间接寻址的例子:NN7:1:5 B3:N7:1 B3/N7:1 N9:5/N7:1O:N7:1如果 N7:1 包含的数为“16” ,表示 N16:5;如果 N7:
22、1 包含的数为“16” ,表示 B3:16,如果 N7:1 包含的数为“16” ,表示 B3/16无效,因为只能在位文件中才能对位进行间接寻址。如果 N7:1 包含的数为“16” ,表示 O:16。C5:B3:1.ACC 如果 B3:1 中的数为 2,则表示 C5:2.ACCC5:2.B3:1来表示无效,因为在计数器的状态位中,必须以缩写字母75HeILoST9:B3:1.5 ST9:1.B7:1间接寻址是不允许的。SC10:B3:1.TIM无效。因为不能对字符串进行间接寻址;无效,因为对定时器、计数器和控制元件之外的字结构进行如果 B3:1 中的数为 2,则表示 SC10.2。I/O 寻址数
23、据文件 0 是指定作为输出表的数据的,寻址时前面必须加上前缀“O:”。数据文件 1 是制定作为输入八进制数。表的数据的,寻址时,要加前缀“I:”,输入和输入表的地址采用对 16 位的输入输出表中的数据字进行寻址的格式如下:p:e其中,前缀 p 是字母 O 或 I,e 是三位的八进制数。头两位数表示逻辑的机架,最后一位表示 I/O 的分组,即与该表对应的 I/O 模块的实际位置。例如,I:123 是在机架 12 上的第三个组 I/O 的模块所对应的输入表中的对应 16位字的数据的地址;又如,O:027 指机架 02 上的第七个模块所对应输出16 位数据的地址。I/O 模块的单个位也可以寻址:表中
24、的p:e/dd 指要操作的 16 位数中的哪一位,该数为八进制数,对 16 位数来说,地址为 00-07 和 10-17。如,I:123/04,指第 12 个逻辑机架的第三个 I/O 组的第 5 位。ww3.3 OpenPLC 对几种特殊类型的数据文件的寻址方式OpenPLC 的没有用的数据文件区可以用来进行各类数据的。这里介绍其中的几种。块转移结构文件在高端(中型以上的)OpenPLC 的 CPU 模块中,没有使用的数据文件可以用来由六字结构组成的块转移元素。块转移元素是用来当 CPU 向或者从一个智能 I/O 器件进行数据传送时,用来控制数据的。在块转移元素中,对个别字或位的寻址是不允许通
25、过数字进行的,他们只能通过缩写字母来进行寻址。块转移元素的寻址方式如下:BTf:e为对于整个六字结构的寻址,其中,f 是可用的数据文件之一,范围为3-999, e 是该文件的元素,范围为 0-999。对于元素中一个 16 位的数据字或者单一的状态位。M 是字的缩写,包括 RLEN,DLEN, FILE,和 WORD;m 是个别状态位的缩写助记符,包括 EN,ST,DN,ER,CO,EW,NR,TO,RW 等。BTf:e.m短讯控制结构文件在高端(中型以上的)OpenPLC 的 CPU 模块中,没有使用的数据文件可以用来由用来进行短讯控制的 56 字结构。当用户程序中包含 MSG 指令通过 DH
26、+局域网来发送或接受数据时,MSG 命令必须以下列格式注明短讯控制元素,这样 OpenPLC 才能用短讯控制方式进行的处理:8MGf:ef 是可用的数据文件(从 3999),e 是该数据文件中 56字的短讯控制元素的号码(0-999),56 字结构包括状态位和字,这些位和字可以通过用户程序中其它的指令来进一步寻址:MGf:e.m位的字。其中, m 是一个缩写助记符,可以是一个状态位,也可以是一个 16结构文件在高端(中型以上的)OpenPLC 的 CPU 模块中,没有使用的数据文件可以用来通过指令进行控制的 82 字结构的数据。指令和数据结构元素将在第 12 章中介绍。用法如下:PDf:e数据
27、元素的元素号码。f 是一个可以得到的数据文件(3 到 999),e 是该文件中 82 字OpenPLC 的新的用下述方式来寻址:数据元素结构包括数据字和状态位,以及浮点数值。每个值可以PDf:e.m或者一个 32 位的浮点数。其中,m 是一个缩写符,可以是一个状态位,一个 16 位字,wwSFC 步进计时器在高端(中型以上的)OpenPLC 的 CPU 模块中,没有使用的数据文件可以用来三字结构的 SFC 步进定时器的数据。SFC 步进定时器可以让编程单元监视结构化流程图的程序,显示每一步的 SFC 程序的时间状态,用户程序可以对每一个 SFC 步骤的 SFC 定时器的单个字和状态位进行寻址,
28、格式如下:SCf:eSCf:e.m用来对三字结构的计数器进行寻址用来对一个三字结构的 SFC 的定时器的数据字子元素和状态位,m 是缩写助记符,字的缩写包括 PRE 和 TIM,状态位的缩写包括 SA,FS,LS,OV,ER,和 DN。本节完9OpenPLC 对各类数据类型的寻址方式OpenPLC 的 CPU 内存中,包括着由程序文件和数据文件组成的处理器文件,这些文件是CPU 必须的。其中,程序文件由包含用户程序和操作系统 组态 信息,数据文件包括用户的数据和程序文件所需要的系统 组态 数据。数据文件是一直保留的,只要后备电池没有耗尽,即使掉电或者是不在运行模式,都不会丢失,除非是通过程序有
29、意进行改动或删除。这一点是 OpenPLC 与其它 PLC 的不同之处,其它 PLC 的数据内存是可变内存,当 PLC 不在运行模式后,内存就被自动清除。一、OpenPLC 的常数和各类数据文件OpenPLC 的常数在 Open PLC 程序 中,常数可以直接被输入,不需要寻址,以下是 OpenPLC 可以输入的常数类型:1有符号整数,范围从-32768 到 32767大的十进制数可以用浮点方式输入,范围与下面科学计数的范围一样。科学计数可以采用指数方式,最大是 32 位数。按照 IEEE 754 规定的浮点数标准,可以达到(1.17549410-38 到3.40282810+38)416 进
30、制数,八进制,二进制和 ASCII 常数都可以被相关的 指令 接受,但要加合适的前缀,这些前缀是:a)&H,表示 16 进制,范围从 0 到F,(如,&HFF06)b)&O,表示 8 进制数,范围从 0-177777,(如&O177000)c)&B,表示二进制数,位数 CPU 的位数一样(如&B0010101111001010)d)&A,表示 ASCII 码,(如&Ahi)wwOp的数据文件OpenPLC 的用户程序中,只要不是常数的数据,都要以数据文件的方式放在 OpenPLC一个字节的数据,OpenPLC 中一共有三种基本的数据文件:的可寻址内存中。每个数据文件用来OI输出输入数据字,数据
31、字;S状态字;包含 OpenPLC 的 组态 信息和描述 OpenPLC 的运行和操作条件的状态数据;除了以上三种数据文件外,对于一些特殊的用户数据类型还有另外的一些数据文件。有些是被默认用来作为一些特殊类型的数据的文件的,有:B316 位字的位T4 定时器 数据结构,每个有三个数据字C5 计数器 数据机构,每个有三个数据字R6控制数据结构,每个有三个数据字N7F8整数数据字浮点数其它还有很多不对应数据类型的数据文件,如对 PPC21 的 10 到 255,PPC31 的 9 到999,这些可以附加的器,可以用来为、 定时器 、 计数器 、控制元素、整数、浮点数,或者其它任何下面所描述的数据类
32、型。在编程时,输入一个数据文件的文件号码,就会将该数据文件和类型与这个号码对应起来,比如,创建一个数据文件 12,作为一个附加的位数据文件,可以按如下方式写程序:B12/X,或者,B12:x, 或者,B12:x/x这个 指令 将把文件 12 定下来用作位(X,必须是一个有效位或者字地址,位文件的地址结构将在后面叙述)。数据文件也可以通过编程单元的文件生成功能被用来预定为特殊的数据类型。OpenPLC 的状态文件状态文件通常是默认的。每个 16 位的状态字包含着 OpenPLC 的 组态 数据或者当OpenPLC 运行和操作时,描述其条件的状态数据。任何状态字都可以被用户,大多数状态字是动态的,
33、用户程序可以对之进行改写,比如当用户程序运行时,希望改变 OpenPLC的 组态 方式。也有一些状态字是静态的,它们只能在 OpenPLC 处于编程模式的时候才能被改变。状态字是由下列方式进行能够寻址的:S:e“e”表示一个 16 位的状态字元素的树木,(如 S:1,表示一个数据字包含 16 个处理器的状态位)第一个状态字的为 0,最后一个随着 OpenPLC 的型号的不同而不同。单个的状态位也可以用逻辑来寻址,如:S:e/b作字 1 的最“b”是一个从 0 到 15 的数,表示要操作的是哪一位(如 S:1/15 表示要操;这个重要的状态位每次当 OpenPLC 切换到运行模式时,每个扫描周期
34、就增加一次。OpenPLC 的位文件位文件是用来进行位的。文件 3 是被默认作为位文件,寻址的前缀是“B3”。前缀“B”也用在其它没有使用的文件号码上,将该文件作为附加的位文件。当用来作为位件 3 的单个位通常用下面的方法寻址:时,文B3/bOpenPLC 也允许在位“b”是一个从 0 到 4096 的数,文件中,用不同的办法来寻址位,由于所有的位都是 16 位ww字的一个组成部分,因此,也可以按下面的方式:B3:e/b其中,“e”是一个字元素,从 0 到 255, “b”是一个从 0 到 15 的数,表示该字的某一位。上述两种方法其实是一样的。位文件是由 16 位的数据字组成的,这些字也可以
35、作为整个字来进行处理,整数据字可以用如下方式来寻址和操作:B3:e“e”是一个从 0 到 255 的字元素,(新的 PPC31 可以从 0 到 999)OpenPLC 的 定时器 结构文件文件 4 是被缺省地作为 定时器 的文件的。这个文件中的所有的数据都必须加前缀 T4。每个 定时器 元素结构由三个 16 位数据字,安排如图 4.3。图 4.3 OpenPLC 的 定时器 数据结构编程时,对整个 定时器 的结构字采用如下方式来寻址:“e”是一个从 0 到 255 的 数字 ,表示三字结构元素的数量。T4:/e每个 定时器 数据字结构中的数据字也可以作为单独的一个字被寻址,方式如下:T4:e.
36、m其中,“e”是三字结构元素的序号,“m”是按照规定的区分各个数据字的代号,如 ACC,表示累计值,PRE 表示预先设定值。如果不用代号,就用序号也可以,那么,m 就表示 0,1,2,内容见图 4.3。对于 定时器 的状态,可以用如下方式来寻址定位:T4:e.m其中,m 表示三个状态位的代号,如 TT,DN,EN 等。比如,T4:3.TT就表示 定时器 3 的 TT 位的状态。OpenPLC 的 计数器 结构文件文件 5 是被默认为 计数器 的数据结构的。对这个文件的数据进行寻址时,必须加上前缀“C5”,每个三字结构的格式见图 4.4。图 4.4 OpenPLC 的 计数器 字结构对 计数器
37、的寻址与 定时器 的寻址方式类似。见下面:C5:e对三字结构 计数器 元素寻址对结构中的子元素的一个字或者状态位进行寻址。C5:e.m字中的 m 可以是缩写代号,也可以是 数字 ,但对状态位时,必须是缩写代号。OpenPLC 的控制结构文件文件 6,是 OpenPLC 预定作为控制数据结构的文件。控制结构文件中的数据在寻址时必须加上前缀“R6”(之所以用“R”作为前缀是因为,英文 CONTROL 的前面在OpenPLC 开发出控制元前,已经被用作 计数器 、输出、整数、 定时器 了)。三字结构的格式见图 4.5。* 位 0-7 在后期的 OpenPLC 产品中被用来图 4.5 OpenPLC
38、的控制字结构控制数据可按如下方式进行寻址:错误代码。R6:e寻找 3 字的控制器元素R6:e.m寻找三字结构中的某个字,或者某个位。如果是对位进行寻址,则必须用该位的缩写代号。OpenPLC 的整数文件文件 7 是被预定作为整数的区域的,整数的范围是-32768 到。每个整数值都存在一个 16 位的二进制数中。这个文件中的单个的数据可以采用如下方式寻址:N7:ee 代表文件中的某个字,范围是从 0-999。文件中的单个位也可以采用下列方式寻址:b 是一个数据中位的地址,为从 0 到 15 的整数。OpenPLC 的浮点数结构文件N7:e.bww文件 8 是 OpenPLC 默认为用来预定存放浮
39、点数的内存区域。浮点数的范围是(1.17549410-38 到3.40282810+38),是根据 IEEE754 的浮点数编码标准格式来进行编码的,需要 32 位。因此,每个浮点数需要两个 16 位的数据字,单个的位和 16位字都无法被寻址(实际也没有必要),因此,浮点数的寻址很简单:F8:ee 代表元素的号码。范围从 0-999(或从 0-255)。OpenPLC 的 ASCII 字符文件对于 ASCII 字符文件,OpenPLC 没有默认的文件,但任何没有用到的文件都可以预定为 ASCII 字符。ASCII 字符包括原始的标准电传键盘字符集,对每个字符,都有一个 7 位的二进制数对应。A
40、SCII 字符目前是用来将键盘字符进行二进制化的最常见的方式。在 OpenPLC 的 ASCII 字符文件中,每个编码都存在一个 16 位字的一半中,因此,一个 16 位字可以两个字符。由于 OpenPLC 不允许对字节寻址,因此,每个 ASCII 文件的元素包括两个 ASCII 字符。ASCII 文件的寻址方式如下:f 代表文件的序号, e 是文件中字的序号(每个字是一个 16 位数,包含两个 ASCII码)Af:eAf:e.bb 代表该两个 ASCII 码的位的序号,从 0 到 15。OpenPLC 的字符串数组文件,OpenPLC 也没有默认的指定对于字符串数据的区,但任何没有用到的数据
41、文件都可以被预存。每个字符串由一系列的 42 个 16 位字的字符集组成,其中,第一个数据字包括一个描述当前该字符串中的 ASCII 字符的实际数量的 数字 。随后的 16 位字,每个字都包含两个 ASCII 字符,如图 4.6 所示。(图中显示的是ASCII 字符,但实际的是 ASCII 码)。图 4.6 OpenPLC 的字符串文件的 ASCII 码方式。OpenPLC 提供了对字符串进行操作的 指令 ,只有用这些 指令 才可以对字符串元素、对其中的字和某个字的位都可以操作,这是由于 OpenPLC 不允许对单个字符串或位进行寻址,而只允许对每个字符串的第一个字进行寻址,该字是表示字符串所
42、包含的 ASCII 字符的数目的。第一个字可以用下列方法寻址:STf:e.LEN其中,f 是文件的序号,而 e 是字符串元素的号码。4.3.2 OpenPLC 的间接寻址和 I/O 寻址间接寻址OpenPLC 提供了间接寻址功能。在间接寻址方式中,本来代表地址的 数字 由一个表示地 址的表达式来代替了。例如,间接地址“NB3:4:1”实际上就表示“N7:1”(条件是 B3: 4 位置包含的 数字 是 7)。间接寻址的中间参数必须用方括号代替。文件号、字号、位号都可以用另外一个地址的内容来间接表示。而在 定时器 、 计数器 和控制结构中,只有数据字才能用来进行间接寻址。以下给出一些间接寻址的例子
43、:NN7:1:5B3:N7:1如果 N7:1 包含的数为“16” ,表示 N16:5;如果 N7:1 包含的数为“16” ,表示 B3:16,B3/N7:1如果 N7:1 包含的数为“16” ,表示 B3/16N9:5/N7:1无效,因为只能在位文件中才能对位进行间接寻址。O:N7:1如果 N7:1 包含的数为“16” ,表示 O:16。C5:B3:1.ACC如果 B3:1 中的数为 2,则表示 C5:2.ACCC5:2.B3:1无效,因为在 计数器 的状态位中,必须以缩写字母来ww度实而7-必00 E3度E3扩亪享 度必 0-3必000 极源的W行解 源的W0极 源线W行解 源线W0 亪亪极
44、源的W0源的W必源的W感源线W0源线W必 源线W0哪E 3扩 器 源线W感必实 而7-必00 E 3度E 3扩亩 E 3扩 感 度 wE 3扩 X X 置X X X X极享 稳 P种C 儈度实1S7-300 和 S7-400 寻址Addressing for S7-300 and S7-400wSingle - FAQEdition (2010 年-9 月)摘 要 本文对 S7-300, S7-400 PLC 编程过程中,所涉及的寻址方式方法,做了简单介绍及简单示例。STEP7, 编程,寻址,间接寻址,S7-300, S7-400Key WordsSTEP7, Programming, Add
45、ressing, Indirection addressing, S7-300,S7-400wIA&DT Service & Support22目录S7-300 和 S7-400 寻址1S7-300/400 系统145区域2 S7-300/400 PLC寻址方式2.1 直接寻址55566912绝对地址:符号寻址:间接寻址2.2.1器间接寻址寄存器间接寻址FB/FC的指针参数传递wIA&DT Service & Support221 S7-300/400 系统区域S7 CPU 的系统取数据。区域分为下表中列出的地址区域。在程序中可以根据相应的地址直接读wIA&DT Service & Suppo
46、rt22地址区域可以的地址S7 符号(IEC)描述过程映像输入表输入(位)I循环扫描周期开始时,CPU 从输入模板读输入值并到该区域输入(字节)IB输入(字)IW输入(双字)ID过程映像输出表输出(位)Q在循环扫描周期中,程序计算输出值并到该区域。循环扫描周期结束时,CPU 将计算结果写入相应的输出模板输出(字节)QB输出(字)QW输出(双字)QD位器器(位)M该区域用于程序的中间计算结果器(字节)MB器(字)MW器(双字)MD定时器定时器 (T)T该区域提供定时器的计数器计数器 (C)C该区域提供计数器的数据块数据块,用OPN DB打开DB数据块中包含了程序的信息。可以定义为所有逻辑块共享
47、(shared DBs) 或指定给一个特定的 FB 或 SFB 做背景数据块(instance DB)。数据位DBX数据字节DBB数据字DBW数据双字DBD数据块,用OPN DI打开DI数据位DIX数据字节DIB数据字DIW2S7-300/400 PLC 寻址方式.1 直接寻址在 STEP7 程序中可以使用输入输出信号(I/O),位w区(M),计数器(C),计时器(T),数据块(DB)以及功能块(FB)等地址。你可以直接这些绝对地址,但是如果给绝对地址以符号(助记符)程序将更易读懂(例如 Motor_A_On, 或者根据你的公司或者工程中的代码使用别的标识符),而一个你的用户程序中的地址也就可
48、以用一个符号来2.1.1 绝对地址:。绝对地址由一个地址标识符和器位置组成。例如 I 0.0,Q 1.7,PIW 256,PQW 512,MD 20,T 15,C 16,DB1.DBB 10,L1 0.0等。2.1.2 符号寻址:如果给绝对地址分配符号可使程序易读而简化故障查找。STEP7 能自动翻译符号名为要求的绝对地址。如果你准备用符号名数组,结构,数据块,局部变量,逻辑块及用户自定义数据类型,那么你必须在此之前先分配符号名给绝对地址。例如, 你可以分配符号名Motor_On给地址 Q 4.0,然后在程序语句中使用符名Motor_On作为地址。IA&DT Service & Support
49、22数据双字DID局部数据局部数据位L该区域包含块执行时该块的临时数据。L 堆栈还提供用于传递块参数及梯形逻辑网络中间结果的器局部数据字节LB局部数据字LW局部数据双字LD外设地址 (I/O)外设输入字节PIB主站及分布式从站(DP)外设输入输出区域允许直接存取输入外设输入字PIW外设输入双字外设地址 (I/O)外设输出字节PQB输出外设输出字PQW外设输出双字PQD如需在程序中显示 DB 里所定义的符号,可以给该 DB 块定义一个符号。不能在符号表给 DB块中某地址单独定义符号。2.2 间接寻址间接寻址分为器间接寻址和寄存器间接寻址,间接寻址的指针分为 16 位指针和 32 位指针,而 32
50、 位指针又分为区域寻址与交叉区域寻址。2.2.1器间接寻址16 位指针:16 位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16 位指针被看作一个无符号整数(065535),它表示定时器(T)、计数器(C)、数据块(DB、DI)或程序块(FB、FC)的号,16 位指针的格式如下:图 1w寻址格式表示为: 区域标识符 16 位地址指针 例如使一个计数器向上计数表示为:CUC MW 上述指令中,C为区域标识符,而MW20为一个 16 位指针。16 位指针器间接寻址举例:/用于定时器L T A L SD/1MW0 I0.0 S5T#10STMW0/将 1 传送到 MW0/如果 I0
51、.0 = True/T1 开始计时上述指令可等同于:IA&DT Service & Support22A LSDI0.0 S5T#10ST1/用于打开 DB 块L TOPN20LW20 DBLW20/打开 DB20/程序调用L TUC2LW20 FCLW20/调用 FC2L TUC41DBW30 FBDBW30/调用 FB41w32 位指针:32 位地址指针用于 I、Q、M、L、数据块等器中位、字节、字及双字的寻址,32 位的地址指针可以使用一个双字表示,第 0 位第 2 位作为寻址操作的位地址,第 3位第 18 位作为寻址操作的字节地址,第 19 位第 31 位没有定义,32 位指针的格式如
52、下:图 2器 32 指针仅用于区域寻址。IA&DT Service & Support22器标识符 32 位地址指针 寻址格式表示为: 地址例如写入一个 M 的双字表示为:TMD LD0 MD为区域标识符及宽度,而 LD0 为一个 32 位指针。32 位区域指针可用常数表示, 表示为 P# 字节.位 。如常数P#10.3为指向第 10 个字节第 3 位的指针常数。若把一个 32 位整型转换为字节指针常数,从上述指针格式可以看出,应要把该数(或是乘 8)即可。3 位如:L 3LD0L#100/Accu0 装入 32 位整形 100SLDT/3 位/LD0 得到 P#100.0 指针常数32 位器
53、间接寻址举例:wDB 块间接寻址举例OPN OPN L SLDTDB DI 43MD13/打开 DB1。/打开 DB3,最多可以同时打开两个 DB 块。/装载 4 到累加器 1 中。/累加器 1 中数值3 位。20/将逻辑操作结果传送到 MD20 中,MD20/包含地址指针为 P#4.0。/将地址指针 P#20.0 装载到 MD24 中。L T L T L L+ILP#20.0MD 320 MD DBWDBW24/320 转换指针为 P#40.0 并装载到 MD28 中。28MD 20MD 24/装载 DB1.DBW4。/装载 DB1.DBW20。/相加/装载 DB3.DBW40。DIWMD
54、28IA&DT Service & Support22-IT JZ/相减。/将运算结果传送到 DB3.DBW2 中。DIW2m1/M L TTOPN L NEXT: LL=I JC LLD T LLOOPm1: JCN LL/D+ Tm2:器连续区域操作0MW MD DB100TMW DBW/初始化 MW100 和 MD4。10041/打开 DB1。/循环操作的次数,100 次。/将循环 100 次装载到 MW100 中,固定格式。MW 2MD 4100/进行比较的数值于 MW2。/与 DB 块中的值进行比较,开始地址为 DBW0。/如果数值相等跳到 m1。m1 MDP#2.04/将地址指针加
55、 2(每个相邻的字地址相差 2)。wMD MW NEXT FPm2MD P#2.04100/次数减 1,跳回 next,如果 MW100 等于 0,跳/出循环操作 LOOP 指令,LOOP 指令固定格式。M10.0/如果数值相当,MD4 指针的数据,将转换为数组/的位置(地址值/P#2.0)+1)值于 MD8 中。4L#1 MDNOP802.2.2 寄存器间接寻址通过 CPU 的地址寄存器 AR1 和 AR2 寻址方式称为寄存器间接寻址,分为和交叉区域寻址。使用寄存器间接寻址方式的程序语句包含以下部分:区域间接寻址IA&DT Service & Support22指令,地址标识符,地址寄存器标
56、识符,偏移量AR1,AR2 均为 32 位寄存器,寄存器间接寻址只使用 32 位指针。与 ARx 相关的指令有:LAR1, LAR2, TAR1, TAR2, +AR1, +AR2, LAR1 AR2, CAR 等。以上指令使用请参考手册:开始 - (所有)程序 - SIMATIC -STEP 7 Sement List for S7-300 and S7-400。或点击该手册中文版ation - English -区域寄存器间接寻址指针格式与器间接寻址的 32 位指针相同,第 0 位第 2 位作为寻址操作的位地址,第 3位第 18 位作为寻址操作的字节地址,第 19 位第 31 位没有定义,
57、32 位指针的格式如下:w图 3间接寻址表示为:器标识符 ARx, 地址偏移量 如:LMWAR1, P#2.0MW为被宽度,AR1为地址寄存器 1,P#2.0 为地址偏移量。的器及区域寄存寻址举例:/DB 块寄存器寻址OPNDBLAR1 P#10.01/打开 DB1。/将指针 P#10.0 装载到地址寄存器 1 中。IA&DT Service & Support22L LAR1 L+ILAR2 TDBWMD DBWAR1, P#12.0 20AR1, P#0.0/将 DBW22 装载到累加器 1 中。/将于 MD20 中的指针装载到地址寄存器 1 中。/将 DBW 装载到累加器 1 中,地址于
58、 MD20 中。P#40.0DBWAR2, P#0.0/将指针 P#40.0 装载到地址寄存器 2 中。/运算结果传送到 DBW40 中。/DI、DO 区寄存器寻址L LAR1 A=P#8.7/装载指向第 8 字节第 7 位的指针值到累加器 1/累加器 1 中的指针装载到 AR1/查询 I8.7 的信号状态/给输出位 Q10.0 赋值IQAR1, P#0.0AR1, P#1.1交叉区域寄存器间接寻址包含有器区域信息的指针,称为交叉区域指针。同样,交叉区域指针为 32 位,寄存器间接寻址要使用地址寄存器 AR1 或 AR2。2 位交叉区域指针,018 位格式与 32 位区域指针相同,1923 位
59、,2730 位w未定义,31 位为交叉区域指针标识位。2426 位是000001010011100101110111区域地址标识,8 中组合表示 8 种表示没有地址区,例如 P#12.0; 表示输入地址区 I,例如P#I12.0;表示输出地址区 Q,例如 P#Q12.0;表示标志位地址区 M,例如 P#M12.0;器区域:表示数据块(DB)中的数据,例如 P#DB1.DBX12.0表示数据块(DI)中的数据,例如 P#DI1.DIX12.0 表示区域地址区 L,例如 P#L12.0;表示调用程序块的区域地址区 V,例如 P#V12.0;交叉区域指针格式如下:IA&DT Service & Su
60、pport22图 4交叉区域指针常数表达为:P#器 字节 . 位例如: P#Q10.5P#DB1.DBX32.0/指向 Q 区第 10 字节第 5 位的指针常/指向 DB1 区域的第 32 字节第 0 位的指针常数交叉区域寻址表示为:宽度 ARx, 偏移量 例如: LW为W AR2, P#1.0 宽度,AR2 为地址寄存器 2,P#1.0 为偏移量。w交叉区域间接寻址举例:/M LLAR1L T区P#M20.01234W AR1, P#2.0/I LLAR2L T区P#I0.0W AR2, P#0.0 MW02.2.3 FB/FC 的指针参数传递IA&DT Service & Support2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国黄连素行业市场发展趋势及投资策略分析报告
- 2025-2030年中国锯材行业发展状况及投资前景规划研究报告
- 2025-2030年中国铸铁管行业市场竞争现状及发展前景规划研究报告
- 2025-2030年中国针织类服装行业市场运营状况与发展潜力分析报告
- 2025-2030年中国芦荟化妆品行业发展现状规划研究报告
- 二零二五年度环保产业项目投资合作协议(2024版)3篇
- 低温仓储中的货物库存管理考核试卷
- 2025年度餐饮行业临时工劳动争议调解合同
- 2025年度药品研发与知识产权保护合同
- 喷涂设备市场营销策略与实践考核试卷
- 外呼合作协议
- 小学二年级100以内进退位加减法800道题
- 2025年1月普通高等学校招生全国统一考试适应性测试(八省联考)语文试题
- 《立式辊磨机用陶瓷金属复合磨辊辊套及磨盘衬板》编制说明
- 保险公司2025年工作总结与2025年工作计划
- 育肥牛购销合同范例
- 暨南大学珠海校区财务办招考财务工作人员管理单位遴选500模拟题附带答案详解
- DB51-T 2944-2022 四川省社会组织建设治理规范
- 2024北京初三(上)期末英语汇编:材料作文
- 2023年辅导员职业技能大赛试题及答案
- 礼仪服务合同三篇
评论
0/150
提交评论