FLProg-第二课:使用模拟信号


上一课中,描述了使用FLProg程序以及处理离散信号的基本原理。本课将探讨FLProg处理模拟信号的功能。
在课程中,将创建LED电平指示器的控制程序,并显示使用PWM输出的LED亮度调节。

测试台的方案。



与上一课一样,我们将使用两种语言FBD和LAD创建项目。只有现在,它才能并行完成。

我们正在创建一个新项目。

对于LAD

  • 第一种方法-我们将模拟输入A0从已安装设备的树中拖到电路中
  • 第二种方法是从元素库中拖动“模拟控制器输入”块,然后双击新块并将其附加到板的零模拟输入


对于FBD语言,我们通过双击标签树中的“添加输入”项或单击相应的按钮来创建新的模拟输入,



在打开的输入属性窗口中,输入输入名称,选择模拟类型和触点编号0,



然后将新输入从标签树拖动到电路区域。

FLProg中的模拟输入模块在其输出处给出的值与所连接的板的实际输入处的电压成比例。在板的输入为0V时,模块的输出将为0,在板的输入为5V时,模块的输出将为1023。


然后我们创建一个模拟输出。

对于LAD语言拖动块“模拟控制器输出”,从块库,并在属性编辑器,块(块上双击)将其绑定到D3出口板



FBD语言创建一个模拟输出双击“添加输出”树标签或单击相应的按钮。



在打开的输出属性窗口中,填写输出名称,选择PWM类型和输出编号D3,



然后将新的输出拖动到电路的工作区域。

实际上,Arduino开发板没有真正的模拟输出(不包括Arduino Duo,但到目前为止,FLProg程序不支持这些开发板)。评估板的模拟输出在PWM模式下运行。

脉宽调制
- (, . pulse-width modulation (PWM)) — , , , . .

, . — . , . 50 %, ( ) . . - , , . 75%, 3 , :

, 0 100 %. , . — () . Arduino 256 .

在FLProg程序中,模拟量输出单元控制与其关联的PWM输出的占空比。当应用到侧面输入时,在路径的输出处值为0,则占空比将为0%,而当应用值255-100%时。
基于以下事实:控制器模拟输入模块的输出信号限制为0-1023,控制器模拟输出模块的输入信号允许信号的限制为0-255,因此提出了一个问题,即是否将它们设为相同值。缩放单位会有所帮助。
在LAD语言中,它位于元素库的“ Analog Blocks”文件夹中。



在FBD中,相同的块位于元素库的“特殊块”文件夹中。



定标单元将输入端接收的值按比例转换为不同的值范围,并将该值提供给输出。值的输入和输出范围的参数在块属性中设置。通过双击该块,我们可以打开块参数编辑器并设置这些值。



该块中的计算根据以下公式进行:
Q =(I-I_min)*(Q_max-Q_min)/(I_max-I_min)+ Q_min
其中:
  • Q-块输出处的值
  • I-块输入处的值
  • I_max-输入值的上限
  • I_min-输入值的下限
  • Q_max-输出值的上限
  • Q_min-输出值的下限

由于屏幕截图中显示的块设置,当块输入处的值从0更改为1023时,输出处的值将按比例从0更改为255,这是必需的。现在,您需要根据图连接所有块。

LAD


FBD


第一板已经准备就绪。我们将其称为“亮度控制”并创建一个新的控件,立即将其称为“水平指示器”
在第二块板上,我们还需要来自控制器输入的值。原则上,您可以再次将块输入拉出至第二块板,然后使用它。但这将导致以下事实:在控制器中执行程序期间,将重新读取来自输入的值。而且,从输入中读取模拟信号的过程非常耗资源且耗时。因此,对于LAD,我们使用模拟连接器,对于FBD,使用变量。
在FLProg中,可变和模拟连接器可以表示为板上的端子连接。在他们的帮助下,董事会交换价值并相互联系。

在LAD项目中,将“模拟连接器输入”块拖到FIRST项目板上。



它会自动命名为AC1。然后,将其输入连接到模拟输入模块的输出。



然后在第二块板上,拖动“ Analog Connector Output”块。



我们双击它,并将其分配给块编辑器中的AC1连接器,

在FBD语言的项目中,通过单击相应的按钮或双击标签树中的“添加变量”项来创建一个新变量。



在打开的块编辑器的窗口中,填写变量名称,选择类型(整数),然后将默认值设置为0



然后,我们将新变量首先拖到一个板上,然后再拖到另一个板上。我们还将变量输入连接到第一块板上的控制器模拟输入模块的输出。



由于液位指示器有10个值,因此当该值从零变为最大值时,控制值必须从零变为10。缩放单位会再次提供帮助。将其拉到第二块板上,并进行如下配置。



现在,对于LAD,将其输入连接到模拟连接器的输出块,对于FBD,将其输入连接到变量的输出。

LAD


FBD


考虑液位指示器的逻辑。
  • 如果信号值大于0,则“ Level 1” LED将亮起
  • 如果信号值大于1,则“ Level 2” LED应当点亮
  • « 3» , 2
  • « 4» , 3
  • « 5» , 4
  • « 6» , 5
  • « 7» , 6
  • « 8» , 7
  • « 9» , 8
  • « 10» , 9

为了实现此逻辑,对于LAD语言,我们使用比较继电器,对于FBD语言,我们使用比较器。

LAD


FBD


在以LAD语言编写的项目中,我们在第二块板上拉出10个比较继电器,并将它们分配给与电平表相连的输出(请参阅第一课),并将比较类型设置为“更多”。



通过右击比较继电器每个块的输入“ B”,我们调用上下文菜单并选择“插入常数”项。在打开的常量编辑窗口中,保留“ Integer”类型,并为每个输出输入一个与指示器逻辑相对应的值。



继电器的所有块的输入“ A”都连接到缩放单元的输出。应该获得这样的方案。



在以FBD语言编写的项目中,我们在第二块板上拉出10个Comparator块,并将其设置为比较视图“更多”(双击该块以调用块编辑器)。与LAD-e中一样,我们将在I2块的输入上插入常量,并将输入I1连接到缩放块的输出。



然后,创建10个数字输出,这些数字输出连接到与电平表相连的电路板的输出(请参阅第一课),并将它们拉至第二个电路板。然后,我们将每个连接到其自己的比较器。



一切-程序已准备就绪,您可以编译并上传到控制器(请参阅第一课

Source: https://habr.com/ru/post/zh-CN389781/


All Articles