1.3.1 地址
这里讲的地址是指PLC软器件。是PLC操作系统划分与管理的内存区。用于存储PLC程序数据。并使用与电器相关的含义命名,如某某继电器、某某定时器、某某计数器、某某数据存储器等。其实,这些都只是内存区中的一个位、字节或字。这些位、字节、字的值,即代表着这些器件的状态。也正是在物理上,这些器件只是内存区的位、字节、字或位,所以,才称之为软器件。
PLC软器件分为I/O软器件与内部软器件。
PLC I/O软器件也可称映射器件,是内存区中与输入、输出等种种模块相映射的区域。与输入点对应的称输入继电器,或称输入映射区。与输出点对应的称输出继电器,或称输出映射区。如用有模拟量模块或其他智能模块,则还包括与其有关的数据映射区。如PLC联网,则还含有与联网模块有关的数据缓冲区。
内部软器件用于存储运行程序的中间结果。一般讲,内部器件与硬件没有映射关系。但是,如果PLC用到特殊功能的单元时,有可能要分配一些内部器件作为与CPU交换数据的缓冲区及工作状态的记录。内部器件有内部辅助继电器、特殊继电器、计数器、计时器、数据存储器、暂存器等。当然,不同的PLC,这些类型、名称也不可能完全相同。
软器件的类型及数量,反映了PLC的控制能力,是PLC性能的重要方面。越是性能好的PLC,越是新型的PLC,其类型也越多,数量也越大。不过,由于新型PLC已与计算机一样,也可在内存区中自定义程序变量。因而,这里讲的软器件的类型及数量多少已无关紧要。只要这个可定义变量的内存区足够大,可定义的变量类型足够多,其控制能力自然也就强了。
PLC技术的发展,其软器件的类型及数量,特别是内部器件现已大为增加。所以,不少PLC多已不用继电器(RELAY)称谓它了。而改称它为区(AREA)。突出了PLC信息处理的功能。
要指出的是,这些软器件在内存中确都有其实际地址。但对多数PLC可不必去具体了解。只是个别PLC,如西门子S7200型PLC,对软器件进行间接地访问时,则先要知道它在内存中的实际地址,然后才可进行访问。对此,还将在随后介绍间接地址时有所说明。
1.I/O软器件
(1)开关量用的输入、输出继电器。开关量用的输入、输出继电器是指,可与实际开关量输入、输出模块上的点相对应的那部分内存区。它决定了PLC可能配置的最多I/O(开关量)点数。西门子PLC称之为过程映射寄存器(process-image register),指的也是与输入、输出点有对应关系的内存区。
输入继电器与输入点对应。一般讲当PLC输入刷新时,输入暂存器的状态即映像到输入继电器中。输入继电器为只读存储器,不能用程序改变它的内容,而只能被输入点的状态所映像。所以无输入点与其对应的,如其地址是固定编排时,一般不能作为他用。
输出继电器与输出点对应。一般讲当PLC输出刷新时,输出继电器的状态被映像到输出内部电路的锁存器。锁存器保持状态,直到下一个刷新的到来。锁存器再经输出电路传递,即成为输出点上的输出。输出继电器是可写的,以便产生所要求的输出;也还是可读的,以用于反馈控制。对用户程序,它是可读可写的存储单元。所以,若无输出点与其对应的也可另作他用。
这里的点是指二进制数的一个位,仅1、0两个取值。用它代表开关触点,或继电器的触点及线圈。1代表有关开关触点通(ON)或有关继电器线圈得电(工作、ON)。0代表这个触点断,或这继电器线圈失电(不工作、OFF)。
继电器的触点有常开的,它的线圈不工作(或说失电)时,它断、OFF;它的线圈工作(或说得电)时,它通、ON。还有常闭的,它的线圈ON,它OFF;它的线圈OFF,它ON。只是这里继电器既无实际的线圈,又无实际的触点。这里讲的线圈、触点,都只是内存单元的一个位。但在性能上可认为:线圈得电,为用1写了这个单元;线圈失电,为用0写了这个单元。用其常开触点,指直接用它的值;用其常闭触点,指用它取反后的值。这样的继电器也称软继电器。显然,其触点的使用次数是不受限制的,其线圈被改写的次数也是不受限制的。这也是它比实际继电器好用的重要之点。
要使用这些“点”,必须弄清它是怎么编址的?这个编址,各PLC厂商多不尽相同。这也是PLC使用的一个难点。
欧姆龙PLC编址是按字、位计算,先指定字(有时也称通道,channel,但施耐德PLC则把这里的位称通道)地址,再指定在字中的位地址,如图1-15a所示。
如地址为0001.03,则表示为0001通道(字)的03位,如图1-15所示。
西门子PLC编址是按字节、位计算,先指定字节地址,再指定在字节中的位地址,如图1-16所示。

图1-15 欧姆龙PLC地址含义
1—字或通道地址 2—位地址(00到15) 3—通道地址 4—位地址0001.03
如图所示,这里地址是I3.4,其含义是输入点(I为输入点编址的前缀),3为字节地址,4为字节3中的第4位。如果为输出点,则所加的前缀为“Q”。
三菱PLC的输入(前缀加X)、输出点(前缀加Y)是以位编址,如图1-17所示。都是从0到可能的最大地址。并按八(对小型机)或十六(对中、大型机)进制进位。但没有字或字节地址。当多位使用时,则应在其前,加上使用多少位的指定。如K1X0,指的是X0~X4,4个位。再如K2X0,指的是X0~X7,8个位。其余类推。这样,如按字节、字使用时,虽较麻烦,但也有其灵活性。可使这些点的使用,不受字节、字的局限。

图1-16 西门子PLC地址含义

图1-17 三菱PLC位元件多位使用时的指定
西门子PLC用字节、位编址,要用字节,则前缀加QB,要用字,则前缀加QW。要用双字,则前缀加QD。但编号仍按字节计。如用QW0,则含有QB0、QB1;用QW2则含QB2、QB3;如用双字时QD0,则含有QB0、QB1、QB2、QB3。可知,如用了QW0,不能再用QW1,否则,QB1地址将重复使用。
和利时PLC开关量I/O软器件地址格式为:先是百分号(%,施耐德等PLC也如此),接着加地址类型标识(输入为I、输出为Q、中间存储区为M),最后为地址编号。地址编号先是位(通道)、字节、字、双字标志,然后加数码号。这里位标志为X,字节标志为B,字标志为W;双字标志为D。当使用“位”地址时,则首先要指定其所在的字节地址,然后再指出其在字节中的位地址。具体方法是用小数表示,整数部分标出是哪个字节,小数部分标出是哪个“位”。如图1-18所示。

图1-18 和利时PLC地址编号
如图所示,%IX3.4指的是输入第3字节的第4位。
使用PLC,一定要了解输入、输出继电器的情况。要清楚,它有多少输入输出继电器,怎么编号,与输入、输出点的物理位置怎么对应的(在模块上有相应标号)等,否则无法编程,也无法接线。
输入、输出点的地址编号,有三种办法:
一是点地址固定。这用于箱体式PLC。其主箱体、扩展箱体连接好后,其各点的地址也就默认地确定了。
二是模块地址固定。模块安装好后,其地址依其所在机架及其上的位置,也默认地确定了。点在模块上的地址一般也是固定的。
三是模块地址自行设定。模块地址可用软件或硬件设定,这已是发展趋势。
再就是,AB新机型PLC的I/O编址更详细些。要指明I/O模块所在的网络、机架槽号以及使用的数据类型和具体I/O点号。如Local:1:I.Data.0,是指I/O模块所在网络站点为当地(Local),所在机架槽位为1,类型为输入(I)数据(Data),使用的位是它的0位。再如kk:6:O.Data.3,是指I/O模块所在网络站点为远程站点(命名为kk),所在机架的槽位为6,类型为输出(O)数据(Data),使用的是它的3位。由于AB新型PLC的I/O模块为智能型的,除了有普通的输入(I)、输出(O)、数据(Data)类型,还有C类型的、滤波(Filter Off On)及数据(Data)类型的故障(Fault)等。这些地址多用于对模块的工作设定或监视。只是必要时才用。具体类型与使用的模块有关。而且,这些地址在模块配置时(定义成该模块类型数据)可自动生成。
应该强调的是,不同PLC的I/O编址多不完全一样。为了准确使用这些地址,最好要仔细阅读有关说明书。
(2)模拟量I/O地址。除了开关量I/O模块,还有模拟量I/O模块。对欧姆龙公司的模块式PLC,它的编号由其上的机号设定开关设定,与模块安装位置无关。要注意的是,所设的机号不能重复。机号设定后,将指定相应的通道及数据存储器(DM,内部软器件的一种,见后叙述)归其使用。至于这些通道与数据存储器的含义及使用,可参考有关说明书。而欧姆龙公司小型机的模拟量单元,是与开关量单元一样,按安装位置,统一编址,不作机号的设定。
三菱PLC模拟量输入、输出模块也是独立编址。用常数K指定模块号及在模块中的通道号。这里的通道是指哪一路的模拟量。
西门子公司S7-300 PLC模拟量模块与开关量模块都称为信号模块,无单元号。这两种模块都依其所在机架及槽位统一编址。只是模拟量加的前缀为IW(模入)或QW(模出),每一路要占一个字、两个字节。
表1-5为西门子S7-300系列PLC,如配置四个机架时的编址情况。从表知,它是定机架、定槽位编址的。如有一个8路的模入模块安装在机架1、槽位6,其各路地址分别为IW416、IW418……直到IW430。如这个槽位安装的是4路模出模块,则其各路地址分别为QW416、QW418、QW420及QW422。如这个槽位安装的是16点开关量输入模块,则其地址为IB40、IB41两个字节。
和利时PLC模拟量I/O地址与开关量统一编址,与西门子类似。只是在I或Q之前也要加%符号。
AB新机型PLC的模拟量I/O编址也更详细些。也要指明模块所在的网络、机架槽号以及使用的数据类型和具体通道(Ch)点号。如Local:3:I.Ch0Data,是指模块所在网络为当地(Local),所在机架槽位为3,类型为输入(I)数据(Data),使用的通道是它的0通道。再如Local:4:O.Ch0Data,是指I/O模块所在网络为当地(Local),所在机架的槽位为4,类型为输出(O)数据(Data),使用的通道(Ch)也是它的0通道。由于AB新型PLC的模拟量I/O模块也是智能型的,除了有普通的输入(I)、输出(O)、数据(Data)类型,还有其他类型,即使数据(Data)类型,之下还有分支。这些地址多用于对模块的工作设定或监视。只是必要时才用。具体类型与使用的模块有关。而且,这些地址在模块配置后也会自动生成。
表1-5 S7-300机地址分配

应该强调的是,不同PLC的模拟量I/O编址多不完全一样。为了准确使用这些地址,应仔细阅读有关说明书。
(3)其他地址。除了上述地址,还有用于通信等智能模块的数据缓存区。这些多与网络等模块有关。OMRON用链接继电器(LR)或可任意指定的一些数据存储器(DM)。三菱称用指定的内部继电器(M)、数据存储器(D)、链接继电器(B)及链接寄存器(W)。西门子用可按有关模块的说明书使用。这些多与所用的模块与网络有关。
总之,I/O软器件总是与PLC使用的各种模块或插件相关,它的CPU就是通过这些软器件读写模块,与这些模块通信。
2.内部软器件
(1)内部辅助继电器。与继电器电路中的中间继电器一样,运用得合理,可帮助实现输入与输出间复杂的变换,从而可使PLC更好地进行各种控制。
内部辅助继电器的数量一般要比输入、输出继电器多得多。除了用作中间继电器,还用于数据处理。
欧姆龙PLC内部辅助继电器也分配有通道号。每个通道也是16个继电器。可以通道(字)为单位使用,也可以继电器(位)为单位使用。
西门子公司、三菱公司PLC的内部继电器,就加有前缀“M”。前者是以字节、位编号,多位使用方法同输入、输出继电器。后者与它的输入、输出点类似,也是按位编号,但按十进制进位。多位使用,也与其输入、输出继电器相同。
和利时PLC内部辅助继电器,前缀为“%M”。也可按位、字节、字、双字使用。
AB新型机就只有内存区,没有这里这样意义的内部器件。
使用PLC时,对选用的PLC的内部辅助继电器的情况也要弄清楚,否则也无法设计程序。它的数量非常多,为编程提供了很大的方便。
内部辅助继电器有的可设定为掉电保持的,即PLC失电后,其内容保持不变。只是欧姆龙专有此类内部辅助继电器,并特称之为保持继电器,并加前缀HR。
(2)定时器。它类似于继电电路用的时间继电器,用于延(定)时控制。它有线圈,有触点(标志位),还有寄存器(存放定时器现值、设定值)。定时的设定值可为常数,也可为某个(字)地址,再用这个地址的内容作为设定值。
对欧姆龙PLC,当定时器的线圈OFF时,没有输出,其常开触点为OFF,常闭触点为ON,其寄存器的当前值为设定值。当定时器的线圈ON时,它的寄存器的当前值从设定值开始,每经历一个单位设定时间减1。当减到零时,即产生输出,其常开触点从OFF转为ON,常闭触点从ON转为OFF。任何时候,一旦其线圈OFF,其输出立即停止,其常开触点从ON转为OFF,常闭触点从OFF转为ON,寄存器的当前值又变为设定值。
而对三菱、西门子PLC,情况有点不同。当定时器的线圈OFF时,也没有输出,其常开触点为OFF,常闭触点为ON,但其寄存器的当前值为0。当定时器的线圈ON时,它的寄存器的当前值从0开始,每经历一个单位设定时间加1。当加到设定值时,即产生输出,其常开触点从OFF转为ON,常闭触点从ON转为OFF。任何时候,一旦这线圈OFF,输出立即停止,其常开触点从ON转为OFF,常闭触点从OFF转为ON,寄存器的当前值又变为0。
欧姆龙PLC的设定值用BCD码设定。设定范围为0000~9999。新型机也可用十六进制码,设定范围为0~65535。三菱、西门子均用十六进制码。
普通定时器单位设定时间值为0.1s,故其最大延时可达999.9s,或6553.5s。如高速定时,其单位设定值可能为0.01s、0.001s,故其最大的定时值为99.99s、9.999s,或655.35s、或65.535s。如处理成低速定时,其单位设定值可能为1s、min,故其最大的定时值为9999s、9999min,或65535s、65535min。
这个单位设定时间的不同处理,不同厂商有不同的办法。
欧姆龙是用不同的定时指令处理。用TIM指令时,为100ms,而用TIMH指令时,为10ms,用TIMHH指令时,为1ms。
西门子则用不同的编号处理,有的编号的定时器单位设定时间小,而有的大。如S7-200型PLC,其单位时间设定值与定时器编号为
1ms T32,T96
10ms T33~T36,T97~T100
100ms T37~T63,T101~T255
三菱PLC也类似。如FX2N型PLC,其单位时间设定值与定时器编号为
1ms T246~T249
10ms T200~T245
100ms T0~T199
以上介绍的定时器是ON延时的。西门子PLC还可用不同指令,处理成其他工作方式,如ON即时,而OFF延时等。而如用欧姆龙、三菱PLC要作这样处理,则只好通过程序,用辅助继电器帮助解决。
应该指出,PLC的定时器的定时控制都是通过程序实现的。由于输入响应延时及扫描工作方式的影响,定时控制不是很准确的,可能与设定值差一个扫描周期。扫描时间若大过单位设定值,只有若干个定时器(可中断工作的)才能准确工作。
PLC的定时器多为掉电不保持的,掉电后停止计时,其已计入的值不保留,复电时,再从头计时。但有的也可掉电保持,即可累计计时。视不同的PLC、不同编号及不同的设定而定。
提示:定时器怎么用,与相应的定时指令的使用有关,这在介绍定时指令时,还要作进一步说明。有的PLC不用定时器指令,而使用定时功能块,则没有或不用这个定时器。
(3)计数器。它类似于继电电路用的计数器,用于记录脉冲输入信号的数量,即信号从OFF到ON的次数。它有线圈,有触点(标志位),还有寄存器(存放计数器现值)。有两种计数,一为单向计数,另一为可逆(双向)计数。
单向计数:有增计数与减计数。欧姆龙PLC单向计数都是减计数。当输入脉冲输入信号从OFF到ON变化一次,计一次数。计数器的寄存器减1。而开始时,计数器的寄存器为设定值,当其值减到零时,则产生输出。其常开触点ON,常闭触点OFF。
西门子PLC单向计数器有增的,也有减的。当输入脉冲输入信号从OFF到ON变化一次,计一次数,计数器的寄存器增1,或减1。对于增计数,其开始时,计数器的寄存器的值为0,当增大到等于或大于设定值时,则产生输出(计数仍可进行,直到最大值,65535)。其常开触点ON,常闭触点OFF。对于减计数,开始时计数器的寄存器为设定值,当其值减到0时,则产生输出。其常开触点ON,常闭触点OFF。
三菱PLC单向计数则是增计数。当输入脉冲输入信号从OFF到ON变化一次,计一次数。计数器的寄存器增1。而开始时,计数器的寄存器为0,当其值增到设定值时,产生输出。其常开触点ON,常闭触点OFF。并不再计数。
计数器一般都是掉电保持的。即使掉电,计数值不变。但在任何时候,送入复位信号(ON),计数器的寄存器都恢复成原始状态,并停止计数,不再输出。
除了单向计数器,还有双向,即可逆计数器。欧姆龙、西门子用相应指令实现单向或双向计数功能。而三菱PLC则用编号指定。有的编号只能单向计数,而有的编号可双向计数,并用特殊继电器(见后说明)指定计数方向。同时双向计数总是双字长的(8位十六进制数)。
再就是,欧姆龙PLC的设定值、计数值用BCD码设定。范围为0000~9999。但它的新型机也可用十六进制码,设定为0~65535。三菱、西门子PLC均用十六进制码。
提示:计数器怎么用,与相应的计数指令的使用有关,这在介绍计数指令时,还要作进一步说明。有的PLC不用计数指令,而使用计数功能块,则没有或不用这个计数器。
(4)数据存储(寄存)器。PLC进行控制以及计数,总要作一些数据处理,用一些特殊单元时,如模拟量入、模拟量出单元,还要作一些数据计算。所以,各种PLC也都备有存储大量数据的专门存储单元。欧姆龙用的标号为DM。三菱用的标号为D、西门子的S7-200标号为V。
欧姆龙、三菱PLC的存储器一般按字计(编号)。随着技术的发展,现在PLC的这个存储器容量不断增大。可达几K、几十K,以至于要用兆计。
数据存储器中的位(bit)、数位(digit)、字节(Byte)、字(word)及双字(D)间的关系处理,各PLC厂商是不大一样的。
图1-19a所示为欧姆龙及三菱PLC的位、数位、字节、字和双字之间的关系。它的地址以字计。并多以字作为处理单位。没有特定双字概念,两个相邻的字可处理成双字,这时,高位存于高地址,低位存于低地址,并以低位字的地址代表这双字地址。
西门子PLC数据存储器是按字节计(编号)。它讲的数据存储器多少K,都是以字节计。它可以字节为单位使用,如VB0、VB1。也还有字、双字为单位使用,但编号仍以字节计。如用VW0,则含VB0及VB1;用VW2则含VB2及VB3等。如按双字使用,则用VD0(含VW0、VW2)、VD4(含VW4及VW6)等。显然,如用了VW0,再用VW1,则其中的VB1将重复。如不是特殊需要,应避免出现此情况。
西门子的字、双字的高地址、存低位,低地址、存高位。如VB100=11,VB101=22,VB102=33,V103=44,则VW100为1122,VW102为3344,而VD100为11223344。具体如图1-19b所示。

图1-19 字与双字组成
西门子这种按字节编号,高、低位数据存储与日本、美国的PLC不同,有其麻烦之处。但它可灵活进行种种转换处理,也有其好处。
提示:数据存储器多用数据处理,故多不能对其中的位进行逻辑操作。过去,只有西门子PLC可以这么做。如今,欧姆龙、三菱的新型机也可用相应指令进行操作了。
(5)特殊继电器、特殊数据存储器。它也是一种内部辅助继电器,只是各有其特殊用途。而且,各厂商PLC或同一厂商PLC不同机型,都不尽相同。大体上这些用途有PLC状态辅助继电器、时钟用辅助继电器、标志用辅助继电器等。很显然,只有对其有相应了解,才能编写好相应程序。表1-6列举了部分PLC的部分特殊继电器的编号及其功能。
表1-6 部分PLC的部分特殊继电器的编号及功能

应该讲,这样的特殊继电器现在已越来越多了。以欧姆龙的小型机为例,其特殊继电器就有12.5通道(字),200个继电器。其编号从244开始,直到255的前半个通道。而CJ1机则多得多。故干脆不称其为特殊继电器,而称用标志(Condition Flag,CF)及辅助区(AR)。
西门子的S7-200机也有相应的特殊继电器。它的前缀为“SM”,称为特殊存储器位。三菱PLC的特殊继电器也不少,如FX机从M8000~M8255都是特殊辅助继电器。这些内容实在太多,详细情况请参看有关说明。
除了特殊继电器,还有特殊数据存储器,多用其作系统的种种设定。如欧姆龙小型机的DM6600~6614:用作起始处理设定;可把PLC设成起始为编程、运行或监控模式及内部继电器上电时是清零。欧姆龙辅助继电器(AR)大多数也与这个存储器作用相同。
西门子PLC也有很多类似的特殊功能数据存储器,用以实现各种特殊功能。如S7-200机,它的SM区有近200个字节,除了特殊继电器,还有更多的是用作特殊数据存储器。用于通信、高速计数、定时中断等设定。
三菱的FX机从D8000~D8225的数据寄存器,就是这类特殊的数据存储器。
和利时PLC也有特殊地址,即%MB0~%MB99间的100个字节。被系统占用,主要用来反映CPU模块及扩展模块的一些状态信息。其中%MB0~%MB9为CPU模块的专用寄存器,%MB10~%MB19保留,从%MB20开始为模块的诊断区。
对这些特殊继电器及存储器,最好备有相应手册,以便使用时查找。好在所有编程软件都有这方面的帮助,编程时可随时查用。所以,这里就不再详细介绍了。
(6)标识(P、I、N)。也称指针,用以标识在程序所标示的指令的地址。这是三菱PLC用的内部器件。在使用跳转指令、调子程序(用P)或使用程序中断(用I)时,要用到它。使用时,把它放在梯形图左母线的外(左)边。
西门子PLC的标识用指令(LBL)指明相应序号实现。仅用于程序跳转。它的子程序调用子程序号。
欧姆龙PLC无这样的内部器件,也没有标示一说。它的跳转及子程序调用均使用指令。
此外,三菱还有N,用以指定主控指令(见后)的编号。
(7)其他。以上介绍的内部器件,当然不是PLC内部器件的全部。而且,各厂商、各型号PLC的内部器件也不完全相同,有的还有别的什么名称。如三菱PLC FX2系列还有状态继电器,编号为S000~S999共1000点,用于作步进控制。西门子PLC也有状态继电器S,专用于作步进指令的标号。当然,不被步进指令使用时,也可用作内部继电器。
欧姆龙的CV机可用流程图语言编程,所以,还有转移区(Transition Area),TN0000~TN1023共1024个字,用做流程图编程时转移标志;步进区(Step Area),ST0000~ST1024,也是1024个字,用做流程图编程的“步”标志等。
三菱PLC Q系列等中、大型机还有其他一些内部器件。如锁存继电器(L)、报警器(F)、边沿继电器(V)、特殊链接继电器(SB)、链接继电器(B)、链接寄存器(W)及链接特殊寄存器(SW)等。
再就是西门子PLC中、大型机以及新型的S7-1200小型机没有上述意义上的数据存储器(DM、D或V)。只有数据块(DB)。数据块功能很强,用起来也很方便。但必须先定义,然后才能使用。这样处理方法与将要介绍的PLC变量本质上是完全相同的。
了解了PLC的软器件,即PLC的数据存储区,也就了解了PLC指令的操作数。至于这些操作数怎么被指令操作,将在介绍PLC的指令时,作具体介绍。
提示:由于篇幅限制,以上只是简要地介绍本书涉及的PLC的一些软器件。而全面、系统地弄清所使用的PLC的软器件,对正确使用该PLC,编写好高质量的PLC程序,是至关重要的。因此,在PLC实际编程过程中,建议要多查阅有关PLC的编程手册,切实把有关软器件弄懂、弄清。
3.间接地址
这与计算机C语言的指针类似,用软器件做指针,其内容作为地址。即实际使用的数是用这个“指针”指向地址的内容,而不是这个“指针”本身的值。具体使用有3个办法:
(1)用数据存储器作指针。欧姆龙PLC是用DM。在调用它的DM之前加“∗”或“@”号,即说明为间接地址。前者地址以BCD码计,后者以十六进制计。如“∗DM100”,而DM100的值为十进制数100,则实际地址是DM0100,DM0100的值才是真正的操作数。再如“@DM100”,而DM100的值为十六进制数100,则实际地址是DM0256,DM0256的值才是真正的操作数。
(2)用变址器(或索引寄存器)作指针。它也是软器件,但专用作指针,以对PLC软器件作间接访问。如欧姆龙CJ1机共有16个索引寄存器,地址从IR00~IR15。所加的前缀为“IR”。
提示:索引寄存器为双字长,存储的地址为绝对地址(absolute memory addresses in I/Omemory)。可存字(word)地址,也可存储位(bit)地址。存位地址时,高7个数位(digit)存字(通道)地址,低数位存储位地址。对其赋值,不能简单地用MOV之类指令,要用相应的地址赋值指令,即MOVB(560)指令。
在过去的欧姆龙PLC中、只有DM区可间接访问,但有了这个索引寄存器后,这样的间接访问,就可扩大到整个I/O内存区。
欧姆龙CJ1机还有16个数据寄存器,地址从DR00~DR15。所加的前缀为“DR”。它常与索引寄存器配合使用。
三菱称之为变址寄存器V及Z,各为16位。可单独使用(只使用V),也可合起来使用(V上位数,Z下位数,并以Z的地址代表其地址)。用双字时,可访问的数据区几乎不受限制。
(3)用双字做指针。西门子PLC就是这样,用双字先赋值软器件的实际内存地址(被赋值的地址前加“&”)。然后用这个双字作地址指针,作间接地址。只是在指针前加“∗”。其办法与C语言用的办法相同。只是它只能以字节为单位访问。
4.符号地址(Symbol)
上述软器件或间接地址的名称主要是前缀字母与数字,看不出它的意义。用它作操作数编写的程序,可读性较差,不易理解。虽然可对其加注,但采用了有一定含义的符号与实际地址(软器件)关联,并在程序中用这个符号地址代表实际地址,则更方便些。
同时,使用符号地址还便于程序更改,如地址变动,可以不改程序,只需重新编辑符号与地址的关联就可以了。此外,使用符号地址还便于程序移植与重用,为用户建立功能库、功能块库或程序库提供了可能。所以,目前PLC编程很少不用符号地址。
使用符号地址的另外还有如下重要好处:
(1)可分别定义符号的作用范围,便于程序数据管理。
(2)设定数据类型,作高级设定时,还可设定数组,便于程序数据的正确使用。
符号地址是用编程软件中符号编辑器编辑。不同厂商软件有不同的编辑器。但都是用它添加符号名称,确定数据类型,进行地址关联以及必要的加注。这里强调数据类型很重要,因为有了它便于发现地址关联的错误。
欧姆龙编程软件还可自动分配符号地址所使用(相关联)的实际地址。办法是在“工程”窗口的PLC项处,点击鼠标右键。再在之后弹出的菜单上,点击“内存分配”项下的“自动分配”项。这时,将弹出“PLC自动内存自动分配”窗口。在其上选择“允许此PLC的自动分配”,并指定相应可用于自动分配的内存区。这样,编辑符号地址时,系统将自动分配所使用的实际地址。
有的PLC还可用微软的电子表格等工具软件编辑,其所编辑数据可用导入、导出或复制、粘贴的方法与符号编辑器共享。