西门子SCL编程实例——电机运行调度
前面的文章我们介绍了带运行计时的电机控制函数块,今天这篇文章,我们来介绍下如何实现多个电机自动调度(超时自动关闭并调度下一台电机)。
注:本文默认电机连接是使用断路器、接触器实现的直接启动电路,对于变频器类的控制需要做一些配置才能使用。
控制要求如下:
可设置每个电机的额定运行时间,当电机的实际运行时间大于额定运行时间时,则自动关闭并调度下一台可用电机;当电机出现故障(比如断路器跳闸或超时无反馈),则电机状态变为不可用。不可用电机不参加调度;当故障消除并复位后,电机状态重新变为可用,可重新参加调度;具体如下:
打开博途开发环境,新建项目,添加用户自定义数据类型:typeMotorSchedule,如下图所示:
其中:
Command:包括启动(start)和停止(stop),用来启动或停止电机;Para:电机控制参数,包括反馈时间和额定运行时间,单位,秒;ExtraSignal:外部信号,包括断路器和接触器反馈;State:状态,包括:输出位(Q)、错误位(error)、释放(release,表示电机是否可用)、选中(selected,表示电机是否被选中)、状态(status,电机状态,非0等于出错)、实际运行时间(actualRunningTime,单位,秒);添加函数块,命名为:FB5017_MotorScheduler,声明变量如下图所示:
函数块代码比较长,我将其分成多个区域:
功能说明;初始化(initialize);复位(reset);调度(sheduler);具体如下:
功能说明:
初始化:
复位:
调度:
使用该函数块时需要先初始化,然后使能。当出现错误时,要进行复位。
可以在全局数据块中创建电机数组(typeMotorSchedule),然后将断路器、接触器的信号写入电机数组的ExtraSignal中,并将电机状态State.Q输出到硬件的输出通道中。
我创建了测试函数块及全局数据块对电机调度程序进行了测试,包括断路器的错误测试,结果是OK的。
如果你有任何问题,欢迎留言。
我的书《西门子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://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 西门子S7-1200/1500 PLC SCL语言编程从入门到精通 ¥69 购买PROFINET基础知识介绍,实例讲解西门子PLC通讯控制机器人!
工业以太网一般使用IEEE 802.3中定义的以太网标准。针对自动化系统的网络节点辅助采用了服务质量( QOS)机制。PROFINET作为工业以太网之一,它采用了三种不同的方法来实现。这样既满足了普通以太网的需求,又满足了工业系统对不同应用的实时性的要求。如下图1所示。
图1、PROFINET使用到的三种协议栈
① 使用了IEEE 802.3以太网标准和TCP/IP,报文结构如图2所示。大多数的PROFINET通信是通过没有被修改的以太网和TCP/IP包来完成。这使得可以无限制地把办公网络的应用集成到PROFINET网络中。
图2、TCP/IP报文结构
② RT的通信不仅使用了带有优先级的以太网报文帧(如下图3所示),而且优化掉了OSI协议栈的3层和4层。这样大大缩短了实时报文在协议栈的处理时间,进一步提高了实时性能。由于没有TCP/IP的协议栈,所以RT的报文不能路由。
图3、PROFINET RT报文结构
③ IRT通信是满足最高的实时要求,特别是针对于等时同步的应用。IRT是基于以太网的扩展协议栈,能够同步所有的通信伙伴并使用调度机制。IRT通信需要在IRT应用的网络区域内使用IRT交换机。在IRT域内也可以并行传输TCP/IP协议包,如图4所示。
图4、PN控制器和PN设备的分片处理机制
以PROFINET RT为例来理解在整个通信的过程中实时性能是如何来保证的。
从通信的终端设备(PN控制器和PN设备)来看,首先采用了优化的协议栈,这一点可以在图1的 ②看到。这样一来在终端的设备上数据报文被处理的时间大大的缩短,这是实时性能保证的一个方面。其次是终端设备上采用的分时间段处理机制,这一点可以在图5看到。这样保证了在每个通信的循环的周期内终端设备即可以处理RT的实时数据又可以处理TCP或UDP的数据。且在每个循环内优先处理RT的实时数据。这里需要强调的是每个PN终端设备只对自己的负责,需要发送的数据会按发送循环发送、对于由其他设备发到自己的数据会进行立即接收,且发送和接收是并行处理。
图5、RT的时间调度机制
从通信的传输设备(SCALANCE X交换机)来看,首先采用百兆全双工的交换网络,这样一来每个终端设备的每个端口都是独享带宽,且可以双向不间断的收发数据。其次是交换机支持802.1P或802.1Q的标准,使得发到交换机网络的PN的数据帧被优先处理和转发,如图6所示。这一点保证了PN在网络上的快速转发,也是实时性能保证的另一个方面。
图6、交换机802.1Q的工作机制
上面介绍的是PN RT的实时性能从机理上如何保证的。而从量化的角度去分析的话,PN RT完全是靠计算来精确保证每个发送循环所能发送的报文及对RT数据的时间的预留。
对于RT来说,在物理层上传输的最小报文帧来为88个字节,最大报文帧来为1488个字节。其中包括了12个字节的帧间隔,如下图7所示。
图7、RT的报文的长度
百以太网的传输速率 :
每个字节传输需要的时间:
最小的RT报文帧需要的传输时间 0.08
一个PN控制下带3个最小报文帧(40个字节的C_SDU)的PN设备,PN 控制器的发送循环为250 ,通信建立后在PN接口上抓报分析PN的通信可以分析出PN数据帧对时间调度的情况,如下图8所示。
图8、PN RT的时间调度机制
除了对PROFINET RT和IRT的通信调度的分析外,还对PROFINET的抗干扰性作了大量的研究。在对PROFINET推广的时候,很多用户很关心PROFINET是不是和PRROFIBUS一样,存在抗干扰的性能差的特点。我从理论和实际实验上验证了PROFINET的抗干扰性能优于PROFIBUS的抗干扰性能。PROFINET是基于IEEE 802.3的以太网标准。所以对PROFINET的抗干扰分析实质上是对工业以太网的抗干扰分析。
好吧!理论说完了,我们实例讲解一下吧!
今天带来的案例是博途PLC通过PROFINET连接库卡机器人!
网线连接至控制柜门上的KLI端口,另一端连接到交换机,PLC也连接到交换机(交换机无型号要求),交换机再连接到电脑。
首先将编程电脑、PLC、KUKA设置成统一网段,因KUKA的底层设置原因,最好不更改机器人IP地址
1:添加新设备 2:导入GSD文件
安装GSD,并把KUKA设备进行组态
在视图里面进行连接
删除安全模块、设置地址、设备名称
设置好以上后(包括PLC地址),接下来就可以编译下载到PLC。下载完成后PLC会报红灯,是因为下一级组件存在故障,即还没有设置机器人端,连接不到下一级组件,所以报错。也可以使用此方法判断是否连接成功。
WorkVisual对KUKA进行设置
激活、添加Profinet、DTM选择Profinet
双击Profinet进行设置
进行信号映射
首先生成代码,再下载到控制器,注意在控制器上做好确认工作
机器人侧的信号确认:
机器人侧即为映射时的IN(..),PLC侧则是在博图里对KUKA设备设置时的IO地址
相关问答
PLC主站从站什么意思?
是指在工业自动化控制系统中,PLC(可编程逻辑控制器)的通讯方式。其中,PLC主站是指负责控制、监视和调度PLC从站的设备,通常由计算机、上位机、控制器等设备...
plc的自检过程怎么完成的?
PLC控制系统在启动、运行过程中如何自检1、自控系统初始状态在一般的工业生产过程中,系统内每台设备开始时均处于初始状态。初始状态包括:供设备用电的电...
plc交通信号灯结构与功能?
PLC交通信号灯结构包括信号灯主控制器、信号灯控制器、信号灯灯头、信号灯电源等。PLC交通信号灯的功能主要包括:1.交通指示:根据不同的交通流量和行进方向...
PLC干嘛的?
PLC即可编程逻辑控制器,是一种用于工业自动化控制系统的重要设备。它主要用于监控和控制生产线、机械设备、工业过程等工业应用。PLC可以根据预设的程序和逻...
DDC和PLC有什么区别?
1.结构差别:DDC是一种“分散式控制系统”,组成的系统是分层的结构,可以实现点对点的通讯,而PLC只是一种控制“装置”,常用于生产线上某个部位的控制,组成的...
学机电一体化的对口工作岗位有哪些?
**机电设备管理**:在各类机电设备企业从事设备使用管理、维护维修、设备采购与物流管理等工作。4.**机械加工**:可以在机械制造企业从事零件加工工艺设计...
DCS比PLC的优势有哪些?
DCS和PLC是当前自动化控制领域的两大系统,是两种互不相同的系统,又紧密联系且互为主辅。在自动化控制装置中已被广泛应用,如石油、化工、冶金、电力等行业。它...
自动控制原理面试常问的问题?
1、什么是工业自动化?可以看到大部分行业都使用自动化,它用于减少人力。许多制造业已经用自动化取代了人力,如今可以看到自动化机器、自动化监控系统。所以大...
wcs系统是什么?
通常,自动化仓储物流系统软件由两部分组成:仓库管理系统(WMS)、仓库设备控制系统(WCS)。自动仓储系统大致可分为三个层次,最上层是WMS,负责仓储业务逻辑的处...
LCU是什么意?
而按照LCU本身的结构和配置来分,则可以分为(1)单机—线型结构的LCU。(2)可编程控制器(PLC)。(3)基础的LCU。智能现地控制器等三种...隔行扫描就是每...