admin 发表于 2018-8-17 09:42:10

CODESYS V3 – 快速入门

CODESYS V3 – 快速入门       首先我们用一个控制车库门的程序编程来作为CODESYS V3 快速入门的开端.   
在下面的描述中,我们将向您展示:使用 CODESYS V3 编写一个简单的自动化工程是如此的容易。首先,我们先让您熟悉一下这个真实的工程任务。为了让您更快地掌握它,我们将这个工程分为多个容易实现的单元。我们将和您一起:一步一步地编写这个应用程序,您也可以在这个教程的最后来下载整个工程。一般来说,按照正常的学习速度,您可在 30 到 60 分钟内就可完成这个工程项目。祝您好运!   
友情提示:此应用程序仅能做示例之用,禁止用于工业现场或实际应用。
CODESYS V3 – 快速学习 1/6    
工程任务:   
使用 CODESYS V3 SoftPLC 来控制一个标准的车库门。

任务描述:
如果用户按下控制按钮(驱动),车库门根据当前的状态,执行由开门到关门,或者由关门到开门的动作。在此过程中,器激活相应的执行部件(升门/ 降门),直到传感器(门开 / 门闭 / 门过载)报告门已达到了最终位置,或有错误发生,终止了门的开闭过程。再次按下控制按钮,用户可以随时手动停止车库门。在车库门开启或者关闭的过程中,车内顶灯会自动打开,经过一定的时间间隔后,顶灯会自动关闭。任何错误的发生,比如车库门过载,或者车库门开或关的时间过长,当前动作立即中断,顶灯开始闪烁,直到再次按下按钮。
CODESYS V3 – 快速学习 2/6
工程配置:   
让我们开始学习。双击CODESYS V3 的图标.

   
请注意:不同的安装版本,图标有不同的标题。      
CODESYS V3 是基于.net 平台,当CODESYS V3 启动的时候,这个安装版本的所有需要的组件都要进行初始化。在此期间,您可以关注一下窗口中的进度条。
   
我们可以看到,屏幕左边是空的项目树窗口,由设备标签(device tab)和程序组织单元标签(POU tab)组成。由于这个例子中,我们不需要任何独立于设备的POUs,所以我们可以暂时忽略程序组织单元标签。在右手边,我们可以看到一个属性窗口和一个工具箱窗口。属性窗口暂时不需要,可以关闭。位于屏幕底部的是消息窗口,将会显示一些有用的信息,主要是编译报错信息。   
因为CODESYS V3 的窗口布局可以按照用户的特定需要来布置,所以可以和上面描述的布局不同。当你打开 CODESYS 窗口时,可能是两个独立的窗口(Devices,POUs)就像上面的图片一样出现在屏幕的左手边,而不像上面描述的是单一的对象树和两个标签页。   
这两个独立的窗口可以分别放置、缩放和关闭。在菜单‘视图’下,我们可以打开所有的窗口。    通过打开菜单“工具 / 定制化”,然后点击“恢复到默认状态”,可以恢复到CODESYS V3刚打开时的默认布局。    点击菜单“文件/ 新建工程”或者图标 我们可以打开一个工程向导。


在这个对话框中,我们可以选择一个标准的工程,为其 命名,并决定存储位置。
      
为了能够生成这个标准工程,我们必须告诉 CODESYS,我们打算使用什么样的目标设备和选择哪种 IEC 61131- 3 的编程语言来编写我们的主要任务。在我们的车库应用程序中,我们将使用功能模块图语言(FBD)。我们将选择软 PLC “CODESYS SP Win V3”来作为目标设备,CODESYS SP Win V3 可以安装后自动启动。我们或许需要检查一下,软 PLC的版本是否和编程系统的版本是对应的。一般来说,这是由系统自动来做的。Windows 任务栏中的图标告诉我们软 PLC 已经激活。如果软 PLC 的图标是灰色的(),这是由于演示模式(DEMO)下的运行系统的运行时间是 2 个小时,运行 2 个小时后自动停止了。这时,您只需用鼠标右键点击软 PLC 的图标,然后点击“启动 PLC”即可。现在向导创建的对象树的基本配置如下:

   
这棵对象树包含一个带有 MainTask 的任务配置,这个任务配置包含在主程序 POUPLC_PRG 中。通过双击自动创建的 MainTask,我们可以在打开的窗口中设置间隔的扫描时间,来满足我们的需求。
      
为了把我们电脑上的软 PLC 与编程系统CODESYS V3 连接起来,我们现在必须双击对象树中的设备图标
   
如果“Gateway-1”没有自动出现在设备窗口中,请单击按钮“添加网关”。现在我们选择左边的网关服务器(gateway sever),点击右边的“扫描网络”,运行在我们 PC 上的软 PLC 就出现在网关服务器的目录树下。现在我们选择这个条目,点击按钮“设置使用路径”。被选的设备例如运行在我们的 PC 上的软 PLC 现在会以粗体显示,并已经连接到编程系统。现在工程配置已经成功设置,我们可以关闭设备窗口了。
CODESYS V3 – 快速学习 3/6    
变量声明      
在我们的例子中,我们计划在全局变量列表中声明输入和输出变量。如果我们右键点击应用程序的图标,选择“添加对象”,我们就可以增加不同的对象到我们的应用程序中。我们将选择“全局变量列表”并命名为“仿真信号”。
      
需要声明输入变量是 DoorOpen,DoorClosed,DoorOverloaded(用作传感器和 Actuation(用作控制按钮)。需要声明的输出变量是 DoorUp 和 DoorDown 作为驱动,Lighting 作为灯的驱动。
   
所有的 I/O 变量都是布尔类型变量。
CODESYS V3 – 快速学习 4/6      
车库门控制的编程      
编写应用程序的第一件事情就是双击设备树中的主程序单元 POU“PLC-PRG”来打开主程序编辑器。 首先,我们将编写打开车库门这一部分的应用程序,我们将使用一个变量功能块来实现它。
   
我们可以从工具箱窗口中选择 RS 功能块(在功能块的目录中)将其拖到 POU 编辑器中的指定位置(“Start here”)。该功能块初始化后,分配到一块内存区域,在功能块的上部有“???”的地方书写该实例的名字。写完名字后,我们只要一按回车键,变量自动声明的对话框就会自动打开。实例的名字和变量类型(如这个功能块 RS)就已经输入好了。通过点击 OK 按钮,声明就会传到 POU PLC_PRG 的本地变量声明区(在 FBD 编辑器的上部)。
      
通过使用 RS 功能块,只要设置功能块的输入端发送所需的条件比如来自控制按钮的上升沿,执行部件 DoorUp 就能很容易闭锁。在设置输入端输入控制按钮变量 Actuation。在输入端的三个问号上输入变量的第一个字母时,CODESYS 的智能输入就列出了所有可用的变量,变量 Actuation 就可以从列表中选择一个回车输入。
   
在标记了输入后,通过按 F2 在线帮助键可以实现同样的效果。和前面相同,我们仅仅需要从全局变量的目录中选取我们想要的变量。
      
当控制按钮没有被按时,布尔变量 Actuation 的值为假,按下去时,变量值为真。这就意味着这个变量是一个上升沿。为了确保输入的是一个上升沿,我们可以使用 FBD 编辑器集成的沿检测功能。通过点击输入前的标记,激活工具条,点击工具条中的沿信号。图标表示为上升沿,再点击一次变成下降沿。

      
为了确保控制按钮按下时车库门不是每次都会打开,我们必须引入一个附加变量,用来表示门正在朝上移动,或者在朝下移动:仅当 NextUp 为真时,门可以被打开。这个新的布尔变量,就像功能块实例一样,使用自动声明对话框来声明,和先前的变量 Actuation 是与(and)的关系,输入这个功能块。可从右侧工具箱/布尔操作符的列表中,点击操作符 AND(2 输入)拖到功能块的输入设置(Replace 方框)位置即可实现。控制按钮变量 Actuation 自动移动到 AND 操作符的第一个输入端。功能块的 I/O 前的钻石符显示了可能的插入点。如果你把操作符放在绿色钻石附上,则操作符就插入到这个地方。下一步,我们将连接变量DoorOpen 到 RS 块的输出 Q1 上。鼠标右键点击输出端,选择命令“插入输出”。在“???”的地方,输入变量。
      
由于有三种可能的原因停止车库门打开的过程,所以我们放置一个 OR 操作符(3 输入)在RS 功能块的 RESET1 输入端。三种可能的原因被连在 OR 操作符的输入端:DoorOpen 传感器报告车库门已经到达它的最高位置。这个变量已经被声明,可以直接连接到 OR 操作符的输入端。用户按下控制按钮的同时,执行部件 DoorUp 被激活。通过插入一个 AND 操作符(2 输入),连接控制按钮变量 Actuation(带有沿检测),变量 DoorUp 连接到操作符的输入端,来查询这种情形。由于驱动过载,或者过长时间的 Door-up 或者 Door-down 都会引起错误。这个错误需要用到第二个附加变量,并且在自动声明的对话框中声明为一个布尔变量。现在我们的第一个网络完成如下:
      
第二个网络将负责关闭车库门,因此几乎和第一个网络是相同的。我们可以通过点击编辑器的左侧选取并且复制粘贴第一个网络,或者也可以在选取第一个网络后,使用快捷键“Ctrl+C” 和“Ctrl+V ”。这样,第二个网络现在就出现在第一个网络中。当然,我们现在需要将负责开门的变量替换为负责关门的变量:
      
同样重要的是,负责辨识车库门上移,还是下移的变量必须取反。这需要单击 NextUp 后边的横线,然后工具栏中的从插入到横线上。第三个网络用来设置附加变量,来负责辨识门是在上移还是下移,使用变量 NextUp。通过从工具箱目录‘常规’拖拽新网络插入并且放置在现存网络的下方。首先,我们可以将熟悉的 RS 功能块插入到这个网络当中。通过在功能块的上方输入实例名字“RS Next Direction”来初始化该功能块,我们将变量 NextUp放置在输出端。因为智能输入功能的支持,只要输入首字母,我们可以得到一个备选变量的列表,供我们选择。先前的动作可以推测出后来可能发生的动作:例如,如果执行部件DoorOpen,负责打开车库门的部件,发出一个下降沿(逻辑值由真到假),我们就知道了车库门打开过程结束。因此,下一个动作将是车库门的关闭。可以将一个带有下降沿检测的变量 DoorDown 来激活这个沿检测,并且将这个变量插入到这个 RS 功能块的输入设置端(通过双击工具条中沿检测符号可以变为下降沿检测符号)。同样的做法可以应用在DoorUp 上,将该变量插入到RESET1 输入端。
   
所有需要控制车库门的步骤都已经完成。现在仍缺少的就是灯光的控制和对车库门错误监控的控制。
CODESYS V3 – 快速学习 5/6      
关于错误监控和控制灯光的编程当我们编程第一个网络时,我们引入了变量Error,用来报告错误和车库门的停止。这个变量可以如下编程:      
当传感器变量DriveOverload 设置为真的时候,或者开关车库门的时间超过了20 秒的时候,就会有错误发生。为了重现上述的情景,我们需要在一个新网络中插入一个OR 的操作符。这个OR 的操作符的输出端设置为变量Error。可以通过鼠标单击输出端,并且点击工具条中的“Set /Reset’”按钮,直到一个S 出现在输出管脚上。这样的话,连在管脚上的变量就可以通过点击“Set / Reset”按钮来复位。
      
该功能块的第个输入将分配为传感器变量DriveOv一erload。为了能够检测开关门的最大时间跨度是否被超过了,我们需要一个时间监控机制。恰好我们从工具箱引入了功能块TON(Timer On Delay 延时通),并且将它初始化命名为Monitor。
       一个布尔为“真”的量连接到该模块的输入端,在过了一定预置时间(PT)后,布尔量“真”就被写入到 Q 输出端。但是,如果在预置的时间段之内,输入端 IN 转换到“假”,那么输出仍旧保持“假”。               
页: [1]
查看完整版本: CODESYS V3 – 快速入门