精华帖OEE(设备综合效率)即表现设备实际的生产能力相对于理论产能的比率,是一种独立的测量工具,用于监控、评估和提高生产过程的有效性。OEE=时间开动率×性能开动率×合格品率=(开动时间/负荷时间) ×(加工数量×实际加工周期 /开动时间)×(理论加工周期/实际加工周期)×(合格产量/加工数量)= (开动时间×加工数量×实际加工周期×理论加工周期×合格产量)/(负荷时间×开动时间×实际加工周期×加工数量)约去分子、分母的公因子,OEE = (理论加工周期×合格产量)/负荷时间 = 合格产品的理论加工总时间/负荷时间,这也就是实际产量与负荷时间内理论产量的比值。 这里我们采用“OEE = (合格产量×加工节拍)/负荷时间”的简单公式来记录设备每日OEE,来做生产策划评估用。 针对840D sl系统的进口高端数控设备,例如卧式加工中心、磨齿机等高价值机床,利用SINUMERIK OPERATE 的HMI界面开发用户界面,展示并统计设备OEE,后期可通过分析数据来提高设备利用率。 笔者前段开发过S71200产线的OEE统计方法,见西门子S71200自建数据类型统计设备OEE的方法_西门子1200自定义数据类型-CSDN博客,840D sl的PLC为S7-300系列,编程理念与之类似,在此不展开了。 想开发840D sl HMI界面,请翻阅西门子官方文档,需要用到文档《828D_840Dsl_工具_RunMyscreens_例程合集_201906》,以及《RUN MYSCREENS 应用手册》、SINUMERIK Integrate Run MyScreens,经过一段时间摸索,实现了德国利勃海尔LGG280蜗杆磨齿机用户HMI界面开发、设备OEE统计、月度数据表格等功能,如图:该项目在SinuTrain及实际设备上运行通过。 该用户HMI界面包含四块区域,上部包含生产品数/加工节拍/运行时间及设备OEE等数据,并图视化列明计算公式;左下半部包含单日加工效率/待料/暂停及故障比例(包含进度条);右下半部统计单日产量/月度产量/年度产量/总产量;最后下部设定班次时间,即当日OEE统计时间段。下面介绍下开发过程:首先,我们要设计一个用户界面入口,如下图:笔者设计从主菜单“诊断”进入二级菜单,然后由“OEE_Data”进入用户界面,一、入口文件编写 首先,我们要知道设备HMI是基于Linux还是Windows系统,入口文件存储位置及优先级不一样,见下图:以及文档类型、扩展名、保存路径: 知道了文档位置及名称,我们直接在840D sl的PCU里查找(windows),该机床的easyscreen.ini文件存放在C:\ProgramData\Siemnes\MotionControl\oem\sinumerik\hmi\cfg下(设备制造厂商的配置文件一般放置在oem目录),我们打开它:我们设计从主菜单“诊断”进入二级菜单,因此留意StartFile04=area:=AreaDiagnosis,startfile:=param.com这句,知道了启动文件为param.com,因此回到C:\ProgramData\Siemnes\MotionControl\oem\sinumerik\hmi\proj目录下找到param.com文件,并用notepad打开:1、增加一句“ HS7=([\\HD_OEE.PNG,Data],ac7,se1)”,释义:水平第7按键(原空白)增加OEE图标及“Data”文字,效果如下:2、增加PRESS的方法,如下图,释义:按动水平第7按键,调用CUSTOM.COM文件中的“OEE”界面。3、文件修改好后另存在C:\ProgramData\Siemnes\MotionControl\user\sinumerik\hmi\proj,根据优先级,HMI启动后会调用user目录下的param.com文件,而忽略oem目录下的param.com文件,这样既有修改又有备份的作用。 如上,我们就建立了从“诊断”主菜单进入二级菜单,二级菜单第7按键显示“OEEdata”的界面入口了。二、界面(Mask)文件编写 本步骤建立界面(Mask)文件。1、用notepad新建CUSTOM.COM文件,并打开、编写:在“//M{OEE,HD=OEE数据LGG280,HD_AL=0,HLP=OEE_DIS_LH901.png,HLP_X=3,HLP_Y=10}”定义句中,定义了Mask的名称OEE,与前面param.com文件中的 “LM(OEE,CUSTOM.COM)”相呼应。2、定义变量的数据类型、位置、格式等,具体定义方法见《RUN MYSCREENS 应用手册》3、定义下一界面“生产数据”(Mask2),以及列表“生产数据”界面的效果如下:4、将CUSTOM.COM文件保存在C:\ProgramData\Siemnes\MotionControl\user\sinumerik\hmi\proj下。 以上完成了HMI界面的开发,下面需要把需要的数据计算及统计展示出来,我们将要通过PLC编程计算与统计相关数据。三、PLC编程及数据记录 1、每日生产数量计数:加工程序合适位置增加语句,通过用户变量R500计数(一定要注意,不要与设备加工程序使用的变量冲突,如加工程序在进给程序段中也使用了该变量,有可能带来撞机危险),该数据同时通过$A_DBD[500]与PLC交换数据 。2、打开STEP7 V5.6,编写程序FC块(OEE计算)、DB块(月度记录)等,并在OB1中调用:每日数据记录:按月记录,每月1日清零,当日按日期记录各数据入DB块相应地址,并且在HMI上展现,需要用到32位指针以上是整个开发流程,欢迎大家交流。附图为机床运行实际效果:
在办公室内给400V级的功率模块接入了220交流电,配上CU控制器,面板显示A30016,无法面板手动启动。能不能屏蔽掉报警后驱动单相220负载?
最近更换电脑没有带网口,选用TYPE-C转网口调试西门子设备会有问题吗?
G120的CU控制板以前使用过面板下载过DP类型变频器的参数,后导致两个报警A1028和A1045,,无法启动变频器。如何消除报警?
前言:软件:TIA V19CPU:1500HMI:TP900 Basic背景:缓存400条数据到DB(Datalogs)块内,HMI上有一个界面可以查看这些数据。方便操作,写了相关功能。(相关数据和程序简化后再仿真还原,只讨论核心问题)数据查看界面如下:(一个页面显示10条记录,总共缓存400条记录)StartIndex:输入/输出IO控件,用来指定索引起始位置PreRecord/NextRecord:上下翻单条记录PrePage/NextPage:上下翻页实现原理:按钮都使用DecreaseTag或者IncreaseTag函数来操作StartIndex变量的值,以实现单条记录或整页的切换。PLC程序代码如下:(本人菜鸟一个,大佬们先不用关心这段SCL程序,性能拉胯还需要大大的优化)在StartIndex的Region中,已对StartIndex的值进行限制,防止索引值超过数据数量范围故障表现:数据区地址访问无效导致CPU临时停机原理分析:在DataDisplay的Region中,我需要在指定的Startindex索引起始处,连续取10条数据出来,进行简单的处理后显示到HMI上。当StartIndex值+10后,如果结果小于0或者大于400,就会发生数组越界导致访问的数据地址不存在。故障原因排查分析1,在StartIndex的Region中,已对StartIndex值进行范围限值,在范围内,索引值+10(需要10条数据),其范围依然会在0-400内,这个索引范围依然在的数据记录数组的范围内,为什么数组还是会越界?原因:因为Decrease或Increase函数会让StartIndex的值超过我设定的范围(0-390),比如-2或者395。但这个过程不是永久的,因为更新周期(1S)的存在,这个异常值(-2或395)会被更新,然后限定在0-390之间。然后尴尬的来了,这个更新周期的时间,对于CPU来说,太长了,这个异常值依然会被记录和处理,于是故障发生了。2,我已经设置StartIndex变量的限值范围如下图,它为什么没有限值住StartIndex变量的取值范围?这个有点不太明白,目前查看帮助是说限制输入的范围,那我用Decrease或者Increase函数来操作这个变量,不算输入嘛?我的操作方式可能不太对,恳请大佬讲解,感谢~3,意识到更新周期的问题后,我把StartIndex的变量更新周期改到100ms内,依然会发生数组越界问题。尝试之后知道,这个问题不是数据更新的问题了,难过~~问题解决办法:由于我无法直接解决这个问题,所以我采取了另外的办法来避免(只是避免未解决)这个问题,我引入了StartIndex变量的ValueChange事件,当这个事件被触发后,我来更新整个查询的操作。发这个帖子的目的:1,上面提到的Decrease或者Increase函数问题,如果我继续坚持使用的话,我应该以何种正确的姿势来使用这个函数呢?2,这个异常的现象,到底是如何引发的呢,根本的原因是啥?3,变量的范围参数这个,是不是还有我未涉及的知识盲区?4,希望这个帖子对项目中也使用这个用法的同学有点参考意义。恳请大佬普及一下,感谢!先磕一个,以示尊敬~~~
V90PN伺服驱动,仅用V-ASSISTANT软件调试,端子无外接线,采用USB线调试时没有问题用RJ45以太网线连接后,在调试时报“控制优先权失败”故障,警告窗口的故障和警告信息均为0,而且报警窗口每次关闭后会再次弹出,强行关电脑后切换到USB线调试伺服还是没有问题。以太网口是USB转换的,绿联2.0。请问这是什么原因导致的?谁遇到过怎么解决的?
我上周在做一个小的项目时,需要用一个之前在博图里用的FC,同样的方法在200smart里做了一个库文件,做好后封装没问题,但在下载时一直报错指令非法检查指令助记符,但是我的程序是1200移植过来的没用什么特殊的指令,所以不可能用错指令,现场又一直在催,马上改变思路,做了如下几步1,不封装做个独立的子程序调用,没任何问题------排除程序问题2,删除封装的问题,保留形参,下载依旧报错----------问题出在接口上3,删除一半形参,再下载无报错----找到问题,形参太多了一个子程序到底支持多少个形参,查帮助定义子例程参数,果真有写“子例程可能包含传递的参数。 在子例程的变量表中定义参数。参数必须具有符号名(最多 23 个字符)、变量类型和数据类型。最多可与子例程之间传递十六个参数”。我刚好用了18个,删除2个,自此问题解决。又被200smart给上了一课
临时变量(局部变量,L区)的值,没有赋值前值是不确定的,这是站在子程序内部看的结果。如果从编程者的全局来看,临时变量没有赋值,其值是可以预知的。实验程序:两空子程序,实现把M0.0输出至Q0.0的功能。这个简单实验,揭示临时变量的大部分行为规则。两个空子程序的功能.rar
点击此处去访问→ 自动化框架AF:推动从1到n的规模化复制标准自动化框架(AF)是一套面向自动化行业的一种开源,模块式的工具集。它为设备制造商与终端客户提供了一个可靠平台,助力其实现生产应用的高效标准化。AF包含了预组态好的PLC功能块,HMI画面模板,程序和组态样例,以及详尽的文档。点击此处去下载→标准机器应用集锦:实现从0到1的快速搭建标准机器应用集锦是基于西门子最新的自动化框架(AF),针对自动化产品在各潜力行业的应用场景,所提供的标准化应用案例集,其中包括适用于特定机型和应用的:组态配置,PLC样例程序,HMI画面程序及参考文档等。点击此处去下载→功能应用库:持续提升效率与可靠性功能应用库既包含了西门子标准库文件又包含了一些机型应用库。西门子标准库文件覆盖了TIA全局库、TIA插件和以及实例项目。机型应用库包含了具体应用样例中使用的自定义库。该功能应用库旨在减少工程设计和调试工作量。点击此处去下载
CU240与不同PM功率模块搭配我知道对CU有固件版本最低要求,那S120控制单元固件版本不同,跟各模块都通用吗?
如题,一般以太网或者PN通讯用的网线,设备间的条线,最短的长度有没有要求呀,是多少,我做了好几条0.3米和0.5米长度的,能用不
S7-1500与8台S7-200 SMART设备通过Modbus RTU通信实现状态读取和控制的需求,结合西门子产品能力与通信机制,提供以下解决方案建议:1. 动态轮询设备数量的实现由于设备开启数量不确定,无法固定使用MBUS_MSG指令的Done信号触发下一条指令,建议采用状态检测+计数控制的方式动态调整轮询范围。在S7-1500侧编写轮询逻辑时,可先对每台S7-200 SMART从站发送一个轻量级读取请求(如读取一个标志位或状态字)。根据返回结果(如无响应则判定为未启用),建立一个“在线设备列表”或“有效轮询索引表”。使用循环指针或间接寻址方式,仅对确认在线的设备执行后续的数据读取操作,从而实现动态轮询。 此方法避免了在大量设备未启用时仍进行无效通信,提升通信效率 [2]。2. 读取与写入操作的分离与协调为满足读取频繁而写入按需的需求,推荐将数据读取与控制写入完全解耦:数据读取:采用周期性轮询方式,使用MBUS_MSG指令依次读取各从站的状态数据(如I区、AI区或保持寄存器)。轮询顺序可根据设备在线状态动态调整。控制写入:将写操作独立处理,仅在有控制需求时(例如某个M标志位被置位)才触发对应的MBUS_MSG写指令。写入完成后应清除触发信号,防止重复发送。 为避免多个MBUS_MSG指令同时激活导致错误代码6(多主站冲突),必须确保同一时间只有一个MBUS_MSG指令处于激活状态 [3]。可通过以下方式实现:使用状态机(State Machine)控制指令执行顺序。利用前一条指令的Done或Error信号作为下一条指令的启动条件。对写入操作设置优先级标志,插入到轮询队列的适当位置。3. 写入频率控制与设备保护为防止频繁写入导致S7-200 SMART或被控设备报错,建议:在S7-1500程序中为每个写操作设置“写入使能锁存”机制,确保同一控制命令不会连续多次下发。增加写操作的时间间隔判断(如使用TON定时器),保证两次写入之间有足够的间隔。在HMI或上位系统中设置确认机制,避免误操作连续触发。4. S7-200 SMART作为Modbus RTU从站的配置要点确保每台S7-200 SMART正确配置为Modbus RTU从站:使用MBUS_INIT初始化通信口(Port 0或Port 1),设置正确的站地址(1–247)和波特率。使用MBUS_SLAVE指令启用从站功能,并分配足够的V存储区(至少781字节)[1]。注意:S7-200 SMART作为从站时不支持广播命令,所有写入需指定具体地址 [3]。5. 通信稳定性优化建议合理设置Modbus重试次数:可通过修改mModbusRetries变量减少主站重试次数,加快故障响应速度 [3]。使用屏蔽双绞线并正确接地,确保RS485网络的物理层稳定。若通信距离较长或节点较多,建议使用RS485中继器增强信号 [1]。参考资源S7-200 SMART Modbus RTU通信详细资料:https://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/020.htmlS7-200 SMART与调试助手进行Modbus RTU通信示例:https://www.ad.siemens.com.cn/download/materialaggregation_604.html#-604S7-200 SMART Modbus RTU通信常见问题:https://www.ad.siemens.com.cn/download/materialaggregation_603.html#-603以上方案基于西门子S7-1500与S7-200 SMART的标准通信能力设计,可有效实现灵活轮询与按需控制。实际应用中请根据现场设备响应情况微调轮询周期与超时参数。
目前项目S7-300PLC,4台6RA80调速器,profinet通讯。直流调速集成到S7300项目内。请教:1、其中一台直流调速偶发始终处于run up状态,判定硬件损坏,具体如何更换备件。2、如果备件版本号与现有不一致,如何刷版本?3、更换完后如何整定?
原文:“在设置PROFINET任务下,可以进行PROFINET报文的组态,对于不同的控制模式,其可以选择的报文类型不同,即选择驱动任务中组态了基本定位器控制功能,则不能选择报文类型7、9、110和111,反之亦然。”为什么不能选择报文111,在V-ASSISTANT软件中,在选择控制模式“基本定位器(EPOS)”后,设置PROFINET界面中,只能选择报文类型7、9、110、111。
现场有一台18.5kw的变频器,因为安全要求,会通过接触器断开变频器的进线电压,然后再次上电,会报F30003,请问大概是什么原因,谢谢
「年终技术工作笔记」输出参数无法初始化这几百文字不能算是工作笔记,也就是个随笔,昨晚整理代码,编译竟然提示“参数无法初始化”,编译出现警告,这不符合人情世故嘛。在西门子的软件编程平台TIA Portal中,一个FC/FB的接口下,有几种参数分区,如input,output,inout,static,temp,constant,每种分类的参数,在使用它们时,都有老生常谈的,一定的约束条件,如input只能读不能写,output最好是只写不读,inout要注意数据安全性的问题,static最好不要域外(在FB本体外)写操作,temp一定要先赋值再使用,另外不能用作边沿标志,不能跨扫描周期使用,constant倒是事儿少。这里主要说的是,对于output参数的只写不读,在实践中总是有违规的“漏网之鱼”,对某个output参数不自觉地进行了读写操作,而且还踩了类似temp参数的“先赋值,后使用”的红线,结果呢?规则是硬性的,违反了就有不好的结果,最轻的就是给你一个警告,如下图所示,程序在编译时给出警告提示,提示内容是“参数#sum无法初始化”,如果你是个不敏感的人,大可以对其置之不理,如果你不是的,那就要处理一下,如何处理,下面细说。编译出现警告的根源是,在对变量#sum进行首次赋值之前,就对其进行了读操作,而此时#sum的值是不确定的,这就是原因,解决办法通常有如下几种:1、 更改#sum的分类为inout2、在程序开始处先对#sum进行一次性初始化但是这样操作有个问题,就是FB每次被调用都会先初始化,那么最后#sum的值将会是1,不符合程序预期;那么我们可以只执行一次初始化操作,防止其值固定为1,这里借助了一个静态变量实施块内一次初始化,尽管下面还会提示警告,但是这是编译器静态分析的短处,当运行时,在读#sum时,已经对其提前赋值了。3、 借助static实现曲径通幽综合上面所有的应对方法,还是围绕着“先赋值,后读取”做文章,所以,对于output还是尽量的只写不读! 上面就是我先扔出的一块糙砖,坛内大佬云集,期待大佬们随手更优秀文章与大家见面!西家有活动,当然得捧场,所谓“落笔小功夫,用心大文章”,毕竟,态度才更重要嘛。
西门子普通变频器直流母线供电,这样可以使用吗?3相输入端不接线。现有设备有直流母排为一些驱动设备供电,新增加一个小功率普通变频器,连接3相输入距离太远,直连将普通变频器直流母线和现有供电母排连接是否可以呢?母线电压波动范围是多少呢?制动单元及制动电阻这时候要怎么考虑?整个母排设备统一设置吗?
G120XA控制90Kw(重载)永磁同步电机超过10Hz运行报警f7901 F30002,F7969(截图的F30002历史故障不用管是线路其他故障已解决)。电机是永磁同步电机,反电势EMF也计算输入过,电机额定频率11HZ,0-10HZ之间运行基本稳定,超过10HZ就报警,用的矢量不带编码器p1300=20,用静态优化能通过辨识,脱开电机负载做动态优化进行大概20s之后提示辨识失败,20s之前做电机滴动态辨识电机也不转,只有轻微的震动和叫声,现场有4台一摸一样的都是这情况
S7协议通信,结构体数据量刚大于200字节,发现同周期内的数据不能保证一致性,西门子有什么技术可以保证一致性吗?
在调试 S120 时,用 Starter 对一个 CU320-2PN 先执行了自动组态并上传到 CU 中,经过 LED 闪烁确认与实际的电机模块一致,然后把博途中的电机名称复制到 Starter 中。后发现此 CU 与博途 S7-1500 通讯不正常,现场工程师没有动接线,只是重新离线配置修改了拓扑后就可以通讯了。我看了下修改前后的拓扑,只是组件号改变了,其它没什么变化。我就很纳闷这是什么原因?这些组件号应该都是 Starter 自动配置时自动生成的,博途中的报文顺序和组件号还有关系吗?请各位赐教,谢谢了。
S7-200 SMART ST60CPU初使用 西门子plc近期产品日新月异的更替,一直心心念念的想熟悉一下S7-200smart V3.0版本的编程环境,软件在电脑购买那时就安装了V3.0,只是没有真正应用过,基于V3.0版本仍然与原V2.8版本之前的扩展模块匹配,刚好项目需要,于是采购了一根ST60的。我认识V3.0硬件是通过安装V3.0软件打开系统块开始认识的,共计2款4个型号,分别是ST40/60和SR40/60。 今天,拿到6ES7288 - 1ST60 - 0AA2这款cpu,打开纸盒包装看cpu,集成了2个扩展信号板位置,且原来集成的RS485口被移至cpu的右下角,对应的右上角集成了2个以太网口,连接24V电源上电,打开V3.0的软件,编辑一个简单的测试程序。一气呵成的下载,打开通讯设置窗口,选择以太网驱动,下载,咦,新模块也需要设置密码? 重新打开系统块,没有V2.8版本时的安全设置选项,V3.0安全设置选项已经被单独移出到项目树下,看来西门子的意图是加强了安全防护性能了,开篇就遇到这个情况,图示: 弹出的小窗口,只有一个选项,就是初始使用时的初始密码的使用,勾选后,再选择“登录”按钮,可以避开需要输入密码直接进入下载窗口。后来,看了看手册,官方的初始密码是:Changeme_123,注意密码需要区分大小写。如果知道密码输入正确的密码,如果不知道初始密码,勾选“使用初始密码”这个选项,都可以进入下载窗口。勾选使用初始密码后,点击“登录”按钮,软件弹出下载窗口,这个与之前V2.8以前的版本基本雷同,V3.0新增加了新的内容,图示:下载成功后,在线监控,图示:因为项目没有对新功能的测试要求,我没有再深入测试V3.0的其它新功能,如有新功能测试继续发贴,此。
硬件:plc ST20。一个屏。一个变频器。一个电度表。连接:plc通过Modbus RTU与变频器电度表连接。三者都是装在一个电柜内。没有别的主要电气了。屏用网线连plc。没有终端电阻。感觉线路很短,没加。需求:读变频器两个信息。一个信息两个字节。一个信息20几个字节。 读电度表两个信息。一个信息4个字节。一个信息40个字节。程序:自己常用的MB读写程序套路。自我感觉程序稳定,未明显发现存在BUG。可以暂时简单理解成上述4个信息固定轮训。ctrl设定超时1000毫秒。上述需求对应Q0.1到Q0.4四个状态灯。我把4个信息的轮训状态都输出到Q点。比如轮训到第一个信息Q0.1亮,轮训到第三个信息Q0.3亮。正常情况可以看见Q0.1到Q0.4以很快的速度循环流水灯闪烁。字节多的信息感觉灯更亮,字节少的信息对应的灯比较暗。一切都很正常。9600的波特率,还没尝试修改其他波特率。电度表最大就是9600 。目前现象:变频器两个灯一直都反应很灵敏。一闪而过。但是电度表的第一个灯Q0.3,偶然会亮很久,之后又可以继续轮训,MSG没有报错误码。Q0.4,是读电度表的40个字节的长信息,从来没有出现过卡住。刚才说的Q0.3亮很久,正确时间就是Ctrl设定的超时时间。这个很好证实,我把超时时间设定成5秒,那么就卡住5秒。设定成500毫秒,就卡住500毫秒。还有,它不是每次都会卡住。大概有……从连续5次都卡 到连续10次都不卡 的情况都有。(这个5次,10次不确定。因为眼睛看不过来)花絮:早期变频器运行时候有无序的卡顿,完全观察不出卡顿的规律。关掉变频器就好了。这样明显是干扰了。这个问题后期我已经暂时解决。即使没有杜绝,影响也不至于影响到面前我讨论的问题。现在无论开变频器关变频器都不出现干扰事件。都能明显看见Q0.3卡住的情况。电度表买了两个了。都一样。程序把读电度表的MSG改成面向变频器地址,其余什么都不变,Q0.3就没有卡住了。证明程序是没有问题的。大家说这个卡住的情况是什么问题?能分析出什么原因吗?我好像没招了。诸位有需要我补充的我可以继续说明。谢谢。
WinCC 7.4-8.1中用VBS读取一个无符号32位整数中的某一位会失效,为啥经历了这么多版本的迭代更新,这个BUG还没解决!!!!