S7-1200 PLC的逻辑运算指令,搞懂请加1
在前面的几篇文章中介绍了移动操作指令、转换操作指令等,这篇文章就开始介绍一下逻辑运算指令吧。
在S7-1200 PLC中的逻辑运算指令包括了逻辑与运算、逻辑或运算、逻辑异或运算、逻辑取反运算、编码与译码指令、选择指令、多路复用与多路分用指令 。
下面我们分别对这些指令进行解释说明。
1、逻辑运算指令
逻辑与运算、逻辑或运算、逻辑异或运算、逻辑取反运算都是我们常见的逻辑运算指令,如果又用过S7-200/200 SMART PLC的同学会有了解,对于逻辑运算指令,其实基本PLC都是支持的,功能是也是一样的。
逻辑运算指令支持的数据类型是BYTE/WORD/DWORD这三种,这几个指令使用的还是比较多的,大家还是需要掌握一下。
逻辑与指令AND:当参与运算的所有数中对应的位是1时,那么结果就为1。
逻辑或指令OR:当参与运算的所有数中对应的位有1时,那么结果为1。
逻辑异或指令XOR:当参与运算的所有数中对应的位相同时,那么结果为0;不同时则为1。
逻辑取反指令INV:对输入的数按二进制位进行取反,也就是0变成1,1变成0。
上图中是在程序监控中以十六进制显示的,大家可以打开监控表将显示格式切换成二进制去看。
2、编码指令ENCO和译码指令DECO
编码指令选择输入的最低有效位,并将该位号写入到输出中去。
(注意:输入变量的数据类型为字符串,输出变量的数据类型是INT类型。)
译码指令首先读取输入的值,并将输出值中的位号与读取值对应的那个位置,输出值的其它位以零进行填充
(注意:输入变量的数据类型是UINT,输出变量的数据类型可以是BYTE/WORD/DWORD的数据类型。)
可能以这样的文字描述比较难理解,看一下下面的程序及对应的解释你就清楚了。
上图的程序中ENCO的输入 16#0B70,二进制数是0000_1011_0111_0000,最低有效位也就是为1的最低位是bit4位,所以输出MW14存储的就是4。DECO的输入是6,就将输出的bit6位设置为1,其他位设置为0,所以输出MW18的二进制数是0000_0000_0100_0000。
3、选择SEL、多路复用MUX、和多路分用DEMUX
选择指令SEL是根据输入G的情况,从而选择输入IN0和输入IN1中的一个,把它的内容复制到输出OUT中。也就是说如果G的状态是0,那么就把IN0的值移动到OUT中去,如果G的状态是1,那么就把IN1的值移动到OUT中去。
其实这个指令可以代替一些场合的移动操作指令,也就是传送指令的使用。
多路复用指令MUX是以输入K中的值作为输入值IN端的编号,比如K的值等于1,就表示把IN1的值复制到输出OUT中去。对于这个指令,我们是可以增加它的输入管脚的,最多可以增加到多少呢?
最多是可以增加到32个管脚。如果K中的值不能表示输入管脚的编号的情况下,那么就把ELSE的值输出到OUT中去。
多路分用指令DEMUX的含义和多路复用指令MUX是有一定的相似的,DEMUX指令是以输入K的值作为输出OUT的编号,跟MUX一样,这个指令也是可以增加管脚的,但是增加的是输出的管脚。
如果K的值等于1,那么就把输入IN的值复制到OUT1中去,K的值等于2,就把输入IN的值复制到OUT2中去。
以上就是S7-1200 PLC的逻辑运算指令,指令中的选择SEL、多路复用MUX、和多路分用DEMUX这三个指令也是S7-200/200 SMART PLC没有的,如果是熟悉S7-200/200 SMART PLC的同学,可以重点学习这几个指令的使用即可啦~
到此为止,逻辑运算指令就介绍完了,下一篇文字继续给大家介绍其他指令——移位和循环移位指令,欢迎大家继续关注哦~
(技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)
S7-1500PLC梯形图(LAD)基础指令——字逻辑运算3
SEL:选择
说明
“选择”指令根据开关(输入 G)的情况,选择输入 IN0 或 IN1 中的一个,并将其内容复制到输出 OUT。如果输入 G 的信号状态为“0”,则移动输入 IN0 的值。如果输入 G 的信号状态为“1”,则将输入 IN1 的值移动到输出 OUT 中。
所有参数的所有变量都必须具有相同的数据类型。
参数
下表列出了“选择”指令的参数:
参数
声明
数据类型
存储区
说明
S7-1200
S7-1500
S7-1200
S7-1500
EN
Input
BOOL
BOOL
I、Q、M、D、L 或常量
I、Q、M、D、L 或常量
使能输入
ENO
Output
BOOL
BOOL
I、Q、M、D、L
I、Q、M、D、L
使能输出
G
Input
BOOL
BOOL
I、Q、M、D、L 或常量
I、Q、M、D、L、T、C 或常量
开关
IN0
Input
位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE
位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE
I、Q、M、D、L、P 或常量
I、Q、M、D、L、P 或常量
第一个输入值
IN1
Input
位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE
位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE
I、Q、M、D、L、P 或常量
I、Q、M、D、L、P 或常量
第二个输入值
OUT
Output
位字符串、整数、浮点数、定时器、TOD、CHAR、WCHAR、DATE
位字符串、整数、浮点数、定时器、TOD、LTOD、LDT、CHAR、WCHAR、DATE
I、Q、M、D、L、P
I、Q、M、D、L、P
结果
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数
操作数
值
G
TagIn_G
0
1
IN0
TagIn_Value0
W#16#0000
W#16#4C
IN1
TagIn_Value1
W#16#FFFF
W#16#5E
OUT
TagOut_Value
W#16#0000
W#16#5E
如果操作数“TagIn”的信号状态为“1”,则执行该指令。根据“TagIn_G”输入的信号状态,选择“TagIn_Value0”或“TagIn_Value1”输入的值并将其移动到“TagOut_Value”输出。如果成功执行了该指令,则使能输出 ENO 的信号状态为“1”,同时置位输出“TagOut”。
MUX:多路复用
说明
可以使用指令“多路复用”将选定输入的内容复制到输出 OUT。可以扩展指令框中可选输入的编号。最多可声明 32 个输入。
输入会在该框中自动编号。编号从 IN0 开始,每次新增输入后将连续递增。可以使用参数 K 定义其内容要复制到输出 OUT 中的输入。如果参数 K 的值大于可用输入数,则参数 ELSE 的内容将复制到输出 OUT 中,并且使能输出 ENO 的信号状态会被指定为“0”。
仅当所有输入和输出 OUT 中变量的数据类型都相同时,才能执行“多路复用”指令。参数 K 有所例外,因为只能为其指定整数。
如果满足下列条件之一,则使能输出 ENO 的信号状态为“0”:
使能输入 EN 的信号状态为“0”。参数 K 的输入超出了可用输入。这不受是否使用输入 ELSE 的影响。输出 OUT 中的值将会改变。执行该指令期间出错。参数
下表列出了“多路复用”指令的参数:
参数
声明
数据类型
存储区
说明
S7-1200
S7-1500
EN
Input
BOOL
BOOL
I、Q、M、D、L 或常量
使能输入
ENO
Output
BOOL
BOOL
I、Q、M、D、L
使能输出
K
Input
整数
整数
I、Q、M、D、L、P 或常量
指定要复制哪个输入的数据。
如果 K = 0,则参数 IN0如果 K = 1,则参数 IN1,依此类推IN0
Input
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P 或常量
第一个输入值
IN1
Input
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P 或常量
第二个输入值
INn
Input
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P 或常量
可选的输入值
ELSE
Input
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P 或常量
指定 K > n 时要复制的值。
OUT
Output
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P
要将值复制到的输出。
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关有效数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数
操作数
值
K
Tag_Number
1
IN0
Tag_Value_0
DW#16#00000000
IN1
Tag_Value_1
DW#16#003E4A7D
ELSE
Tag_Value_2
DW#16#FFFF0000
OUT
Tag_Result
DW#16#003E4A7D
如果操作数“Tag_Input”的信号状态为“1”,则执行该指令。根据操作数“Tag_Number”的值,复制输入“Tag_Value_1”的值,并将其分配给输出“Tag_Result”的操作数。如果成功执行该指令,则置位使能输出“ENO”和“Tag_Output”。
DEMUX:多路分用
说明
可以使用指令“多路分用”将输入 IN 的内容复制到选定的输出。可以在指令框中扩展选定输出的编号。在此框中自动对输出编号。编号从 OUT0 开始,对于每个新输出,此编号连续递增。可以使用参数 K 定义要将输入 IN 的内容复制到的输出。其它输出则保持不变。如果参数 K 的值大于可用的输出数目,则将输入 IN 的内容复制到参数 ELSE 中,并将使能输出 ENO 的信号状态指定为“0”。
只有当所有输入 IN 与所有输出具有相同数据类型时,才能执行指令“多路分用”。参数 K 有所例外,因为只能为其指定整数。
如果满足下列条件之一,将复位使能输出 ENO:
使能输入 EN 的信号状态为“0”。参数 K 的值大于可用输出数。执行该指令期间出错。参数
下表列出了指令“多路分用”的参数:
参数
声明
数据类型
存储区
说明
S7-1200
S7-1500
EN
Input
BOOL
BOOL
I、Q、M、D、L 或常量
使能输入
ENO
Output
BOOL
BOOL
I、Q、M、D、L
使能输出
K
Input
整数
整数
I、Q、M、D、L、P 或常量
指定要将输入值 (IN) 复制到的输出。
如果 K = 0,则复制参数 OUT0如果 K = 1,则复制参数 OUT1,依此类推IN
Input
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P 或常量
输入值
OUT0
Output
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P
第一个输出
OUT1
Output
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P
第二个输出
OUTn
Output
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P
可选输出
ELSE
Output
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、DATE
二进制数、整数、浮点数、定时器、CHAR、WCHAR、TOD、LTOD、DATE、LDT
I、Q、M、D、L、P
要将输入值(K > n 中的 IN)复制到的输出。
可以从指令框的“???”下拉列表中选择该指令的数据类型。
有关可用数据类型的更多信息,请参见“另请参见”。
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
执行程序段之前“多路分用”指令的输入值
参数
操作数
值
K
Tag_Number
1
4
IN
Tag_Value
DW#16#FFFFFFFF
DW#16#003E4A7D
执行程序段之后“多路分用”指令的输出值
参数
操作数
值
OUT0
Tag_Output_0
不变
不变
OUT1
Tag_Output_1
DW#16#FFFFFFFF
不变
ELSE
Tag_Output_2
不变
DW#16#003E4A7D
如果操作数“Tag_Input”的信号状态为“1”,则执行该指令。根据操作数“Tag_Number”的值,将输入“IN”的值复制到对应的输出。
相关问答
sel指令含义?
SEL是SystemEventLog(系统事件日志)的缩写。SEL指令通常用于管理系统硬件中的事件日志,以记录和显示系统发生的各种事件和故障。SEL指令可以用于以下操作:...
伺服电机TL-SEL、TLC是什么意思。怎么控制伺服能让零点设置为触碰位置?
按你的意思,得要检测出伺服电机的扭矩,这个扭矩达到一定值就要让伺服电机停下来。伺服电机本身貌似没有设置扭矩这个功能。那就要让伺服驱动器和PLC之间能通...
西门子PLC中什么叫PID指令啊?
PID指比例积分微分,Proportion比例,Integration积分,Differentiation微分西门子PLC编程软件中有PID向导,程序中的PID程序块可利用s7-Micro/win程...
CP1L,CPU‘M’的新PLC怎么处理?电脑XP-ZOL问答
启动软件,在工具栏选择---工具----选项---PLC---在PLC类型里面选择支持的类型就可以了,如图:或者安装更高版本的软件。有用(0)回复753223596cx-programmer7...
abb531变频器参数设置步骤?
一、变频器的简朴本地启动1.首先确定空开闭合,接触器得电;2.按LOC/REM使变频器为本地控制模式3.按PAR进入控制盘的参数设置模式用双箭头键选到99参数组...
丰炜plc编程软件中的PC通讯端口肿么设定-ZOL问答
回到PLC编程软件,选择“在线”菜单栏,从下拉菜单中选择“传输设置”。在“传输设置”对话框中,需要对“串行USB”接口进行设置。然后在弹出的端口设置界面将c...
小米手机怎么输入指令,比如*#*#34971539#*#*-ZOL问答
安卓手机输入调试命令是在拨号界面中输入的,虽然智能手机相对于实体按键手机取...高素质大光圈便携超广角变焦索尼SEL1625G镜头实拍体验评论3带着富士GFX100...
plc负载电源是根据什么决定的-ZOL问答
PLC内部DC5V电源的负载能力。S7-200PLC内部可以提供的DC5V电源为CPU模块和扩展模块提供工作电源。其中扩展模块所需的5V工作电源是由CPU模块通过总线连接器...
请问三菱PLC编程线USB-SC09与USB-SC09-FX不同?-ZOL问答
三菱PLC编程线USB-SC09与USB-SC09-FX区别为:1、USB-SC09-FX仅用于三菱FX系列...高素质大光圈便携超广角变焦索尼SEL1625G镜头实拍体验评论4带着富士...
请问PC电源中的接口分别是什么接口?-ZOL问答
如果有了PLC程序,基本上直接强制输出是不可能的。因为程序在执行,一个循环刷新一次,输出最后定位到程序运行结果。也就是说,还是PLC程序在决定输出的状态。但...
扫一扫微信交流