当前位置:首页 > 技术知识 > 正文内容

坚持学习第十一天:使用SCL语言编写阀门控制程序(一)

maynowei7个月前 (10-19)技术知识200

博途---使用SCL语言编写阀门控制程序

一、SCL 编程语言介绍

SCL(Structured Control Language,结构化控制语言)是一种基于 PASCAL 的高级编程语言。 这种语言基于标准 DIN EN 61131-3(国际标准为 IEC 1131-3)。根据该标准,可对用于可编程逻辑控制器的编程语言进行标准化。 SCL 编程语言实现了该标准中定义的 ST 语言 (结构化文本) 的 PLCopen 初级水平。S7-1200从V2.2版本开始支持SCL语言。

二、阀门控制程序编写思路

前段时间使用200smart编写了阀门控制程序,后面发现还是有不少问题的,比如不能多次调用,逻辑啰嗦等;自己抽空又用博途SCL语言编写了一个阀门控制程序,经过仿真测试发现程序可以多次调用,并且个人觉得还是很实用的。

根据上一次的经验,这次的思路大体就是,当HMI按下阀门开按钮后,阀门开输出变为TURE,同时开阀报警延时计时器开始计时,阀门在设定的时间内没有打开,那么触发报警,报警后需要手动进行复位;关阀的思路同开阀思路一样。

这次新增了一个阀门状态位,建了两个变量,一个是字符串,一个是字节;字符串可以直观的看到阀门开关状态,字节在不同的状态位输出不同的数字。

另外上一次有小伙伴留言想要写成中文的,这次的大部分内容还是中文的,小部分中文表示太长了,还是使用英文表示,请谅解。

三、阀门控制程序变量表

变量表主要组成部分为:Input(输入变量),Output(输出变量),Static(静态临时变量)。具体的变量表如图1所示。

图1 变量表

四、阀门控制程序设计

阀门控制程序全部使用SCL语言进行编写,首先是开阀程序,开阀的前提条件是没有开到位状态,没有开阀延时报警,然后在触摸屏按下开阀按钮后,开始开阀输出,同时计时器开始计时,当阀门在设定的时间内没有打开,会输出阀门报警,同时停止开阀输出。程序如图2所示。

图2 开阀程序

关阀程序与开阀程序一样,关阀的前提条件是没有关到位状态,没有关阀延时报警,然后在触摸屏按下关阀按钮后,开始关阀输出,同时计时器开始计时,当阀门在设定的时间内没有关闭,会输出阀门报警,同时停止关阀输出。程序如图3所示。

图3 关阀程序

阀门状态程序主要是为了使上位机更加直观的看到阀门的各种状态,此程序做了两种状态显示,一种是字符串直接使用中文显示阀门状态;另外一种是使用直接显示阀门状态,不同的数字表示不同的状态,具体的程序如图4所示。

图4 阀门状态程序

五、阀门控制程序调用

阀门控制程直接在主程序里调用测试,本次调用两个功能快,使用数组进行测试,调用的功能块如图5、图6所示。

图5 1#阀门功能块

图6 2#阀门功能块


明天准备把仿真测试做出来,与触摸屏仿真测试。

不足之处还望海涵,请各界大佬多多批评指教!

仅供参考!

相关文章

Objective-C :Category(category什么意思)

Category 引入在日常的开发中,可能会碰到这样的需求:给某个类增加方法。比如说,需要给NSString类增加一个打印的方法。当然,我们可以新建一个类比如TestString,并继承NSStrin...

2018年度回顾:挖矿木马为什么会成为病毒木马黑产的中坚力量

一、概述根据腾讯御见威胁情报中心监测数据,2018年挖矿木马样本月产生数量在百万级别,且上半年呈现快速增长趋势,下半年上涨趋势有所减缓。由于挖矿的收益可以通过数字加密货币系统结算,使黑色产业变现链条十...

微软宣布SQL Server 2016,2005版将结束支持

IT之家讯 在芝加哥Ignite大会上,微软宣布了SQL Server 2016,并将于今年夏季发布公开预览版。SQL Server是由微软开发的关系型数据库管理系统,用于软件应用请求数据的存储和管理...

如何优雅地使用嵌入式事件标志组?

事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发...

从 async/await 到虚拟线程:Python 并发的再思考

演进之路:从async/await到线程的反思首先必须明确的是,async/await对Python并非全无裨益:它最大的价值,是让更多人接触到了并发编程。通过在编程语言中嵌入语法元素,并发编程的门槛...

Linux系统编程:条件变量为什么要用锁

条件变量可以解决线程同步和共享资源访问的问题,条件变量是对互斥锁的补充,它允许一个线程阻塞并等待另一个线程发送的信号,当收到信号时,阻塞的线程被唤醒并试图锁定与之相关的互斥锁。具体定义如下:等待:in...