西门子SIEMENS湖南省岳阳市一级代理商 西门子自动化系列PLC 西门子控制模块 6ES7313-6CG04-0AB0
以下是一个以西门子S7 - 300 PLC为例,用梯形图语言编写的实现中值滤波的程序示例。假设我们要对采集到的5个模拟量输入值进行中值滤波处理,这5个模拟量输入值分别存储在MW0、MW2、MW4、MW6和MW8中。 **程序思路**: 1. 首先使用比较和交换指令对这5个值进行排序,这里采用冒泡排序法的思路(虽然在实际应用中可能有更高效的排序算法,但冒泡排序便于理解和实现)。 2. 经过排序后,取中间的值(即第三个值,存储在MW4中)作为中值滤波后的结果。 **梯形图程序如下**: **一、第一轮比较与交换(MW0和MW2)** 1. **比较MW0和MW2**: - 在梯形图中,使用常开触点装载MW0的值(假设地址为MW0的存储单元的值),并将其与MW2的值(假设地址为MW2的存储单元的值)进行比较。这可以通过比较指令(如西门子PLC中的“>I”指令,用于比较两个整数的大小)来实现。如果MW0大于MW2,那么将MW0和MW2的值进行交换。 - 具体梯形图元素布置如下: - 常开触点:|--[MW0]--|(装载MW0的值) - 比较指令:|--[>I MW0 MW2]--|(比较MW0和MW2的大小) - 中间变量:使用一个中间存储位(如M0.0)来暂存比较结果。如果MW0大于MW2,那么|--[>I MW0 MW2]--|的输出将使M0.0置1。 - 交换逻辑:当M0.0为1时,执行交换操作。通过使用MOV指令实现交换,即先将MW2的值传送到另一个临时存储单元(如MW10),再将MW0的值传送到MW2,Zui后将MW10的值传送到MW0。 - MOV指令: - |--[M0.0]--|--[MOV MW2 MW10]--|(当M0.0为1时,将MW2的值传送到MW10) - |--[M0.0]--|--[MOV MW0 MW2]--|(当M0.0为1时,将MW0的值传送到MW2) - |--[M0.0]--|--[MOV MW10 MW0]--|(当M0.0为1时,将MW10的值传送到MW0) 2. **比较MW2和MW4**: - 同样的逻辑,使用常开触点装载MW2的值,并与MW4的值进行比较(使用“>I”指令)。如果MW2大于MW4,通过中间存储位(如M0.1)暂存结果,并在M0.1为1时进行交换操作。 - 梯形图布置类似上面,只是操作数变为MW2和MW4,中间存储位变为M0.1,交换操作涉及的临时存储单元可继续使用MW10(因为在不同的比较阶段不会冲突)。 3. **比较MW4和MW6**: - 按照相同方式,比较MW4和MW6(使用“>I”指令),通过中间存储位(如M0.2)暂存结果,在M0.2为1时进行交换操作。 4. **比较MW6和MW8**: - Zui后,比较MW6和MW8(使用“>I”指令),通过中间存储位(如M0.3)暂存结果,在M0.3为1时进行交换操作。 **二、第二轮比较与交换(重复第一轮,但少比较一次,因为第一轮已经将Zui大的值“浮”到了Zui后)** 1. **比较MW0和MW2**: - 再次按照第一轮中比较MW0和MW2的方式进行操作,只是这次如果MW0大于MW2,交换操作的中间存储位可以使用M0.4(与第一轮的中间存储位区分开),交换逻辑同样通过MOV指令实现。 2. **比较MW2和MW4**: - 同理,比较MW2和MW4,使用中间存储位M0.5暂存结果,在M0.5为1时进行交换操作。 3. **比较MW4和MW6**: - 比较MW4和MW6,使用中间存储位M0.6暂存结果,在M0.6为1时进行交换操作。 **三、第三轮比较与交换(重复第二轮,但又少比较一次)** 1. **比较MW0和MW2**: - 继续按照前面的方式比较MW0和MW2,使用中间存储位M0.7暂存结果,在M0.7为1时进行交换操作。 2. **比较MW2和MW4**: - 比较MW2和MW4,使用中间存储位M0.8暂存结果,在M0.8为1时进行交换操作。 **四、第四轮比较与交换(只比较MW0和MW2)** 1. **比较MW0和MW2**: - Zui后一次比较MW0和MW2,使用中间存储位M0.9暂存结果,在M0.9为1时进行交换操作。 **五、取中值作为滤波结果** 经过四轮比较与交换,这5个值已经按照从小到大的顺序排列好了。此时,中间的值(即MW4的值)就是我们要的中值滤波后的结果。可以将MW4的值传送到一个指定的存储单元(如MD10)作为Zui终的滤波结果。 - 梯形图布置如下: - 常开触点:|--[MW4]--|(装载MW4的值) - MOV指令:|--[MW4]--|--[MOV MW4 MD10]--|(将MW4的值传送到MD10) 这样,通过上述梯形图程序,就实现了对5个模拟量输入值的中值滤波处理,将排序后的中间值作为滤波后的结果存储在MD10中,可以根据实际情况在后续的控制逻辑中使用这个滤波后的结果。 请注意,上述程序示例是基于西门子S7 - 300 PLC的梯形图编程思路和常见指令编写的,不同品牌和型号的PLC可能会有不同的指令和编程方式,但基本的中值滤波实现原理是相似的。在实际应用中,还可以根据具体需求对程序进行优化,比如使用更高效的排序算法来替代冒泡排序法,以提高程序的运行效率。
联系方式
- 地址:中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
- 电话:15883763757
- 市场经理:占鑫
- 手机:18771899270
- 微信:gkplc2018
- QQ:1303685860
- Email:1303685860@qq.com