您现在的位置是:首页 > PLC技术 > PLC技术
S7-300/400系列PLC的位逻辑指令
来源:艾特贸易2018-01-19
简介1.触点指令 STEP 7中提供的触点指令如表2-14所示,在触点指令中分为标准触点指令、取反指令和沿检测指令。 (1)标准触点指令 触点表示一个位信号的状态,地址可以选择 I、Q、M、DB、
1.触点指令
STEP 7中提供的触点指令如表2-14所示,在触点指令中分为标准触点指令、取反指令和沿检测指令。
(1)标准触点指令
触点表示一个位信号的状态,地址可以选择I、Q、M、DB、L数据区,触点可以是输入信号、程序处理的中间点及与其他站点通信的数据位信号,在LAD中常开触点指令为“-||-”,常闭触点为“-|/|-”,当前值为1时,常开触点闭合;当前值为0时,常闭触点闭合。在LAD编程时,标准触点间的“与”、“或”、“异或”操作没有相应指令,需要通过标准指令搭接出来。使用STL编程,对常开触点使用A(与)、0(或)、X(异或)指令,对常闭触点使用AN(与非)、ON(或非)、XN(异或非)指令,两段程序的逻辑操作,需要使用嵌套符号“()”。
表2-14 触点指令
(2)取反指令
取反指令(-|NOT|-、NOT)改变能流输入的状态,将当前值由0变为1,或者由1变为0。
(3)沿检测指令
信号沿的检测分为上升沿检测(—(P)—、FP)和下降沿检测(—(N)—、FN),沿信号在程序中比较常见,如电动机启动、停止信号或故障信号的捕捉等都是通过沿信号实现的。上升沿检测指令每检测一次O到1的正跳变,让能流接通一个扫描周期,下降沿检测指令每检测一次1到0的负跳变,让能流接通一个扫描周期。—(P)—与POS、—(N)—与NEG功能相同,前者检测指令前面RLO信号的跳变,后者检测一个位地址的跳变。
使用触点指令的示例程序如表2-15所示。
表2-15 触点指令的示例程序
所有的触点指令不能对外设输入输出区进行操作。例如A PIO.O指令为非法。在程序中能流不能反向,“或”操作不能短路,如图2-9所示,在这些情况下,STEP 7会自动检查,程序不能进行有效地连接。
图2-9触点编程错误举例
2.线圈指令
STEP 7中提供的线圈指令如表2-16所示,在线圈指令中分为输出指令和置位/复位指令。
表2-16 线圈指令
(1)线圈输出指令
线圈指令对一个位信号进行赋值,地址可以选择Q、M、DB、L数据区,线圈可以是输出信号、程序处理的中间点,当触发条件满足(RLO=1),线圈被赋值l,当条件再次不满足时(RLO=0),线圈被赋值0。在程序处理中,每个线圈可以带有若干个触点(没有限制),线圈的值决定常开触点、常闭触点的状态。在LAD中线圈输出指令为“—()”,总是在一个程序段的最右边,如果需要得到逻辑处理的中间状态,可以使用中间输出指令“—(≠)—”查询,中间输出指令不能在一个程序段的两端使用;STL编程中只有赋值指令“=”,中间输出指令可以通过编程实现。
(2)置位/复位指令
当触发条件满足( RLO=1),置位指令将一个线圈置1,当条件再次不满足(RLO=0),线圈值保持不变,只有触发复位指令才能将线圈值复位为0。单独的复位指令也可以对定时器、计数器的值进行清零。LAD编程指令中RS、SR触发器带有触发优先级,置位、复位信号同时为1时,优先级高的指令触发。STL编程中没有RS、SR触发器,置位、复位的优先级与指令在程序中的位置有关,通常指令在后的优先级高。
使用线圈指令的示例程序如表2-17所示。
表2-17 线圈指令的示例程序
所有的线圈指令不能对外设输入、输出区进行操作。例如,=P QO.O指令为非法。只有触发条件才能触发输出或置位、复位。例如,在STL程序中,触发条件为状态字的RLO位,为1时触发。示例程序如下:
Network 1:
L 1
Q10.2
在程序段1中,Q10.2不能被赋值,因为L1(装载到累加器1中)不能使RL0位变为1。示例程序如下:
Network 2:
S Q10.3
在程序段2,Q 10.3能否被置位,需要参考RLO位的状态,如果需要程序无条件置位Q103,可以在置位语句前加上条件,程序如下:
Network 3:
AN M 20.0
S Q10.3
可以将M20.0作为一个未用的触点,语句ANM 20.0默认的逻辑结果RLO为1,也可以直接使用SET指令将当前的RLO置位,程序如下:
Network 4:
SET
S Q10.3
3.RLO操作指令
在位操作中,还有一些指令可以直接对状态字中的逻辑结果—/RLO进行操作,指令如表2-18所示。
表2-18 RLO操作指令
-(SAVE) /SAVE指令将RLO状态存入BR寄存器,如果没有存储BR位信号,编写的函数或者函数块使用LAD语言直接调用时,函数的输出ENO不使能,函数显示为虚线,如图2-10所示,FC1的ENO不输出,Ml00.1不能为1。
从程序显示上看,FC1似乎没有调用,实际已经调用,只是显示问题,在调用FC1前加入条件(常开或者常闭触点)或者在FC1的程序结尾使用SAVE指令,可以改变FC1调用的显示状态,例如在FC1结尾加入如下语句:
Network X:
SET
SAVE
图2-10没有将RLO位存入BR调用FC1显示状态
在程序结尾使用SAVE指令后,主程序中调用FC1的在线监控状态变为如图2-11所示,FC1的显示发生变化。
图2-11将RLO位存入BR寄存器后调用FC1的显示状态
SET和CLR指令只有在STL编程中使用,可以将上面的操作结果RLO置位或者复位,影响线圈指令的输出,举例如下:
SET
M10.1
M10.2
CLR
M10.3
M10.4
语句执行后,Ml0.1、M10.2输出为1,M10.3、M10.4输出为0。
4.立即读与立即写
(1)立即读
立即读可以不经过过程映像区的处理,直接读出外设输入地址的信息。例如16点的输入模块设定的地址为10,地址位于过程映像输入区,通常情况下使用输入地址标识符“I”查询输入模块信息,如果CPU的扫描时间为40ms,输入信号的状态需要40ms更新一次。使用立即读的方法,不依赖CPU的扫描时间,当程序执行到该地址区(使用外设地址地址区PI替代I)时,立即更新输入点信号进行逻辑处理。立即读不考虑输入信号的一致性,着重于输入信号的立即采集,适合有严格时间要求的应用,在程序中可以多次使用立即读访问同一个地址区,这样在一个程序执行周期中(一个CPU扫描)可以多次更新一个输入模块的状态(使用过程映像区,一个扫描周期只更新一次)。立即读有固定的编程格式,如图2-12所示。
图2-12立即读的编程模式
当程序执行PIW10时,将输入地址为10的16点输入模块的信号状态立即读出(外设输入区只能使用字节、字、双字读出),通过WAND_W(两个字相“与”)指令过滤其他位信号,指令处理如下:
PIW10 0000000000101010
W#16#2 00000000000000 1 0
MW2 00000000000000 1 0
只对PIW10中第二个位信号进行处理,如果I1.0、第二个位信号为1,字相“与”的结果不为0,< >0导通,赋值M6.1为l。图2-11所示为LAD程序,可以转换为STL程序,在STL程序中使用BR位判断字逻辑结果。
(2)立即写
立即写与立即读功能相同,可以不经过过程映像区的处理,直接将逻辑结果写到输出地址区。使用立即写不依赖CPU的扫描时间,当程序执行到该地址区(使用外设地址地址区PQ替代Q)时,立即更新输出点状态。在程序中可以多次使用立即写功能访问同一地址区,这样在一个程序执行周期中,可以多次更新一个输出状态。立即写的编程格式如图2-13所示。
图2-13立即写编程
在程序段1中,Ml0.1为1时,只有经过输出过程映像区更新时才能触发Ql0.1输出(等待一个扫描周期)。在程序段2中,将QB10传送到PQB10中,当程序扫描到PQB10时,立即输出,更新输出模块的状态。
点击排行
