新闻
西门子S7-200, EM232 模拟量输出模块现货西门子代理商
2024-05-14 10:53  浏览:6
西门子S7-200, EM232 模拟量输出模块现货西门子代理商用计算机编程思路来解决复杂的工控问题


1



   

ST(Structured Text)编程语言

ST 是一种基于 Pascal 的编程语言,被广泛应用于可编程逻辑控制器(PLC)和嵌入式系统的编程中。它主要用于实现 PLC 程序中的逻辑和算法部分,使用流程控制语句和逻辑运算符来描述程序的运行逻辑,同时支持多种数据类型的处理。ST 语法结构化,可读性和可维护性都非常高,在工业自动化领域拥有广泛的应用。掌握 ST 语言是从事工控领域开发必不可少的技能。

在逻辑非常复杂的情况下,使用传统梯形图编写程序会产生大量冗长的代码,难以维护和拓展。为了解决这些问题,可以考虑使用计算机编程的方式编写工控程序。





我的主要思路是将每个功能编写成一个独立的功能块,每个小功能块都能满足一个简单的功能,然后将简单的逻辑块逐一组合,终使用梯形图完成整个控制程序。这种方法既能够简化编写过程,又能够保证程序的可读性和可维护性。图片



为了更好地阐述我的思路,我将使用一个案例来说明。


2

   

案例

2.1

   

问题描述

该程序的主要功能是实现故障自动切换。它的输入包括:启动信号、停止信号、主电机故障信号、备用电机故障信号。同时,该程序还能输出主电机的启停信号、备用电机的启停信号以及状态字。

2.2

   

问题分析

首先,在用户输入启动时,增加一个判断,判断一下当前的状态。

如果已经处于运行状态,则不做任何处理;

如果不是运行状态,则开始执行自动切换程序。

在自动切换的过程中,同样需要增加一个判断,根据状态来确定主备电机的输出。

当用户输入停止时,主备电机都停止输出。

2.3

   

程序设计

为了简化一下逻辑,我们将程序分成两块。

首先是电机故障状态判断,我们用一个状态字来表示状态:

当故障状态字为 0 时,表示主备电机都正常;

当故障状态字为 1 时,表示主电机故障;

当故障状态字为 2 时,表示备用电机故障;

当故障状态字为 3 时,表示主备电机都故障;

然后我们编写自动切换程序:

根据不同的故障状态字,来启动不同的电机。

2.4

   

程序编写

我们来使用西门子 TIA 平台的 scl 语言来编写,SCL(Structured Control Language)和 ST(Structured Text)实际上很相似,都是一种基于 Pascal 的结构化编程语言,其语法和结构非常接近。SCL 是西门子公司开发的一种专门用于 PLC 编程的语言,而 ST 则是 IEC 61131-3 定义的通用工业控制器编程语言。

首先我们先创建一个功能块如下图,名字为 State_judgment,语言选择 SCL,FC 函数,然后确定


输入输出定义及代码编写如下图,只需要将几种状态按设计好的状态值编写即可。


然后我们创建另一个功能块,名字 Automatic_switching,语言选择 SCL,FC 函数,然后确定


输入输出定义及代码编写如下图,只需要将几种状态按设计好的状态值编写就行。


然后我们创建另一个功能块,名字 Master/slave_motor_failover,语言选择 LAD,FB 函数,然后确定


输入输出定义及代码编写如下图:



我们按照设计好的程序一步步地进行编写。虽然这个过程并不涉及太过复杂的逻辑,但如果我们完全采用梯形图(lad)编程的话,程序会相对复杂一些。而且,这种方式也不便于后期的维护和增加功能。

2.5

   

程序运行

我们将编写好的功能块 Master/slave_motor_failover 在主程序 OB1 当中调用,如下图:


通过手动给定条件测试正常,如下图:



3

   

问题拓展

3.1

   

问题分析

在后期的实践中,有时候虽然 PLC 产生了输出,但是由于某些原因,电机并没有真正启动。为了确认电机是否成功启动,我们可以通过接触器反馈信号和电机旋转检测信号来进行检测。我们可以将多个反馈信号合并为一个条件,并在电机启动后进行运行反馈检测。如果在 5 秒钟内没有检测到反馈信号,则可以判断电机故障,并切换到另一台电机。这样的优化方案可以提高程序的稳定性和可靠性。

3.2

   

程序设计

主程序不需要太大的改动,只需要增加一个电机运行反馈检测功能块就能完成。

当电机启动时,激活检测功能,

如果在 5 秒钟之内没有检测到反馈信号,则输出故障信号。

3.3

   

程序编写

首先我们先创建一个功能块如下图,名字为 Feedback_detection,语言选择 SCL,FB 函数,然后确定


输入输出定义及代码编写如下图。


将新增加的功能块添加到功能块 Master/slave_motor_failover 当中,如下图




3.4

   

程序运行

我们将修改好的功能块 Master/slave_motor_failover 在主程序 OB1 当中调用,如下图:


通过手动给定条件测试正常,如下图:



4

   

总结

通过借鉴计算机编程的思路,我们可以将一个复杂的逻辑分解成几个简单的逻辑,再将其组合起来,从而将复杂问题简单化。这种方式有以下几个优点:

提高编程效率:可以将程序分解成独立的功能模块,每个模块的编写和测试独立,降低开发难度,提高编程效率。

方便维护:软件结构清晰,代码逻辑简单,容易理解和修改,方便后期维护。

利于重复使用:使得代码的复用成为可能。不同的系统或软件可以调用相同的模块来实现相同的功能,提高开发效率,同时也减少代码量,提升程序的可维护性和可靠性。

支持团队协作:在团队开发中,不同的开发人员可以独立地编写不同的模块,集成到一个完整的系统中。这种方式不仅提高了开发效率,还可以给代码质量监管的机会,确保代码质量和程序的稳定性。

方便解决问题:使得代码结构化,程序中出现问题时可以迅速定位和解决问题,而不影响程序的其他部分,提高了程序的可靠性和稳定性。


相关新闻
联系方式
公司:湖南西控自动化设备有限公司
姓名:徐嘉泉(先生)
职位:经理
手机:17838383235
地区:湖南-长沙
地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
QQ:3305575995
微信:17838383235
拨打电话
微信咨询
请卖家联系我