1、 1 欧姆龙 CP1H 模拟量编程的简单应用 中国工程物理研究院工学院 刘兵 2 本文的目的是为了介绍欧姆龙 CP1H 型机模拟量编程的一般过程。而对模拟量的高级编程不作说明 , 因为无论多么复杂的程序都是由简单的构成的。希望这篇文章对大家的 PLC 模拟量编程有所帮助。 在各种型号的 PLC 编程的书籍中 , 讲得最多的要算是开关量的编程了。什么是开关量编程 , 到目前为止还没有一个准确的定义。说通俗易懂点就是 , 给定一个或几个开关量 , 与之相对应的线包有或无输出。但是在自动控制领域里开关量编程 用得很少的 , 大多数都是模拟量的编程 , 如变频调速系统等。 下面结合自动供水系统讲模拟量
2、与开关量编程。如图 1 所示 ,S1,S2 为液面传感器 2,S3 为液位变送器。 A 为放水端 ,B 为进水端 ,YA 为进水电磁阀。 要求 : (1) 电路具有启动停止功能。 (2) 当液面低于 S2 时 , 电磁阀 YA 动作 向池中供水。 3 (3) 当液面高于 S1 时 , 电磁阀 YA 停止向池中供水。 (4) 当液面介于 S1 与 S2 之间时 , 电磁阀 YA 保持原态。 一、解法一 : 开关量编程 这个例子几乎在所有介绍 PLC 编程的书籍中都可以见到。是讲解 PLC 编程的一道经典例题。这道题并不难解 , 梯形图如图 2 所示 ,PLC 外部接线图如图 3 所示。 4 1.
3、 工作过程 (1) 当 SB1 被触发时 , 中间继电器 W0.01 得电自保 , 常开闭合。 (2) 此时如果水平面在液位传感器 S2 之下 ,S2 会产生一个触发信号 , 使电磁阀 YA 得电并自保 , 向池中供水。 (3) 当水平面超过 S1 时 ,S1 会产生一个触发信号 , 电磁阀 YA 停止供水。 (4) 若水平面在 S1 与 S2 之间时 , 电磁阀 YA 保持原态。 (5) 当 SB2 触发时 , 中间继电器 W0.01 失电 , 触点 W0.01 不再闭合 , 无论 S2 有无触发信号 , 电磁阀 YA 都不会工作。 2. 程序小结 上面的解法完全满足题目要求 , 但是在实际
4、当中却很少这样应用。它有5 两大缺点一是 S1 与 S2 的调试麻烦。二是当要改变池水容量时 , 必须调整 S1 与 S2 的位置。其中第二个缺点是它致命的缺点。 如果采用模拟量编程 , 在原 有功能不变的情况下轻松解决上述两大问题。但请注意 , 如果采用模拟量编程则不用液面传感器 S1 、 S2, 只需一个液位变送器 S3 。这里用的是 CYB31 系列一体式液位变送器 , 外观如图 4 。它将水体的压力转换成电信号 , 水越深压力越大 , 相应的电信号越大 , 反之电信号越小。 ( 电压信号为 15V) 二、解法 二 : 模拟量编程 模拟量编程的方框图如图 5 所示。 6 1. 工作原理
5、(1) 液位变送器将水压转换成为电压信号。 (2) 产生的电压信号经 PLC 的模拟量 200 通道输入 , 将电压信号转换成一个十六进制的数 X 。 (3) 将转换的数与参数 X1 和 X2 作比较。 ( 怎样设置参数见后文 ) (4) 如果转换的数 X 大于参数 X1, 电磁阀 YA 停止工作 ; 如果转换的数 X 小于 X2, 电磁阀 YA 工作。如果 X 介于 X1 和 X2 之间保持原态。 梯形图如图 6 所示 ,PLC 外部接线图如图 7 所示。 7 2. 软件设定 8 在联机编程之前需要对 PLC 进行设置 , 因为 CP1H 内置的模拟量输入是通过 CX-P 软件设置使用的。程
6、序中只需读取对应的通道 (CIO200 203) 即可。点击 CX-P 软件工作区的设置 , 在内置 DA/AD 选项中设置模拟量的使用和量程 , 然后在编程状态下传入 PLC 。具体设置方法如下。单击菜单栏 “ PLC ”选择 “编辑 (E) ”再选择 “设置 (S) ” , 弹出一个对话框 , 将它设置成图 8 所示。 设置成功过后再单击 “选项 (O) ”选择菜单栏 “传送到 PLC(P) ”。特别提示上述操作完成过后 , 要断电一次然后重新启动 , 否则所设置的不会生效。 3. 指令讲解 这段梯形图主要用到了两个指令 ,APR 和 ZCP 指令。 APR 是数值转换指令 , 在这里它的
7、作用是把液位变送器传过来的 电压信号转换成为一个十六进制的数 , 并存入寄存器 D100 中。图 6 中 D0 到 D4 的数据9 是用来设置 APR 参数的 , 具体设置方法见欧姆龙中文编程手册 , 这里不作过多的讲述。 ZCP 是区间比较指令 , 它对指定的一个数据或常数是否在指定的上限值和下限值之间进行无符号 BIN16 位的比较 , 将比较结果反映在状态标志。以图 6 中的程序为例 ,#C8 是 ZCP 指令的下限值 ,#708 是 ZCP 指令的上限值。 APR 转换过后的数据 D100 送入 ZCP 指令作比较。如果 D100 值小于 #C8, 那么触点 CF007 闭合 ,SET
8、 指令对中间继电器 W0.02 置位 , 电磁阀 YA 工作。如果 D100 值大于 #708, 那么触点 CF005 闭合 ,RSET 指令对中间继电器 W0.02 复位 , 电磁阀 YA 停止工作。如果 D100 介于 #C8 与 #708 之间 ,ZCP 指令无动作 , 则电磁阀 YA 保持原态。 4. 参数的设定 设置一个合适的参数是这个程序能否调试成功的关键。具体设置方法如下。 PLC 按图 7 接线 , 将液位变送器放入水池子底部 , 向池中加水 , 到一定深度 ( 如果低于这个深度系统就应该向池中供水 ), 停止加水 , 并记录下来此时寄存器 D100 的值 , 这便是 ZCP 指令的下限值。然后继续向水池加水 , 到我们希望的深度 ( 如果高于这个深度系统就应该停止向池中供水 ), 停止加水 , 也记录下此时寄存器 D100 的值 , 这便是 ZCP 指令的上限值。这样如要改变水池存水的容量只需改变相应的上限值就可以了 , 而不必像开关量编程那样要改动硬件。 10 至此整个编程结束 , 我们可以看出在实际中 , 模拟量编程运用更为广泛。 当然这篇文只简单地讲了模拟量编程的基础东西 , 实际运用中的程序比这个要复杂得多 , 而且所涉及到的指令更复杂。但是 , 只要我们能熟悉地掌握最基础的东西 , 就能编出高级实用的程序来。