随笔分类 - PLC
摘要:我们就以星三角为例,演示仿真运行。。 假设你已完成状态机,保存路径选择如下: 点击 Models 标签,然后点击 Model Settings, 进入 Configuration Parameters 界面。 点击 Solve 标签, Stop time 选择 inf , 表示无限。Type 选择
阅读全文
摘要:四工位呼叫小车 最近闲来无事,看了几个自动化视频提高一下技术敏感度,偶然看到这个四工位呼叫小车视频,作者采用经验法,程序略显繁琐。项目示意图如下: 项目介绍: 站点1是原点位,此时站点1的行程开关I1.5点亮,当用户按下站点4的按钮I0.3时,小车向右正转,站点4的行程开关I1.0点亮,小车停止。当
阅读全文
摘要:过去一直认为,状态机表示SFC会不会是任务复杂化,这次简单实验了一下,感觉还可以。请看下面的控制。 在SFC中,A和B是一对并行分支,汇合后转移到C分支中,怎么了用状态机表示呢?这里我们在状态机里分别用A、B状态表示分支,它们的汇合点是状态FreeState。当它们都处于FreeState状态时,C
阅读全文
摘要:今天呢我们再次介绍两种方法,一种是移位步进法,另一种是脉冲步进法。 下面是移位步进法: 下一种是脉冲步进法: 我们比较以上两种方法,发现脉冲步进比较复杂,指令较多。。 另外这两种步进有一定缺陷,就是不能表示并行步,也不能表示跳转,只能是顺序前进。表达能力最优的是RS步进法,可读性最好的要数Move步
阅读全文
摘要:针对上次的分拣器,用LAD改写了。转换的方法请看前面的帖子。这里我们直接上程序。 这个程序包含2个主要的并行状态机,两个状态机之间是有关联的。通过相互的状态激活。 这类状态机转换成程序一般有下面几种写法: 一种是把所有程序写在一个块里,但分别用两个stepNumber,但这样势必导致函数块的功能太多
阅读全文
摘要:此次我们的任务是设计一个分捡器,控制难度逐渐加深,会用上我们以前的所有技术。任务参考《IEC 61131-3编程语言及应用基础》第281页,但我们使用了更好的设计方案。控制任务摘抄如下: 为分选不同大小的工件,可采用分选器。它从大的工件中选出小工件,将大的工件送到右侧,小工件送到左侧。从结构观点看,
阅读全文
摘要:PC在编码规范方面比PLC要好很多。既然它们都是编程语言,那么PC方面的规范是否可以用与PLC呢?答案是肯定的,但需要作取舍。下面规范中的大部分可以用于一般PLC,其中有些只是针对西门子博途,使用时需注意。 变量命名 目前PLC中的变量命名没有统一的规则,这方面我们可以参考PC编程,在PC的编程中有
阅读全文
摘要:这次我们编写一个变频器控制任务。我们选择标准报文2PZD。 这里我们简要讲一下状态字中的第二个字,返回的是频率的百分比,-100% 到 +100% 相对应的范围为-16384 到 +16384, 所以需要把它除以16384, 然后再乘以频率50,就是真实的频率。 CONVERTOR_PLC 是状态字
阅读全文
摘要:这次我们用博途来写上次的控制任务,发现还是有些不一样。 和AB比,还是有点复杂啊。
阅读全文
摘要:AB的程序设计和西门子有点PLC不大一样,在AB中没有RS指令,所以主要用move指令来作步进。今天我们就用Move指令写个AB的程序,和西门子比,有哪些不同。 控制任务 很简单的一个状态机。初始步为Step0,根据不同的条件分别转移到不同的步。 具体程序 下面是tag变量表: 下面定义了一个关于步
阅读全文
摘要:前面我们写了《PLC状态机编程第二篇-负载均衡》这篇博客,用的RS指令来表达各步状态, 今天呢我们用MOVE指令来表示各状态, 最后看看两种办法的优劣。任务还是描述的那个状态机。 程序比较简单, 直接上程序了。 这里声明了一个currentStep变量来存储当前状态, 用IDLE, PUMP_A等表
阅读全文
摘要:温度PID控制时, 有多个温度测量点, 但最终只有一个温度作为反馈值参与PID控制, 我们有时会采用平均值法, 计算所有温度的平均值来作为PID的反馈值. 但在某一路温度探头断线的情况下, 温度值为零, 这时平均值就会小很多. 像这种情况下中值法比较有效. 原理如下: 对于一组温度, 模拟量转换为数
阅读全文
摘要:经多位西门子工业论坛的大神建议, 程序最终如下: 下面是自定义类型: 简单理一下思路, 这次的程序和上次比, 改动较大. 新建了一个自定义数据类型, analogToDigit。其中,channelNo 是模拟量通道,analog是读取通道后存放的值,这个值是程序生成的,用户无需填写。 lowerE
阅读全文
摘要:重构这个词是PC编程中的术语,意思是当写第一遍程序时,因对程序逻辑不甚明白,程序逻辑有点乱,写完后重新理了一下思路,对程序的结构、变量命名等以更好的方式重新了一遍,这个过程叫重构。第二遍的程序逻辑清晰易懂。 和西门子论坛的几位版主讨论后,他们提供了很好的建议,我重构了这个模拟量程序,比以前更简单,更
阅读全文
摘要:博途的间接寻址和S7-300/400大不一样。博途中的间接寻址主要用peek/poke指令,peek/poke指令不能用于优化的数据块。优化数据块可以用数组类寻址。这次的控制任务是模拟类的批量处理,s7-300/400模拟量批量处理很繁琐。 控制任务 把数量不定的模拟量转换成工程量,然后保存到指定的
阅读全文
摘要:我们知道在高级语言中普遍使用泛型,那么在PLC中是否可以使用泛型呢?可以,但罗嗦。。 控制要求 求数组中的最大值,数值类型包括Real和Int,我们这里选择两种类型,控制代码量。 控制程序 一 array是传进来的数组,可以是Int或Real类型。但有大小限制,长度必须小于maxSize。后面我们会
阅读全文
摘要:还记得第一篇博客中,我们在状态机中手写上升沿来处理有别于传统的一键启停程序,那个手写的上升沿就是优化手段。stateflow状态机是带事件的,事件本身支持上升沿和下降沿等事件,在这里,如果我们选择用事件来作沿触发,会导致程序不可读,很复杂,所以我们手写上升沿,保证了程序的简洁。请看下图。 那么我们不
阅读全文
摘要:这篇比较简单了,我就直接上图了,不多废话。 一、选择求解器,一定要选择定步长的。 二、右击Chart状态机,出现图上菜单 三、左边红色的勾选择,选择右侧的菜单,然后点击Generate Code按钮,这个按钮被菜单覆盖了。 四、会在红色目录里出现optimize.scl文件 五、双击TIA Port
阅读全文
摘要:今天我们接着上次的控制任务,加入历史状态,这个任务会比较复杂,象这样的任务我们倾向于自动生成PLC程序,自己写容易出错。但为了演示,我们可以尝试一下。言归正传,下面是我们的控制任务。 控制任务 这次的任务是基于上次的,增加的一个急停按钮,当按下EMStop急停按钮后,设备马上停止,等排除故障后,希望
阅读全文
摘要:我们今天简要介绍RS指令在状态机中怎么处理的。有些设备按下停止按钮后,没有马上停止,而是到原点后才停止,那么这种情况在状态机中如何表示呢?我们以案例说明之,下面是我们的控制描述。 控制描述 小车从左位开始,从左向右行使,到达右位后停5秒,然后从右向左运行,到达左位后停3s,继续向右运行。当按下停止按
阅读全文

浙公网安备 33010602011771号