基于西门子博途电机运行时间的先起先停控制

这是我同事在2019年做的一个功能,基于这个功能,可以形成类似的其他更多的功能,这些功能在一些项目上的实用性还是比较强!

1,控制目标博途工控人平时在哪里技术交流博途工控人社群

根据需要启动电机的数量,按照以下规则进行控制:

        a,故障及手动状态的电机不参与自动控制;

        b,运行时间短的电机优先启动;

        c,运行时间长的电机优先停止;

2,实验环境

操作系统

Windows7 Ultimate SP1

编程软件

TIA Portal V15.1 Update3

系统硬件

CPU1215C 6ES7 215-1AG40-0XB0 V4.2

3,实现方案

     在OB1里调用MotorCtrl的FB,用于控制电机的先起先停程序。

    3.1 电机控制算法

      a,根据电机控制的重复性,建立一个数据类型Motor,包含电机的状态变量:启动/停止/运行/故障/手动;

图片

                           

      b,在FB中建立InOut变量MotorStatus,用于记录所有电机的状态,由于电机数量不确定,我们可以建立一个可变数组;

图片

      c,编写电机控制程序,首先引入3个变量:

图片

        1, #Num.Running:已运行电机的数量;

        2, #Num.NeedStart:需要运行电机的数量;

        3, #MotorOrderNum,数组变量,用于定义电机运行时间的由短到长的电机编号,即MotorOrderNum[1]是运行时间最短的电机编号:

当#Num.Running小于#Num.NeedStart时,由MotorOrderNum[1]开始寻找启动没有启动,没有故障,不在手动状态的电机;

图片

  

当#Num.Running大于#Num.NeedStart时,由MotorOrderNum[max]开始反向寻找已启动的电机停止;

图片

        d,电机启停控制及状态统计

图片

 

    3.2 运行时间统计算法

  对于S7-1200/1500的PLC,可以使用Runtime指令对电机运行时间统计:

    a,在FB的Static里建立3个变量:

图片

1,#Run_Time::用于记录程序每次循环的时间;

2,#TimeMemory:中间变量,用于记录调用RUNTIME指令的时间点;

3,#Total_Run_Time:用于记录总循环的时间;

    b,调用RUNTIME指令,计算所有电机的运行时间:

图片

 

    3.3 先起先停算法

   由于需要把电机按照运行时间的长短进行排序,我们建立两个临时变量用于存储运行时间最短的电机编号及时间,同时实时和其他电机数据进行比较:

    a,在FB的Temp里建立2个变量:

图片

 1,#Temp_Min_Num::运行时间最短的电机编号;

 2,#Temp_Min_Runtime:运行最短的时间;

    b,确定运行时间最短的电机编号及时间,确定MotorOrderNum[1]的电机编号:

先把1#电机的编号及时间设为#Temp_Min_Num和#Temp_Min_Runtime,调用循环,从第2台电机开始进行比较,如果比第一台电机的时间短,则把当前电机的电机编号和时间赋值给#Temp_Min_Num和#Temp_Min_Runtime;

图片

    c,依次确定时间由短到长的电机编号,依次填入MotorOrderNum[2]…:

图片

  上述嵌套循环用于确定除已确定电机序号MotorOrderNum[]以外的电机的#Temp_Min_Num和#Temp_Min_Runtime两个变量的值,具体思路如下:

在b步骤里,MotorOrderNum[1]的电机编号已确定,如果想找MotorOrderNum[2]的电机编号,则从第1台电机开始搜索,如果第一台电机的编号1等于MotorOrderNum[1],则跳过对#Temp_Min_Num变量进行赋值,进行下个循环,这时就把第二台电机的编号2赋值给#Temp_Min_Num;如果第一台电机的编号1不等于MotorOrderNum[1],则把第一台电机的编号1赋值给#Temp_Min_Num;同理,如果想找MotorOrderNum[3]的电机编号,则从第一台电机的编号开始和MotorOrderNum[1]和MotorOrderNum[2]的数据比较,相同则跳过赋值#Temp_Min_Num,不同则把当前的电机编号赋值给#Temp_Min_Num,#Temp_Min_Num和#Temp_Min_Runtime赋值完成后,退出循环;

图片

  在确定了#Temp_Min_Num和#Temp_Min_Runtime后,我们依次把除已确定顺序的电机的运行时间分别与#Temp_Min_Runtime进行比较,找到最小值后,把该电机的编号赋值给MotorOrderNum[]…按顺序依次确定好MotorOrderNum数组的值。

    3.4 IO映像区读写算法

  在确定好电机启动顺序后,需要把PLC的IO点和电机的状态映射:

  1,电机的故障信号(#MotorStatus.fault)映射到DI区,即通过DI点读取电机的故障信息;

   2,电机的运行信号映射DQ区,即把电机的运行信号(#MotorStatus.run)传输到DQ点,作为电机的使能信号;

   PLC的DI/DQ点选择建议是连续的点,不连续则需要多次调用FB(IO-Mapping)进行映射。

图片

FB的管脚定义如下:

 MappingArea:String:定义需要映射的区域,I/Q/M/DB;

 Function:Bool:定义读写,0=read,1=write;

 StartAddr:Real:定义位的起始地址;

      Count:Int:定义映射连续位的数量;博途工控人平时在哪里技术交流博途工控人社群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/262408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PhysX——源码编译

从git下载源码 git主页 https://github.com/NVIDIA-Omniverse/PhysXclone地址 https://github.com/NVIDIA-Omniverse/PhysX.git源码编译 运行PhysX需要两个编译器的支持,CMake 3.12 或以上版本以及Python 2.7.6 版本 进入工程的 physx 目录,运行generate…

案例109:基于微信小程序的高校寻物平台

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

KubePi JWT 默认密钥权限绕过漏洞复现(CVE-2023-22463)

0x01 产品简介 KubePi 是一款简单易用的开源 Kubernetes 可视化管理面板。 0x02 漏洞概述 KubePi 存在权限绕过漏洞,攻击者可通过默认 JWT 密钥获取管理员权限控制整个平台,使用管理员权限操作核心的功能。 0x03 影响范围 KubePi <= 1.6.2 0x04 复现环境 FOFA: ti…

CUMT--Java复习--泛型与集合

目录 一、泛型 1、概述 2、通配符 3、有界类型 二、集合 1、概述 2、迭代器接口 三、集合类 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合转换 五、集合工具类 一、泛型 1、概述 从JDK5.0开始&#xff0c;Java引入泛型类型&…

微服务之服务注册与发现

服务注册发现 服务注册就是维护一个登记簿&#xff0c;它管理系统内所有的服务地址。当新的服务启动后&#xff0c;它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。当下用于服务注册的工具非常多 ZooKeeper&#xff0c;Consul&…

谁能更好地检测深度伪造?人还是机器?

本文将和您讨论深度伪造对社会构成的重大威胁&#xff0c;AI检测工具以及人类专家在不同方面的技术优势与劣势。 不知您是否听说过深度伪造&#xff08;Deepfakes&#xff09;这种欺诈应用&#xff1f;由它产生的各种虚假信息已威胁到了人类社会的方方面面。随着人工智能技术的…

全新揭秘:Java WebSocket全双工通信的实践与运用

全新揭秘&#xff1a;Java WebSocket全双工通信的实践与运用 一、简介何为全双工通信全双工&#xff1f;WebSocket的使用场景 二、如何使用Java实现WebSocket1&#xff0c;引用websocket相关starter2&#xff0c;启用websocket3&#xff0c;服务端代码开发4&#xff0c;群发测试…

【数字图像处理】实验四 图像分割

一、实验内容&#xff1a; 1&#xff0e; 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2&#xff0e; 熟练掌握各种图像分割的基本原理及方法。 3&#xff0e; 能够从深刻理解图像分割&#xff0c;并能够思考拓展到一定的应用领域。 二、实验…

GraphPad Prism 10 for Mac v10.0.0.3 安装教程

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版&#xff0c;增加了很多东西。变化在于以下&#xff1a; 使用属性层次&#xff08;affinity hierarchies&#xff09;&#xff0c;来对core进行标识&#xff0c;使gic支持更多的core 将cpu interface独立出来&#xff0c;用户可以将其设计在core…

安卓好用的python编辑器,安卓平台python编辑器

本篇文章给大家谈谈安卓上好用的python编辑软件有哪些&#xff0c;以及安卓上好用的python编辑软件推荐&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1. 简介 Thonny是基于python内置图形库tkinter开发出来的支持多平台(windows,Mac,Linux)的python IDE&am…

Windows10操作系统上安装VMware虚拟机和CentOS7

最初使用Windows与CentOS双系统&#xff0c;发现在系统之间切换非常不方便&#xff0c;于是决定改用windows系统加虚拟机的方式。 我百度搜索下载的VMware Workstation 12 pro&#xff0c;下载地址&#xff1a;https://www.zdfans.com/html/23471.html&#xff0c;网页提供了序…

【Hadoop】YARN简介(YARN产生的技术需求/YARN的基本架构)

YARN产生的技术需求YARN的基本架构ResourceManagerNodeManagerApplicationMasterContainer HDFS与YARN YARN产生的技术需求 YARN是Hadoop v2.0 引入的核心组件。YARN 从某种那个意义上来说应该算做是一个云操作系统&#xff0c;它负责集群的资源管理和任务调度&#xff0c;在 …

机器学习:手撕 AlphaGo(一)

图 1-1: AphaGo 结构概览 1. 前言 AlphaGo 是一个非常经典的模型&#xff0c;不论从影响力还是模型设计上。它的技术迭代演进路径&#xff1a;AlphaGo&#xff0c;AlphaGoZero&#xff0c;AlphaZero&#xff0c;MuZero 更是十分精彩。相信有很多同学因为听了 AlphaGo 的故事对…

伽马校正:FPGA

参考资料&#xff1a; Tone Mapping 与 Gamma Correction - 知乎 (zhihu.com) Book_VIP: 《基于MATLAB与FPGA的图像处理教程》此书是业内第一本基于MATLAB与FPGA的图像处理教程&#xff0c;第一本真正结合理论及算法加速方案&#xff0c;在Matlab验证&#xff0c;以及在FPGA上…

CSS(五) -- 动效实现(立体盒子旋转-四方体+正六边)

一. 四面立体旋转 正方形旋转 小程序中 wxss中 <!-- 背景 --><view class"dragon"><!--旋转物体位置--><view class"dragon-position"><!--旋转 加透视 有立体的感觉--><view class"d-parent"><view …

【JVM】一、认识JVM

文章目录 1、虚拟机2、Java虚拟机3、JVM的整体结构4、Java代码的执行流程5、JVM的分类6、JVM的生命周期 1、虚拟机 虚拟机&#xff0c;Virtual Machine&#xff0c;一台虚拟的计算机&#xff0c;用来执行虚拟计算机指令。分为&#xff1a; 系统虚拟机&#xff1a;如VMware&am…

Bash 脚本学习

文章目录 1、脚本编程基础2. 变量2.1 参数变量的引用2.2 环境变量 3 条件判断语句3.1 if 语句3.1.1 语法3.1.2 案例 3.2 case 语句3.2.1 语法3.2.2 案例 3.3 判断参数说明 4 循环语句4.1 for 循环4.1.1 语法4.1.2 案例 4.2 while循环4.2.1 语法4.2.2 案例4. 3 循环总结 5. 函数…

7.串口通信uart编写思路及自定义协议

前言&#xff1a; 串口是很重要的&#xff0c;有许多模块通信接口就是串口&#xff0c;例如gps模块&#xff0c;蓝牙模块&#xff0c;wifi模块还有一些精度比较高的陀螺仪模块等等&#xff0c;所以学会了串口之后&#xff0c;这些听起来很牛批的模块都能够用起来了。此外&#…

RTP/RTCP/RTSP/SIP/SDP/RTMP对比

RTP&#xff08;Real-time Transport Protocol&#xff09;是一种用于实时传输音频和视频数据的协议。它位于传输层和应用层之间&#xff0c;主要负责对媒体数据进行分包、传输和定时。 RTCP&#xff08;Real-Time Control Protocol&#xff09;是 RTP 的控制协议&#xff0c;…