本案例使用按钮依次切换8个输出且可控制输出通道,比如控制指示灯,可以输入序号来点亮该序号指示灯,连接时钟信号可以实现跑马灯效果。点击正向按钮则正序依次切换指示灯,如此反复。点击反向按钮则逆序依次切换指示灯。
功能介绍
- 如果EN为FALSE,则所有输出均为FALSE。输入EN必须为TRUE,在E = TRUE时只有一个输出Qn为TRUE。
- 当E = TRUE时,使用输入UP从输出Qn切换到Qn +1,而输入DN将输出Qn切换到Qn-1。
- 当E = TRUE时,可以由SET输入和输入IN值选择主动输出Q0..Q7。如SET=TRUE,IN=5将输出Q5=TRUE,而所有其他输出都设置为FALSE。
- 当E = TRUE时,输入RST=TRUE将输出Q0设置为TRUE,而所有其他输出都设置为FALSE。
- 当E = TRUE时,状态输出总是显示当前选择了哪个输出Qn;当E=FALSE时,状态输出保持不变,E再次变为TRUE时,Qn再次输出。
SELECT_8源代码
SELECT_8实现的是选择器的功能,内部调用一个取模函数INC,详见下面介绍取模运算(INC)以及其代码。
01
取模运算(INC)
取模是除以两个数字时查找余数的操作。因此,当你问“什么是2 mod 2?”时,你是在问 “当你把 2 除以 2 时,余数是多少?”
SELECT_8源代码
FUNCTION_BLOCK "SELECT_8"
TITLE = 'SELECT_8'
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
E : Bool;
SET : Bool;
IN : Int;
UP : Bool;
DN : Bool;
RST : Bool;
END_VAR
VAR_OUTPUT
Q0 : Bool;
Q1 : Bool;
Q2 : Bool;
Q3 : Bool;
Q4 : Bool;
Q5 : Bool;
Q6 : Bool;
Q7 : Bool;
STATE : Int;
END_VAR
VAR
last_up : Bool;
last_dn : Bool;
END_VAR
BEGIN
IF #RST THEN
#STATE := 0;
ELSIF #SET THEN
#STATE := #IN;
ELSIF #UP AND NOT #last_up THEN
#STATE := "INC"(X := #STATE, D := 1, M := 7);
ELSIF #DN AND NOT #last_dn THEN
#STATE := "INC"(X := #STATE, D := -1, M := 7);
END_IF;
#last_up := #UP;
#last_dn := #DN;
#Q0 := FALSE;
#Q1 := FALSE;
#Q2 := FALSE;
#Q3 := FALSE;
#Q4 := FALSE;
#Q5 := FALSE;
#Q6 := FALSE;
#Q7 := FALSE;
IF #E THEN
CASE #STATE OF
0:
#Q0 := TRUE;
1:
#Q1 := TRUE;
2:
#Q2 := TRUE;
3:
#Q3 := TRUE;
4:
#Q4 := TRUE;
5:
#Q5 := TRUE;
6:
#Q6 := TRUE;
7:
#Q7 := TRUE;
END_CASE;
END_IF;
END_FUNCTION_BLOCK
INC源代码
FUNCTION "INC" : Int
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
X : Int;
D : Int;
M : Int;
END_VAR
BEGIN
#INC := (#X + #D + #M + 1) MOD (#M + 1);
END_FUNCTION
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
指示灯
+关注
关注
3文章
403浏览量
27995 -
跑马灯
+关注
关注
5文章
117浏览量
34372 -
RST
+关注
关注
0文章
30浏览量
7323 -
时钟信号
+关注
关注
4文章
372浏览量
28062 -
选择器
+关注
关注
0文章
103浏览量
14322
发布评论请先 登录
相关推荐
关于stm32 6个pwm通道输出
请问一下,我希望有6个pwm输出通道,比如1,2,3,4,5,6,频率相同,占空比50;但是我是每隔100ms选择其中的两个,任意两个,由其
发表于 04-11 17:22
用于PLC的低侧栅8通道24V低侧数字输出模块
接口。此设计具有尺寸小的特点,能够在所有 8 个通道上提供 0.5A 而不影响热管理。主要特色高密度 8 通道 24V 低侧数字
发表于 12-13 14:20
凌力尔特发表双组输出降压切换稳压器--LT3992
凌力尔特(Linear Technology)发表完整的双组输出降压切换稳压器--LT3992,此元件可从每通道提供3安培(A)连续输出电流;3~60伏特(V)输入电压范围
发表于 04-20 08:53
•460次阅读
电机控制器的4种输出模式
作用,松手无作用; 自锁:按下有作用,松手后依然有作用; 互锁:一般有两个按钮(比如A和B)控制输出,当按下A键,松手后输出依然有效;当按下B键,断开与A相关的
发表于 10-15 16:42
•3480次阅读
使用按钮式数字电位计设计可调电压输出
本文介绍一种完整的解决方案,其中可通过按钮式数字电位计简单高效地控制高达20 V的电压。完整的解决方案代表可调电源,可用于需要可调电压输出的各种应用。图1所示为具有可变输出功率的相应开
评论