「西门子案例」电机随机启动,值得收藏哦
动作描述
1.现有5台电机,进行电机1~5编号需要实现它们的随机间隔启动;
2.5台电机对于5个选择开关,选择的顺序决定电机启动的顺序;比如先选择开关2,则2号电机最先启动,以此类推;未选择的电机不启动;
3.按启动开关,电机按之前选择的顺序间隔启动,间隔时间为5秒;
4.按下停止按钮,所有电机停止。
硬件设备
1.西门子PLC:S7-1214C DC/DC/DC
2.按钮2个,选择开关5个,控制电机继电器5个
软件
1.西门子PLC编程软件:TIA博途V16
I/O分配
程序编写及思路
为便于后期修改,我们把程序做成一个FB块,并定义形式参数,将来在主程序调用赋值实际I/O点,如图:
并建立了一些中间变量,特别是一些数组变量,来完成程序逻辑,方便做循环控制:
接下来我们开始写程序:
为了方便做循环调用,建立一些数组变量,跟输入的形式参数做简单对应:
然后对所有标志位初始化,特别的是要对定时器做初始化,停止程序同理:
之后做编号程序,用FOR循环和数组简化重复程序量:
继续写电机判断编号动作程序,同样使用FOR循环简化重复程序:
程序后段把用到的数组中间变量对应输出形式参数:
最后程序块在主程序调用,赋值实际I/O点:
程序完成,简洁且实用!
西门子SCL编程实例——产生随机数的算法
今天这篇文章给大家介绍下我编写的产生随机数的函数。
函数FC5006_RandomReal可根据需要产生一个指定范围内的随机数,它采用线性同余算法产生随机数,其公式如下:
X[n+1]=(a*X[n] +c) % m
这是一个递归公式,利用X[n]产生X[n+1]。其中:
a:系数,取值范围:0<a<m;c:增量,取值范围:0<=c<m;m:模,取值范围:m>0;说明:①m应尽可能的大,通常至少大于2^30(2的30次方);②如果m选取为2的幂(即m=2^n),则a的值通常应满足a mod 8=5;③当m和a的选取比较合理时,对于c的约束并不强,但要保证c与m互质,例如c可以选择1或11;这个递归公式中,X[n]用来产生X[n+1],因此,X[n]被称为种子。也就是说,前一个随机数是后一个随机数的种子。在实际使用时,第一个种子一般是作为参数赋值给函数的。这种递归公式计算对于C/C++等语言很适合,但是对于PLC的编程语言有所困难。因此,在实际PLC编程时,可以使用系统时间戳作为种子,即:
randomNumber=(a*seed +c) % m;
下面介绍下我编写的函数FC5006_RandomReal,它有两个输入参数:
minValue:需要产生随机数范围的最小值;maxValue:需要产生随机数范围的最大值;三个常数:
M_MOD:公式中的m;A_FACTOR:公式中的a;C_INCREMENT:公式中的c;所有参数如下图所示:
代码如下:
我编写了一个函数测试随机数算法,产生一个1~1000之间的实数,代码如下:
多次测试结果如下:
如果你对这个函数有任何问题,欢迎留言讨论。
我的书《西门子S7-1200/1500 PLC SCL语言编程》比较详细的介绍了SCL的编程,感兴趣的话可以看看下面的链接:
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 西门子S7-1200/1500 PLC SCL语言编程从入门到精通 ¥69 购买相关问答
PLC随机顺序控制?
PLC(可编程逻辑控制器)常用于实现自动化控制系统中的顺序控制。顺序控制是指按照预定顺序对设备或过程进行控制。PLC通常使用程序来定义和执行这些控制步骤。...
如何通过电脑读出PLC程序?
不管是什么PLC读取PLC程序的方法基本都一样。第一步:在电脑上安装与PLC对应的编程软件(一般买PLC时就随机带光盘,没有就网上下载)第二步:要有该PLC对应的...
如何读取plc芯片程序?
第一步:在电脑上安装与PLC对应的编程软件(一般买PLC时就随机带光盘,没有就网上下载)第二步:要有该PLC对应的数据线,用来连接电脑和PLC。(有些型号数据线是...
怎么样具体实现三菱PLC通过485接口与电脑的通信?越详细...
1)三菱FX2NFX3U有一个编程口,用485BD板可以扩展一个485通信口2)硬件实现...4)三菱FX3U支持modbus通信,可以吧三菱PLC串口当成modbus从站,用标准的协议,使用...
【可编程控制器有哪些部分组成?各有什么特点?】作业帮
[最佳回答]可编程控制器,即PLC包括1.中央处理单元CPU:系统核心部件,由大规模或超大规模集成电路微处理芯片构成,主要完成运算控制任务,可以接受并存储从编程器...
PLC编程为什么要先进行初始化?
初始化就是将程序中即将要用的寄存器设置一个初始值。包括输出、中间继电器、还有数据寄存器为什么要初始化,因为PLC很多数据都有断电保存功能。还有一些数据...
plc内部结构?
PLC内部结构一、CPUPLC的CPU实际上就是中央处理器,能够进行各种数据的运算和处理,将各种输入信号转化输入寄存器,然后进行逻辑的运算、计时、计数、算数运算...
PLC的CPU有哪几种存储器?
PLC常用以下几种存储器:(1)随机存取存储器:(RAM)用户可以用编程器读出RAM中的内容,也可以将用户程序写入RAM,因此RAM又叫读/写存储器。它是易失性...PLC常...
plc的典型应用?
PLC典型的应用有六种1、用于开关量控制PLC控制开关量的能力是很强的。所控制的入出点数,少的十几点、几十点,多的可到几百、几千,甚至几万点,由于它能联网...
plc模块原理?
PLC(可编程逻辑控制器)模块的原理是基于微处理器技术、自动控制技术和通信技术,将控制过程编程为用户的“自然语言”。它主要由以下几个组成部分构成:中央处...