对CODESYS官方教程“您的第一个CODESYS程序”的一些注解

本文是对 CODESYS官方教程中的“您的第一个CODESYS程序” 进行一些新手可能会遇到的问题的注解,因为有些细节并没有在该网页中有很清晰的解释,对于初学者来说可能有些理解方面的困难。

该教程的任务目标是:

  • 与传统的冰箱一样,温度由用户通过旋转控制来指定。
  • 冰箱使用传感器确定实际温度。当它太高时,冰箱以可调节的延迟启动压缩机。
  • 压缩机冷却,直到达到预期的温度,减去一个1度的滞后。滞后是为了防止实际温度在设定的温度附近波动过大,这将导致压缩机不断关闭和打开。
  • 当门打开时,冰箱内部的灯点亮。当门开得太久时,会发出哔哔声信号。
  • 如果压缩机在很长一段时间内没有达到设定的温度,尽管电机一直在工作,蜂鸣器仍会发出稳定的声音信号。

对于第三个目标,注: 压缩机冷却,直到达到预期的温度,此处减去一个1度的滞后(Eg.设定温度TempSet为8度,1度的滞后,大于TempSet+1=9度时压缩机运行,小于TempSet-1=7度时压缩机停止)。滞后是为了防止实际温度在设定的温度附近波动过大,这将导致压缩机不断关闭和打开。

Glob_Var(全局变量列表)
数据类型:
REAL:数据
BOOL:T/F
TIME:延迟

PLC_PRG(主POU)
运算块:
ADD:相加
SUB:相减
GT(greater than):上输入大于下输入则输出TRUE
LT(less than):上输入小于下输入则输出TRUE
SR:满足SET条件输出TRUE 满足RESET条件输出FALSE

Signals(POU)
梯形图元素:
TON 通电延时定时器:IN是使能输入端 PT是预置值输入端。当使能端(IN)输入有效时,驱动定时器开始计时,当前值从0开始递增,计时到预设值时,定时器的状态位置1,之后当前值仍会递增,但不会影响定时器状态位。当使能端(IN)无效时,定时器立即复位,当前值清零,状态位也清零,即回复初始状态。
运算块:
BLINK(库文件:Util.lib) 脉冲信号发生器:ENABLE使能端 TIMELOW输出低电平时间 TIMEHIGH输出高电平时间 OUT脉冲信号输出


上图为官方教程中的LD程序(梯形图),可以看见使用了“跳转”和“标签”。原因如下:
PLC编程需要尽量避免两个同样的线圈出现在不同网络中来防止冲突。
而示例中出现了上述情况,因此意在通过增加跳转来避免,因为PLC运行是从上到下网络依次运行,当第一行网络的线圈被触发的同时跳转第三行,跳过了第二行而避免一二行的相同线圈互相冲突。因此这个跳转的主要目的是在第一行线圈运作时跳过第二行。

Signals(用于仿真的ST POU)
SEL(G, IN0, IN1)选择指令函数:根据开关(参数 G)的情况,选择输入参数 IN0 或 IN1 中的一个,并将其内容作为结果输出。如果G为0,则输出IN0,如果G为1,则输出IN1 。

下为声名变量,填入文本视图界面上框。

PROGRAM Simulation
VARTON_1: TON;                            //当压缩机被激活时,温度会延时下降// 降温前延迟P_Cooling : TIME := T#500MS;xReduceTemp: BOOL;                  //降温信号TON_2: TON;                            //当压缩机启动时,温度会随着时间延迟而升高P_Environment : TIME := T#2S;          //关门的延迟时间P_EnvironmentDoorOpen: TIME:=T#1S;  //开门延时时间xRaiseTemp: BOOL;                   //温度升高信号timTemp: TIME;                      //延迟时间iCounter: INT;
END_VAR

下为修改并添加了注释的ST程序(结构化文本)

iCounter := iCounter + 1;     // 没有功能,仅用于演示目的。IF Glob_VAR.xCompressor THENTON_1(IN:= Glob_Var.xCompressor, PT:= P_Cooling, Q=>xReduceTemp);//在压缩机因温度过高而启动后,先延迟P_Cooling,然后温度降低,IF xReduceTemp THENGlob_Var.rTempActual := Glob_Var.rTempActual-0.1;//每个周期温度降低0.1°CTON_1(IN:=FALSE);END_IF
END_IF//如果门是开着的,升温会更快(升温延迟时间更短);SEL 选择 P_EnvironmentDoorOpen
timTemp:=SEL(Glob_Var.xDoorOpen, P_Environment, P_EnvironmentDoorOpen);TON_2(IN:= TRUE, PT:= timTemp, Q=>xRaiseTemp);//如果压缩机未运行,先延迟tTemp,然后冷却室会变热
IF xRaiseTemp THENGlob_Var.rTempActual := Glob_Var.rTempActual + 0.1;//每个周期温度升高0.1°CTON_2(IN:=FALSE);
//实际该代码表示压缩机工作则每500ms都会降温0.1°C,无论压缩机是否工作都会每2s/1s升温0.1°C,当500ms和2s/1s重合时抵消而温度不变。
END_IF

CODESYS官方教程“您的第一个CODESYS程序”的一些注解相关推荐

  1. python程序设计简明教程知识点_[转载]看完《python简明教程》笔记及第一个python程序...

    主要是摘抄了一些书上需要注意的地方: 1.Python 是一门解释性语言. 在计算机内部, Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行. 2.版 ...

  2. eclipse编写java教程_【安装eclipse, 配置java环境教程】 编写第一个java程序

    写java通常用eclipse编写,还有一款编辑器比较流行叫IJ.这里我们只说下eclipse编写java的前期工作. 在安装eclipse之前要下载java的sdk文件,即Java SE Devel ...

  3. Struts2教程1:第一个Struts2程序

    在本系列教程中我们将学习到Struts2的各种技术.在本教程中使用的工具和程序库的版本如下: 开发工具:MyEclipse6 Web服务器:Tomcat6 Struts版本:Struts2.0.11. ...

  4. PyTorch 1.0 中文官方教程:使用PyTorch编写分布式应用程序

    译者:firdameng 作者:Soumith Chintala 在这个简短的教程中,我们将讨论PyTorch的分布式软件包. 我们将看到如何设置分布式设置,使用不同的通信策略,并查看包的内部部分. ...

  5. python出现file stdin_第一个Python程序hello.py提示出现File stdin,line 1错误

    写第一个Python程序hello.py,内容仅有一句,print 'hello world', 运行 Python hello.py 出错,提示: File "" , line ...

  6. 2.0 你的第一个CODESYS程序

    开始之前 数据安全: 为了尽量减少数据安全漏洞的风险,我们建议采取以下组织和技术措施: * 避免从开放网络和互联网访问PLC和控制网络. * 使用VPN进行远程访问. * 安装防火墙. * 如果要在网 ...

  7. Maven创建第一个java项目(官方教程)

    翻译自:链接 Building Java Projects with Maven This guide walks you through using Maven to build a simple ...

  8. 福利,PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  9. PyTorch中文版官方教程来啦(附下载)

    PyTorch 中文版官方教程来了. PyTorch 是近期最为火爆的深度学习框架之一,然而其中文版官方教程久久不来.近日,一款完整的 PyTorch 中文版官方教程出炉,读者朋友从中可以更好的学习了 ...

  10. 60分钟入门PyTorch,官方教程手把手教你训练第一个深度学习模型(附链接)

    来源:机器之心 本文约800字,建议阅读5分钟. 本文介绍了官方教程入门PyTorch的技巧训练. 近期的一份调查报告显示:PyTorch 已经力压 TensorFlow 成为各大顶会的主流深度学习框 ...

最新文章

  1. C#菜鸟正则表达式一
  2. MAC地址如何在windows与unix下查看?
  3. double类型占几个字节_MongoDB 中的数据类型
  4. HTML5几大新特性
  5. 【8.16校内测试】【队列】【数学】【网络流/二分图最大匹配】
  6. 在原生js中的,table表格,display:block之后,样式混乱
  7. review board 使用
  8. 谷歌Chrome浏览器保存网页为PDF
  9. 什么是主数据?什么是主数据管理系统?
  10. 八丶傻妞新版教程+对接微信对接公众号对接TG(飞机)教程
  11. 从写方案到见投资人,一步步教你如何拿投资
  12. 清华大学鲍橒计算机1999,《最强大脑》鲍橒:世界盲棋第一人的最强记忆
  13. MySQL||SQL_ERROR_INFO: “You can‘t specify target table ‘titles_test‘ for update in FROM clause“
  14. BZOJ1507 [NOI2003]Editor
  15. Java基础8顺序语句判断语句
  16. 20-HTML与HTML5常用标签(前端)
  17. win10 android软件下载,windows10模拟器安卓版
  18. 基于FPGA的数字电子钟的设计与实现
  19. 如何在高压系统中实现电源和信号线的电气隔离
  20. VC++ 利用CreateFile、ReadFile和WriteFile实现CopyFile

热门文章

  1. win10彻底禁用chrome自动升级方法
  2. 十六进制转float
  3. 网络版瑞星服务器无法升级
  4. java 人民币大写_Java实现人民币大写精讲
  5. ubuntu下sopcast安装的一点笔记
  6. 基于QT的IM(jabber)库和客户端
  7. 蜂鸣器驱动电路中二极管的作用
  8. 景格虚拟教具混合动力汽车动力系统虚拟结构原理展示台复制狗
  9. ubuntu下安装万能五笔
  10. opencv矩阵转eigen_矩阵迹运算介绍及C++/OpenCV/Eigen的三种实现