可编程控制器——梯形图指令.ppt_第1页
可编程控制器——梯形图指令.ppt_第2页
可编程控制器——梯形图指令.ppt_第3页
可编程控制器——梯形图指令.ppt_第4页
可编程控制器——梯形图指令.ppt_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GE可编程控制器,张晓丹, 梯形图线圈 梯形图触点 梯形图定时器 梯形图计数器 梯形图数据转移功能块 梯形图数据表功能块 梯形图数学运算功能块 梯形图程序流程功能块 梯形图关系运算功能块 梯形图高级数学运算 梯形图位操作 梯形图控制功能块 梯形图转换功能块,GE梯形图指令,1.线圈,线圈用来控制分配给线圈的离散(布尔)变量。条件逻辑必须用来控制线圈的能流。线圈 直接引起动作。它们不流过能流到右边。如果程序内另外的逻辑执行作为线圈条件的结果,你可以使用一个内部参考地址给线圈或一个延续线圈/触点组合。,图形表示 保持型的布尔变量。在电源掉电时,分配的布尔变量的值被保存,当PLC从停止模式变为运行模式,再恢复为保存的值。 无保持的布尔变量. 当电源掉电或PLC从停止模式变为运行模式时,分配的布尔变量的值设定为0。 %T总是无保持的。只有%M 和 %Q 可以是无保持的或保持的。,一个保持变量分配给线圈,一个非保持变量分配给线圈,操作 当线圈收到能流时,它设定其相应的布尔变量为ON(1)。当线圈收到无能流时,它设定其相应的布尔变量为OFF(0)。 线圈可以分配一个保持变量或非保持变量。,常开线圈,常闭线圈,一个保持变量分配给负线圈,一个非保持变量分配给负线圈,操作 当它没有收到能流时,负线圈 (NCCOIL) 设定离散参考地址为ON。NCCOIL可以分配给一个保持变量或非保持变量。,置位线圈和复位线圈,一个保持变量分配给置位线圈和复位线圈,一个非保持变量分配给置位线圈和复位线圈,你可以使用SETCOIL 和RESETCOIL,保持(锁定)变量状态ON或OFF。你可以分配同样布尔变量给SETCOIL和RESETCOIL,不需要任何限制。 当SETCOIL收到能流,它设定它的相关布尔变量为ON。当它收到非能流,它对布尔变量没有影响。SETCOIL是唯一不能设定与它关联的布尔变量为OFF的线圈。为了设定相关的布尔变量为OFF,建议使用RESETCOIL. 当RESETCOIL收到能流,它设定它的相关布尔变量为 OFF. 当它收到非能流,它对布尔变量没有影响。RESETCOIL不能设定它相关的布尔变量为ON的线圈. 为了设定相关的布尔变量为 ON, 建议使用SETCOIL.,SETCOIL 和 RESETCOIL 可以分配保持变量或非保持变量。,只要变量E2或E6为ON,E1表示的线圈变为ON。只要变量E3或E5为ON,E1表示的 线圈变为OFF。,跳变线圈 POSCOIL和NEGCOIL,转换线圈 - PTCOIL 和 NTCOIL,注意,一但PTCOIL或NTCOIL变为ON或OFF,它更新它的实例数据。 PTCOIL或NTCOIL的多个实例能与同一布尔变量相关联,但是PTCOIL或NTCOIL的每个实例的实例数据与布尔变量相关是唯一的,那就是,它独自跟踪。 要求数据是非保持的,那就是,当CPU从停止变为运行模式时,它清除为OFF。 你可以使用任一类型转换线圈与参考地址,保持的或非保持的内存(%Q, %M, %T, %G, %SA,%SB, or %SC)。 一个梯级行以一个转换线圈结束,不能有另一个有线圈的分支,甚至另一个转换线圈。 实例数据使用符号离散内存。,警告:不要通过强制其参考位来强制跳变线圈。如果强制了跳变线圈,不仅跳变线圈对参考位无效,而且在取消跳变线圈的强制时,线圈可能持续一个扫描周期为ON。这将对PLC LD逻辑和与PLC相连的现场设备引起不可预料的结果。,注意 你可以使用任何一种跳变线圈与参考地址,保持或非保持内存 (%Q, %M, %T, %G,%SA, %SB, or %SC). 不要使用跳变触点在跳变线圈上,因为线圈使用跳变位存储线圈的能流值。 一个梯级以一个跳变线圈结束,不能有另一个有线圈的分支,甚至另一个跳变线圈。,警告: 不要从外部设备(例如, PCM, 编程器, 或 ADS)写跳换线圈的参考位,因为这将破坏线圈的值只保持一个周期的特性,线圈不可能按照描述来动作。,当参考E1从OFF变为ON时,线圈E2和E3收到能流,在1个逻辑扫描周期内线圈E2变为 ON。当参考E1从ON变为OFF时,线圈E2和E3失去能流,在1个逻辑扫描周期内线圈E3 变为ON。,触点,触点用来监视参考地址的状态。是否触点通过能流,取决于被监视参考地址的状态和触点类型。如果它的状态为1,参考地址为ON;如果它的状态为0,参考地址为OFF。,常闭触点,操作 常闭触点 (NCCON) 作为一个开关,如果BOOLV操作数为OFF(假,0),则通过能流。,常开触点,操作 常开触点 (NCCON) 作为一个开关,如果BOOLV操作数为ON(真,1),则通过能流。,跳变触点,警告:不要使用POSCON 或 NEGCON跳变触点给那些已经被转换线圈(同样是一次有效)或置位和复位线圈使用的变量。,参考点的转换位每次受到写入点的影响。 当点从OFF转变为ON 时,它设定POSCON 。 当点从ON转变为OFF 时,它设定NEGCON 。 当点反方向转换时或当写后的状态与写前状态一样时,它清除POSCON或NEGCON。那就是,ON到ON,OFF到OFF。,示例 1,当元素E1从OFF转变为ON时,线圈 E2在一个逻辑扫描内为ON。当元素E3从ON转变为OFF时,线圈 E4在一个逻辑扫描内为ON。,示例 2,%M00017由BIT_SET 函数设定位,然后由BIT_CLR函数清除。正跳变触点X1 激活BIT_SET, 负转变触点X2激活BIT_CLR. 与位%M00017关联的正跳变将保持为ON,直到BIT_CLR 函数复位%M00017。因为只有当触点X1从OFF变为ON时才写位。同样,与位M00017关联的负跳变将为ON,直到BIT_SET函数设定%M00017为ON。,转变触点 - PTCON 和 NTCON,%I1: 输入信号 %M1:输出线圈 T :一次扫描周期,延续触点与延续线圈,每行程序最多可以有9个触点,一个线圈。如超过这个限制,则要用到延续触点与延续线圈。注意延续触点与延续线圈的位置关系。,当%I1得电时,%M1与%M2不会得电,只有%I2得电时,%M1与%M2才会得电。,一些系统触点的含意,(只能做触点用,不能做线圈用): ALW_ON: 常开触点; ALW_OFF: 常闭触点; FST_SCN: 在开机的第一次扫描时为“1”, 其他时间为“0” T_10ms: 周期为0.01秒的方波; T_100ms: 周期为0.1秒的方波; T_Sec: 周期为1秒的方波; T_Min: 周期为1分钟的方波。,计数器函数,计数器中的函数数据块,每个计数器用一个三个字的WORD 数组(%R, %P, %L)或存储器(%W)来储存下列信息.,当开始一个计数器,必须先为三个字的WORD数组(寄存器块)设定一个开始地址,警告: 不要用两个连续的寄存器作为两个计数器的起始地址. CIMPLICITY Logic Developer - PLC对于寄存器块重叠不进行检查也不进行警告. 如果将第二个计数器的当前值放置在前一个计数器的预置值之上,则计数器将不工作.,减法计数器(DNCTR)函数从一预置值递减. PV的最小值是零. 最大值是+32,767 当CV达到其最小值-32,768就保持直到被复位. 当DNCTR被复位, CV被设置成PV值当输入的使能信号由变OFF为ON ,CV 开始以步长为.1递减只要CV 小于等于0,则输出为ON.,计数端,复位端,预置值,输出端,当前值,该计数器是复位优先的计数器,当复位端为“1”时(无需上升沿跃变),当前值于预置值均被清零,如有输出,也被清零。,例,加法计数器,当计数端输入由“01”(脉冲信号),当前值加“1”,当当前值等于预置值时,输出端置“1”。只要当前值大于或等于预置值,输出端始终为“1”,而且该输出端带有断电自保功能,在上电时不自动初始化。 该计数器是复位优先的计数器,当复位端为“1”时(无需上升沿跃变),当前值于预置值均被清零,如有输出,也被清零。 该计数器计数范围为0至32,767。,每一个计数器需占用3个连续的寄存器变量。 计数端的输入信号一定要是脉冲信号,否则将会屏蔽下一次计数。 减计数器,例,定时器,延时断开计时器,定时器将采用不同的步长来计时,这取决于CPU: 秒 0.1秒 0.01秒 0.001秒,Enable,复位端,输出端,enable,预置值,输出,当前值,PV的范围为0 到 +32,767个时间单位。如果PV超出范围,则对于定时器无效。当断电时定时器的状态保持不变; 在上电时不会发生自动初始化 如果预设值为零或为负,OFDT将不传递使能信号。,不要将?, ?+1,或?+2 地址用于其它指令。 参考地址的交叠会引起定时器运行的不稳定。,通过应用常闭线圈,输出的结果被保留。每当%I0001关闭则OFDT函数关闭常闭线圈。在%I0001打开后, Q0001保持关闭两秒钟然后打开。,保持延时接通定时器,enable,预置值,输出,当前值,ONDTR_SEC ONDTR_TENTHS ONDTR_HUNDS ONDTR_THOUS,复位端,例,延时接通定时器,enable,预置值,输出,当前值,TMR_SEC TMR_TENTHS TMR_HUNDS TMR_THOUS,范围为0 到 +32,767个时间单位。当掉电时定时器的状态保持不变;在上电时不会发生自动初始化。 当TMR接到使能信号 , 便开始计时(CV增加). 当在LD程序中扫描到定时器, 定时器的CV便更新来反映在上次TMR重置后过了多少时间. 只要使能信号保持为ON, 这个更新就发生. 当CV等于或超过PV, TMR中止并且向右端传递使能信号. 定时器继续计时直到到达最大值(32,767时间单位). 使能信号输入端由ON变为OFF, TMR停止计时, CV被重置为零并且Q被关闭. 当TMR被激活并且PV CV时, 输出端Q被激活 .,关系运算符,关系函数比较两个相同类型的值或确定一个值是否在某个指定的范围内。源值不受影响。,比较,当CMP接收到使能信号, 便将IN1和IN2进行比较。 如果 IN1 IN2, CMP激活GT (大于) 输出. IN1和IN2必须是同样的数据类型. CMP可以比较如下类型的数据: DINT, INT,REAL,和UINT. 对于不同数据类型的比较, 首先使用转换函数进行数据转换. 当接收到使能信号, CMP便将使能信号传递到右端, 除非IN1或IN2不是数.,助记符: CMP_DINT CMP_INT CMP_REAL CMP_UINT,实例,等于,当函数接收到使能信号,便将IN1于IN2进行比较. IN1和IN2必须是相同的数据类型. 如果IN1和IN2相等,函数传递使能信号, 除非IN1或IN2不是数.,助记符: EQ_DINT EQ_INT EQ_REAL EQ_UINT,大于等于,当函数接收到使能信号,便将IN1于IN2进行比较. IN1和IN2必须是相同的数据类型. 若IN1 IN2, 函数传递使能信号, 除非IN1或IN2不是数.,小于,当函数接收到使能信号,便将IN1于IN2进行比较. IN1和IN2必须是相同的数据类型.如果IN1 IN2, 函数传递使能信号, 除非IN1或IN2不是数.,助记符: LT_DINT LT_INT LT_REAL LT_UINT,小于等于,当函数接收到使能信号,便将IN1于IN2进行比较. IN1和IN2必须是相同的数据类型. 如果IN1 IN2, 函数传递使能信号, 除非IN1或IN2不是数.,助记符: LE_DINT LE_INT LE_REAL LE_UINT,不等于,当函数接收到使能信号,便将IN1于IN2进行比较. IN1和IN2必须是相同的数据类型.如果IN1不等于 IN2, 函数传递使能信号, 除非IN1或IN2不是数.,助记符: NE_DINT NE_INT NE_REAL NE_UINT,范围,范围函数接受到使能信号, 便将IN处的值与L1和L2比较,看是否在其范围内. L1或L2可能是最小值也可能是最大值. 当 Q为ON (1). 否则,Q为OFF (0). 如果成功运行,则传递使能信号到右端.,助记符: RANGE_DINT RANGE_DWORD RANGE_INT RANGE_UINT RANGE_WORD,实例,当RANGE_INT从常开触点%I0001接受到使能信号, 便判断%R00003处的值是否在0到100间(包含0和100). 只有当0 %AI0050 100时, 线圈%M00002为ON.,数学运算,在应用数学函数前, 也需要通过逻辑功能块将数据转换为不同的类型.每一个函数的描述都包括适当的数据类型. 数据类型转换函数那一节讲解如何转换数据为不同的类型.,避免溢出 应用乘和处函数时要小心避免溢出. 如果要将INT型转换为DINT型, 要注意CPU使用标准的2s补足,将符号扩展到最高位.必须检查低十六位的值,并且把它扩展到高16位.如果一个INT型的最高有效位为0(正),则将0移到所有的高16位.如果INT型的最高有效位为1(负),则将-1或十六进制数0FFFFh移到高16位.将DINT型转换为INT型数据就相对简单, 因为低16位(第一个寄存器)是型DINT(32位)的整数部分. 高16位不是0 (正)就是-1 (负),或者DINT型数据太大因此不能转换为16位.,绝对值,当函数接受到使能信号,便将IN的绝对值放置在Q. 函数传递使能信号,除非有以下情况发生: 对于INT型, IN为MININT. 对于DINT型, IN为MINDINT. 对于REAL型, IN不是一个数.,助记符: ABS_DINT ABS_INT ABS_REAL,-2976的绝对值,即2976, 放置在%R00010,加法,当.接收到使能信号时,便将相同类型的IN1和IN2相加,并且将结果存到同样类型的Q中. 函数传递使能信号,除非溢出或有运行错误. 如果发生溢出,结果为可能的带正确符号的最大值,并且没有使能信号传递.,助记符: ADD_DINT ADD_INT ADD_REAL ADD_UINT,例子是想建立一个回路的计数器(计算开关%I0001关闭的次数),运行的总次数储存在%R0002,但是这个设计是失败的 .设计的目的是当%I0001关闭, ADD函数应当把%R0002处的值加一,并且把结果在放入%R0002. 这个设计的问题是当%I0001关闭时,每PLC扫描一次则ADD函数就执行一次. 例如: 如果在五次扫描中%I0001一直保持关闭,那么%I0001尽管在这段时间仅关闭了一次,输出仍然增加了五次.,在改进的线路中, %I0001控制跳变“一个扫描周期有效“)线圈%M0001。每次%I0001关闭%M0001只是在一次扫描中使ADD函数接受到使能信号。为了使%M0001再次关闭,%I0001必须再次打开和关闭。,除法,运行 当DIV函数接收到使能信号时, 便将IN1除以IN2, 并且将结果存到的Q中, IN1和IN2和都必须是相同的类型. DIV是舍去小数,并不是四舍五入到最近的整型值.例如: 24 DIV 5 = 4. 当没有溢出或没有运行错误时,函数传递使能信号. 如果发生溢出,结果为带有正确符号的可能的最大值并且不传递使能信号.,助记符: DIV_DINT DIV_INT DIV_MIXED DIV_REAL DIV_UINT,取模,当MOD函数接受到使能信号, 便将IN1除以IN2,并且把得到的余数放入Q。 IN1 ,IN2和Q都必须是相同的数据类型。结果的符号根IN1的符号相同。输出可以通过如下式子来计算出: Q = IN1-(IN1 DIV IN2) * IN2) 这里DIV运算的到的是商. 当函数接受到使能信号,使能信号输出端一直是ON,除非出现除数是零的情况。在这种情况下,使能信号输出端为OFF.,助记符: MOD_DINT MOD_INT MOD_UINT,乘法,当MUL函数接受到使能信号, 便将IN1和IN2相乘,结果放入Q。IN1 ,IN2和Q都必须是相同的数据类型。 函数传递使能信号,除非溢出或有运行错误.如果发生溢出,结果为带有正确符号的可能的最大值并且不传递使能信号。,助记符: MUL_DINT MUL_INT MUL_MIXED MUL_REAL MUL_UINT,比例缩放,当比例缩放函数接收到使能信号时,便IN将处的数据进行比例缩放,并且把结果放入OUT。,助记符: SCALE_DINT SCALE_INT SCALE_UINT SCALE_WORD,寄存器%R0120-%R0123用来存储缩放时的高低值。将被缩放的输入值是%AI0017处的模拟量输入。缩放后的数据用来控制模拟量输出%AQ0017。当%I0001为ON缩放开始进行。,减法,当SUB函数接收到使能信号,便计算.IN1- IN2.并将结果放入Q,IN1,IN2和Q。 当没有溢出或没有运行错误时,函数传递使能信号. 如果发生溢出,结果为带有正确符号的可能的最大值并且不传递使能信号.,助记符: SUB_DINT SUB_INT SUB_REAL SUB_UINT,程序流函数,调用,非参数化的调用,参数化的调用对应参数化的C语言块或参数化的其他语言的程序块。,当CALL函数接收到使能信号, 便马上扫描指定的子程序块如: LD 块, C 块, 或IL 块(不论是否是参数化的程序块)并且执行它。子程序块运行完毕,则马上转到CALL后面的指令。,注解 CALL函数可用在任何一个LD块,包括MAIN块或参数化的块。 不能调用_MAIN块或 C 程序. 在运行call前,要访问的块必须存在。 可用内存限制了对特定块访问的最大次数。,注释,操作 注释函数用来在程序中输入文本说明信息。当向LD程序中插入注释指令,则显示.?.。在键入信息后,只显示前面的一些字。,数据移动指令,块清除,当.BLKCLR_WORD.接收到使能信号时, 便把从IN处的参考地址开始的数据块清零,当要被清除的数据来自布尔(即不连续的)存储区(%I, %Q,%M, %G, 或 %T),与参考地址关联的变换信息也将被清除. 只要.BLKCLR_WORD.接收到使能信号便将此信号传到右端。,当收到使能信号, %Q 存储区从Q0001开始的32个字(512个点)被清零。与这些地址有关的转换信息也将被清零。,数据块移动,助记: BLKMOV_DINT BLKMOV_DWORD BLKMOV_INT BLKMOV_REAL BLKMOV_UINT BLKMOV_WORD,当.BLKMOV.接收到程序执行信号时, 便将一个包含七个常数的数据块复制到Q端指定为开始的连续的区域。只要.BLKMOV.接收到使能信号便将此信号传到右端。,当输入使能端.#FST_SCN.为ON,.BLKMOV_INT.复制七个输入的常量到存储区(%R0010 到 %R0016)。,助记符: MOVE_BOOL MOVE_DINT MOVE_DWORD MOVE_INT MOVE_REAL MOVE_UINT MOVE_WORD,移动数据,当MOVE函数接收到使能信号时,从PLC存储区的一个区域复制各个位数据到另一个区域。 因为数据是采用位格式来复制的,因此新的区域不须和原来相同的数据类型相同。当MOVE函数接收到使能信号时, 便以位的方式从IN处复制数据到Q 。如果数据是从一个离散的存储区域移向另一个区域,例如:从存储区%I到存储区%T, 与离散存储元素有关的跳变信息便更新,以显示MOVE函数的运行是否引起任何离散存储元素状态的改变。在输入处的数据不改变,除非来源地址和目标地址产生了交叠。,如果一个由Q指定的BOOL型的数组数据不包括一个字节的所有位,当Move函数接到使能信号,与这个字节有关的变换位(不在这个数组里)被清除。输入IN可以是一个变量(提供数据将被移动的区域的地址)也可以是一个常数。如果是一个常数,这个常数值放在由输出参数指定的地址。例如, 若在IN处指定了常数值4,则4便被放在Q指定的存储区域。若指定常数的长度大于1,那么这个常数被放置在以Q指定的为首地址、长度为指定长度的连续区域中。不允许IN和Q处的地址交叠。,V_M00001和V_M00033都是长度为3的WORD数组, 即在每一个队列里有48位。因为PLC不能识别数组,操作参数.?.须设置为3,即总共要移动的字数。当使能输入端V_Q0014为ON, MOVE_WORD从%M00001移动48位到%M00033。若目的地数据与源数据产生16位的重叠,数据的移动照样正确地进行,,MOVE函数运行的结果由函数所选的数据类型来决定, 如下所示. 例如, IN处指定常数值9且长度为4,则9被放置到由Q指定的区域以及接下来的三个区域:,只要%I00003被置位, 三个位数据%M00001, %M00002, 和%M00003分别被移到%M00100, %M00101, 和%M00102. 线圈%Q00001开启.,移位寄存器,当移位寄存器函数(SHFR_BIT, SHFR_DWORD, 或SHFR_WORD)接收到使能信号时并且 R.没有复位, 则SHFR从参考地址移位一个或多个BIT数据, DWORD数据, 或WORD数据到指定的存储区域. 邻近的储存区域作为暂时储存区. 例如,一个word的数据若移位 到一个存有5个word数据的存储区.这次转移的结果是,另一个word数据将被从这个存储区的末端移出.,复位输入(R)的优先权比函数的使能端输入高. 当R有效,移位寄存器的区域(以ST为开始地址,区域长度为“?“指定的长度), 都将置零. 如果函数接收到使能信号并且R没复位, 移位寄存器的每一个BIT, DWORD, 或WORD数据被移动到下一个高位参数地址。移位寄存器里排在最后面的一个数据被移到Q。 IN处移位寄存器的最高地址处的数据被移到以ST为开始的被腾空的区域。 当使能信号被接收到并且R端没有接受到复位信号,程序就将此信号进行传递到右端.,SHFR_WORD工作在寄存存储区%R0001-%R0100. 当重置参数CLEAR接到信号, 移位 寄存器里的字置零。 当NXT_CYC接到使能信号并且CLEAR没有接到, 在%Q0033处的word数据被转移到移位寄存器%R0001。 从移位寄存器%R0100移出的数据被储存到%M0005。注意:在本例, 指定的长度(LEN)和要移动数据的个数(N)并不相同。,总线读取,助记符: BUS_RD_BYTE BUS_RD_DWORD BUS_RD_WORD,总线读取(BUS_RD)函数从总线读取数据。,当.BUS_RMW.接收到使能信号时,便访问总线上的模块。用操作参数R, S, SS, RGN, 和 OFF来决定要读取的存储区地址。 读阶段: BUS_RMW 读取总线地址的byte, word, 或 dword数据 。 修改阶段: 这些byte, word, 或 dword数据与MSK数据进行与(AND)/或(OR)运算。.AND. 和.OR.的选择是通过OP输入端来进行的。MSK是一个一字的值。如果对象是byte数据,则仅用到的MSK低八位。如果对象是word数据,则仅用到MSK的低十六位。 写阶段: 结果写入和读取时相同的总线地址。 只要.BUS_RMW.接收到使能信号便将此信号传到右端,除非有错误发生。, BUS_RMW_WORD只工作于连续的绝对地址(绝对地址=基地址 + 偏移量)。 BUS_RMW_DWORD只工作于是四的倍数的绝对地址。,总线测试和设置,总线测试和设定(BUS_TS)函数操作总线上的信号。BUS_TS 在当前信号所在位置,交换布尔值ON(1).如果此值已经是ON,则BUS_TS得不到信号。如果存在的值是OFF,则信号被复位,并且BUS_TS函数得到信号和它所控制的存储区的使用。信号可通过BUS_WRT函数清零-向信号所在区域写入零。,当.BUS_TS.接收到使能信号时,便访问总线上的模块。应用操作参数R, S, SS,RGN, 和 OFF来决定要读取的存储区地址。然后BUS_TS交换在此地址数据的布尔值ON。如果信号可用(OFF)并被获得,则BUS_TS设置输出Q为ON。只要.BUS_TS.接收到使能信号便将此信号传到右端,除非在执行时有错误发生。,总线写入,当.BUS_WRT.接收到使能信号时,便访问总线上的模块。应用操作参数R, S, SS,RGN, 和 OFF来决定要读取的存储区地址。然后BUS_WRT复制在输入参数IN的数据到总线模板。只要.BUS_WRT.接收到使能信号便将此信号传到右端,除非在执行时有错误发生。,总线读取修改写入,助记符: BUS_RMW_BYTE BUS_RMW_DWORD BUS_RMW_WORD,总线读取/修改/写入(BUS_RMW)函数更新总线上的数据元素。,位操作指令,逻辑与,每当功能块在扫描周期中接收到电流,逻辑与功能块检查输入IN1的位串和输入IN2的位串的相对应的每一位,从最小的指定位开始。可以指定位串的长度为1到256个字。,逻辑非,当逻辑非或逻辑翻转功能接收到电流,它会将输入IN1位串的每位输入的状态翻转成相对的状态放到输出Q的位串的相应位中。 每个扫描周期中功能块接收到电流时,所有的位都会转换一次状态,使输出字符串Q为输入IN1的逻辑补码。功能块在接到电流时传送电流到功能块的右边。,逻辑或,每当功能块在扫描周期中接收到电流,逻辑或功能块检查输入IN1的位串和输入IN2的位串的相对应的每一位,从最小的指定位开始。可以指定字符串的长度为1到256个字。,如果逻辑或功能块发现比较的俩位中其中的一位是1,它会在输出字符串Q的相应的位上置1。如果俩位都是0,在相应的位置上的位上置0。功能块在接收到电流时传送电流到功能块的右边。,逻辑异或,当异或功能块接收到电流,它比较输入IN1和输入IN2的位串的每一位。如果存在不同的位,它会在输出的相应的位置上置1。每次接收到输入使能的扫描,异或功能块都会从最小的检测位开始检测输入IN1和输入IN2的位串的每个相应位。可以指定位串的长度,范围是1到256个字。,检查这一对数据相应的位,只要有一个位是1,异或就在输出Q的相应位置上置1。异或功 能块在接收到输入使能时总是将使能信号向后传递。,移位操作,当左移功能块(SHIFTL_WORD)得电,它将使一个或一组字中的所有位左移指定的位数。当左移进行时,指定数量的位向左移出输出位串。当这些位移出最高有效位(MSB),同样数量的位从最低有效位(LSB)移入。,助记符: SHIFTL_DWORD SHIFTL_WORD SHIFTR_DWORD SHIFTR_WORD,右移 当右移功能块(SHIFTR_WORD)得电,它将使一个或一组字中的所有位右移指定的位数。当右移进行时,指定数量的位向右移出输出位串。当这些位移出最低有效位(LSB),同样数量的位从最高有效位(MSB)移入。,左移和右移 一个长为1到256个字的位串能用于这两个函数.指定移动(N)的数字必须比0大,但不能比位串的位数大。如果N超出范围,在PACSystems.,无移动发生,不产生能流。,被移进字符串首的位由输入参数B1指定。如果指定的移动的位数大于1,每位以相同值 (0或1)填充。B1可能是: 另一功能块的布尔输出 所有为1 所有为0,移位功能块传递能流到右边,除非指定的移动位数为0或比位串数组大。 输出Q 是输入位串的移位复制。如果你想移位输入位串,输出参数Q必须使用与输入参数IN一样的内存地址。在每次接收到能流时,写整个移动字符串。例如,如果移动了4位,B2将是移出的第4位。,只要输入V_I0001被置为1,WORD1开始的输入位串中的位复制到WORD2开始的输出位串。WORD2左移8位,如输入N指定。结果在输出串的起始位置空出的位,被设定为V_I0002的值。,定位指令,位定位函数将在一个位串中定位被置为1的一位的位置。 当使能信号被接收到时,函数将对以输入IN为开始地址的位串扫描。当发现某一位为1,或者是整个位串被扫描完毕,函数将停止扫描。 POS将对位串中第一个非零位定位,如果字符串中没有非零位,POS将置0。串长度可以选择为1 到 256个WORD,注意:当使用位检测,位置位,位清零或是位定位函数时,位的编号是从1到16,而不是从0到15。,位置位,位清零,助记符 BIT_SET_DWORD BIT_SET_WORD BIT_CLR_DWORD BIT_CLR_WORD,置位函数将位串中的一位设置为1。 清零函数通过将位串中的一位设置为0而清除此位。,接到使能信号的每次扫描,该函数置位或清零指定的位。如果用一个变量而不是一个常量指定位数,同样的函数块在连续的扫描中对不同的位置位或清零。可以选择长度为1到256个WORDS的位串。,当使用置位或清零函数时,对于WORD型位输入为1到16,而不是0到15,对于DWORD型为1到32。,位测试,当位测试功能块接通,它将测试位串中的某一位,确定此位当前值为1或0。测试的结果送入输出Q。 此功能块得电时的每次扫描,位测试功能块将其输出Q置为与指定位相同的状态。如果指定位数的不是一个常数而是一个变量,则用此功能块可以在连续扫描中完成对不同位的测试。如果BIT值超出范围(1 BIT (16* 长度)对于一个字和1 BIT(32 *长度)对一个双字), 则Q置为OFF。 可指定的串的长度范围为1 到 256 个WORD或DWORD。,当输入 V_I0001 置位,PRD_CDE中位置为变量 PICKBIT中的值的一位被测试。如果它为1,则输出Q向ADD功能块传递电流使能,使得ADD功能块的输入IN1在当前值的基础上加1。,掩码比较(屏蔽比较指令),功能块比较两个位串的内容。它提供了只比较掩码选定的位的功能。,提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论