跟我学PLC编程之如何在CODESYS平台实现系统功能

PLC 是工业控制的核心,在中国的自动化领域,由于西门子进入中国市场很早,早在慈禧老佛爷还在的时候,就进入中国,在南京大屠杀时,冒死拯救中国人生命的拉贝先生,就是西门子的员工,再加上国人对德国制造的狂热追捧,因此西门子PLC在中国具有极高的市场占有率和口碑,可以说是工控界的苹果,不过这几年CODESYS 平台异军突起,它不依赖平台的特性被誉为工控界的安卓,虽然都是德国人搞的,但是差别还是有的,在前文西门子博途与CoDeSys (IEC61131-3)的异同点 中,讲了两者的显著区别,其中讲到,系统功能的实现(主要是特殊寄存器和秒脉冲) 在西门子博途中类似日系PLC,而在CODESYS 中需要自己来完成,今天就来讲讲如何实现

1 上电第一次扫描

由于PLC是采用循环扫描机制,因此,上电第一次扫描主要用来实现初始化各种参数,在博途中,只需在特殊OB块中调用即可,而在CODESYS 中,需要自己写段程序,要调用三个函数 分别是

IsFirstMastColdCycle 指示循环是否为第一个MAST 冷启动循环

IsFirstMastCycle 指示循环是否为第一个MAST循环

IsFirstMastWarmCycle 指示循环是否为第一个MAST 热启动循环

在CODESYS 中,PLC 的扫描分为这三种,因此,我们只需要一个 OR 指令即

跟我学PLC编程之如何在CODESYS平台实现系统功能

CODESYS 中实现上电第一次扫描

如上图所示,其中变量Fst_true,就是上电第一次扫描为TRUE,我们只需要直接调用即可,有一点要注意,这段程序一定要在MAST 中调用,而且要放在所有POU 的前面,否则可能会无效。

这点 CODESYS 做的比较繁琐,至今还没见到如此变态的要求,冷启动,热启动 居然初始化要求不一样,但是,当我们真的遇到如此变态的要求是,就派上用场了。


2 秒脉冲

在CODESYS 中,使用各种秒脉冲也需要调用系统功能块 BLINK,如下图所示,这是实现一个100MS脉冲的程序,而变量M50 就是一个100MS 的函数,可以直接调用。

跟我学PLC编程之如何在CODESYS平台实现系统功能

CODESYS 实现秒脉冲

BLINK功能块 有两个参数 TIMELOW TIMEHIGH ,也就是高电平和低电平持续的时长,这里我们只需要填入自己的需要的时长,就可以实现任意脉冲信号,而且两个时长可以不一样。注意,实现上电第一次扫描 用的是函数,而这里用的是功能块。也就是 FC 和FB . 注意看,实现第一次扫描的是没有实例名的。而BLINK 上面有个B1,这个在CODESYS 中叫实例名,俗称功能块型变量,相当于西门子博途中的背景数据块。在这里,它是用来调用功能块输入输出的,B1.OUT 和M50是等价的,也就是说 变量M 和变量M50 是等价的。这就是CODESYS 中实例名的应用,因为在COSESYS 中是没有数据块概念的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据