上一章节,我们给出的功能块源码实现的功能是输出一个占空比以及周期可调的脉冲信号。这个功能,我们可以映射成IO的高低电平功能,控制蜂鸣器报警。

全局变量-Main

Python

//{attribute 'qualified_only'} 这句要注释掉,否则有范围限制,需要使用Main.变量VAR_GLOBAL//------2种报警功能声明----------------------- FB_启动报警 :

YJ_BeepAlarm; FB_缺料报警 : YJ_BeepAlarm;

END_VAR

上面属于全局变量区,在全局变量区,我们有两个全局变量,它们的名字分别是“FB启动报警”和“FB缺料报警”,他们指向的类型都是YJ_BeepAlarm类型。实际上“YJ_BeepAlarm”我们称之为功能块。

接下来,咱们看看“YJ_BeepAlarm”功能块里面的内容。

//--代码作者: 朱子文------------------

FUNCTION_BLOCK YJ_BeepAlarm

//---局部变量-------------------------

VAR_INPUT

ib_报警启动 : BOOL;

ib_报警停止 : BOOL;

if_报警周期 : REAL;//周期设置,单位ms

if_报警占比 : REAL;//0-1,代表周期中高低电平的占空比

id_报警次数 : DINT;//报警次数为0,则报警输出一直输出报警信号

END_VAR

//---输出变量-------------------------

VAR_OUTPUT

ob_报警完成 : BOOL;//如果报警次数为0,则报警完成无效

ob_报警输出 : BOOL;

END_VAR

//---程序自用局部变量------------------

VAR

vt_Time : TON;

vb_Out : BOOL;

vr_RunTrig : R_TRIG;

vr_AlarmTrig : R_TRIG;

vr_StopTrig : R_TRIG;

vd_报警次数 : DINT;

vb_报警启动 : BOOL;

vb_报警停止 : BOOL;

END_VAR

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

//{attribute'qualified_only'}这句要注释掉,否则有范围限制,需要使用Main.变量VAR_GLOBAL//------2种报警功能声明-----------------------FB_启动报警:

YJ_BeepAlarm;FB_缺料报警:YJ_BeepAlarm;

END_VAR

上面属于全局变量区,在全局变量区,我们有两个全局变量,它们的名字分别是“FB启动报警”和“FB缺料报警”,他们指向的类型都是YJ_BeepAlarm类型。实际上“YJ_BeepAlarm”我们称之为功能块。

接下来,咱们看看“YJ_BeepAlarm”功能块里面的内容。

//--代码作者:朱子文------------------

FUNCTION_BLOCKYJ_BeepAlarm

//---局部变量-------------------------

VAR_INPUT

ib_报警启动:BOOL;

ib_报警停止:BOOL;

if_报警周期:REAL;//周期设置,单位ms

if_报警占比:REAL;//0-1,代表周期中高低电平的占空比

id_报警次数:DINT;//报警次数为0,则报警输出一直输出报警信号

END_VAR

//---输出变量-------------------------

VAR_OUTPUT

ob_报警完成:BOOL;//如果报警次数为0,则报警完成无效

ob_报警输出:BOOL;

END_VAR

//---程序自用局部变量------------------

VAR

vt_Time:TON;

vb_Out:BOOL;

vr_RunTrig:R_TRIG;

vr_AlarmTrig:R_TRIG;

vr_StopTrig:R_TRIG;

vd_报警次数:DINT;

vb_报警启动:BOOL;

vb_报警停止:BOOL;

END_VAR

上面这功能块变量部分代码包括:输入变量,输出变量以及功能块里的局部变量。这三种变量类型里面,我们可以看到,声明了很多变量。每个变量都有“单独唯一”的名字,而他们的类型使用的是“:”后面跟一个数据类型。代表的是这个变量到底是什么数据类型的数据。这里就涉及到数据类型了,常用的数据类型有“BOOL、REAL、INT、DINT、TIME”等等。

接下来的功能块里的内容,使用了RTrig上升沿功能块的调用。以及IF-ELSE等基本语法。

接下来的PRG函数文件下,我们也有变量区,都是局部变量,也有变量赋值,变量类型,以及功能块的实例化调用等等。

PRG函数中局部变量

Python

g

r_停止RTrig(CLK:= vb_停止信号, Q=> );

vf_启动报警周期 := 1000;

vf_启动报警占空比 := 0.4;

vi_启动报警次数 := 5;

//------启动报警功能块的调用--------------------

FB_启动报警(

ib_报警启动:= vb_启动信号,

ib_报警停止:= gr_停止RTrig.Q,

if_报警周期:= vf_启动报警周期,

if_报警占比:= vf_启动报警占空比,

id_报警次数:= vi_启动报警次数,

ob_报警完成=> vb_RunAlramDone,

ob_报警输出=> vb_RunAlarmOut);

//-------缺料报警停机功能--------------------------

FB_缺料报警(

ib_报警启动:= vb_缺料信号,

ib_报警停止:= gr_停止RTrig.Q,

if_报警周期:= 500,

if_报警占比:= 0.3,

id_报警次数:= 3,

ob_报警完成=> vb_ShortageAlarmDone,

ob_报警输出=> vb_ShortageAlarmOut);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

g

r_停止RTrig(CLK:=vb_停止信号,Q=>);

vf_启动报警周期:=1000;

vf_启动报警占空比:=0.4;

vi_启动报警次数:=5;

//------启动报警功能块的调用--------------------

FB_启动报警(

ib_报警启动:=vb_启动信号,

ib_报警停止:=gr_停止RTrig.Q,

if_报警周期:=vf_启动报警周期,

if_报警占比:=vf_启动报警占空比,

id_报警次数:=vi_启动报警次数,

ob_报警完成=>vb_RunAlramDone,

ob_报警输出=>vb_RunAlarmOut);

//-------缺料报警停机功能--------------------------

FB_缺料报警(

ib_报警启动:=vb_缺料信号,

ib_报警停止:=gr_停止RTrig.Q,

if_报警周期:=500,

if_报警占比:=0.3,

id_报警次数:=3,

ob_报警完成=>vb_ShortageAlarmDone,

ob_报警输出=>vb_ShortageAlarmOut);

赞赏作者

微信赞赏支付宝赞赏

喜欢 (5)or分享 (0)

codesys 简单案例_第一章:初识Codesys-1.4从一个示例程序讲起相关推荐

  1. ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...

  2. 第一章 初识Mathematica

    第一章  初识Mathematica   1.Mathematica是什么 Matematica是由美国Wolfram公司研究开发的一个著名的数学软件,它提供了非常强大的功能,能够完成符号运算.数学图 ...

  3. 《起跑吧,Opa》 -- 中译本 第一章 初识Opa

    第一章 初识opa 本章,你将初识opa.你将学习如何安装Opa,编写opa程序以及熟悉Opa开发周期中的各个步骤. 安装opa 需要你预先从opa网站(http://opalang.org/)下载适 ...

  4. 第一章 初识EmguCV

    第一章 初识EmguCV 1.1 EmguCV的基本介绍 1.1.1 计算机视觉.OpenCV和EmguCV 计算机视觉是一门研究如何使机器"看"的科学,更进一步的说,就是是指用摄 ...

  5. 《HBase 不睡觉》第一章 - 初识 HBase

    <HBase 不睡觉书>是一本让人看了不会睡着的HBase技术书籍,写的非常不错,为了加深记忆,决定把书中重要的部分整理成读书笔记,便于后期查阅,同时希望为初学 HBase 的同学带来一些 ...

  6. c生万物【第一章 初识c语言】

    c生万物---第一章 初识c语言 前言 1.什么是C语言 2.第一个C语言程序 3.数据类型 4.变量.常量 4.1定义变量的方法 4.2变量的分类 4.3变量的使用 4.4 变量的作用域和生命周期 ...

  7. 读书笔记|《金字塔原理》_第一章

    读书笔记|<金字塔原理>_第一章 [章节]--第一章为什么要用金字塔结构 [讲了什么] 1.首先是为什么要用金字塔结构? 2.如何将思想组织成金字塔结构? 2.1 归类分组,将思想组织成金 ...

  8. 第一章 初识Docker

    第一章 初识Docker 1.1 什么是Docker Docker开源项目 Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广 ...

  9. 【笔记】Cocos2d-x高级开发教程:制作自己的捕鱼达人 笔记一:序_前言_第一章

    [笔记]Cocos2d-x高级开发教程:制作自己的<捕鱼达人> 笔记一:序_前言_第一章 转载请注明出处:http://blog.csdn.net/l_badluck/article/de ...

最新文章

  1. 《Go语言从入门到实战》学习笔记(1)——Go语言学习路线图、简介
  2. 多位博士毕业去了985/211/三四流高校,后来怎么样了?
  3. 让Keil生成汇编文件、bin文件
  4. 4种分支机构服务器管理最佳实践—Vecloud微云
  5. 通过SSH克隆远程仓库(GitLab)到本地
  6. C++shell排序(附完整源码)
  7. 理科生的人生感悟-01-时间的短暂 - 父亲 - 火车上的颠沛流离
  8. Linux重要的热键[Tab]、[Ctrl]-c、[Ctrl]-d介绍
  9. 为什么vacuum后表还是继续膨胀?
  10. UE3 后期处理编辑器用户指南
  11. 数据结构:栈的了解与示例(逆波兰表达式)
  12. AIoT催使AI深度场景化,“AI赋能,智联万物——开发者沙龙·南京站”圆满落幕...
  13. vlf 用法_什么是SQL虚拟日志文件(又名SQL Server VLF)?
  14. 关于null对象使用print方法打印问题总结,null+123打印结果是null123还是123?
  15. C加载JVM崩溃,一般是因为某个变量为NULL
  16. Linux系列课程之一Linux的介绍
  17. html p 会自动换行,css如何设置p标签不换行?
  18. JTAG/C2 接口定义
  19. 剑指offer-面试题23:链表中环的入口节点 快慢指针+双指针
  20. 基于MATLAB的平面刚架有限元分析,基于MATLAB的平面刚架静力分析

热门文章

  1. 简单分析@Configuration
  2. 字符串中的编码解码问题
  3. SpringAOP概念
  4. 模块-from import导入所有工具
  5. 单继承-继承的传递性
  6. 内置方法-del方法和对象的生命周期
  7. Spring boot mongodb
  8. Linux GDB调试
  9. 交流电路中的功率和功率因数
  10. 机器视觉-halcon学习笔记1