北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8637406

S7-1200高速计数器(HSC)的组态与编程

这篇文章我们以一个实际例程来介绍S7-1200高速计数器(HSC)的组态和编程。

假设我们现场需要对流过管路的水的体积进行计量,管路中安装有体积流量计,它以脉冲的形式给PLC发送信号,项目中使用的PLC为1214C/DC/DC/DC。

cover.jpeg

首先来确定流量计与PLC之间的电气接线。考虑到脉冲的频率不超过100kHz,可以使用1214C的HSC1来测量(HSC的介绍可参考上一篇文章)。下图最左边一栏是HSC1的端子定义:

define.png

其中I0.0(DIa.0)是脉冲的输入通道,I0.1是信号方向的通道,I0.3是外部复位信号的通道。由于该信号使用内部输入,不需要方向和外部复位,故I0.1和I0.3可以不连接。传感器的接线示意图如下:

hsc_wiring.png

接下来进行硬件配置,在博途V13的项目管理器中,找到项目文件,双击"设备配置(Device configuration)",
device_config.png

在右侧的硬件配置窗口中,选中CPU模块,

device_cpu.png

在其属性中,点击"高速计数器(High speed counter)"-"HSC1",在其"通用(General)",属性中选中"使能高速计数器(Enable the high speed counter)";这样高速计数器HSC1的功能就激活了;

enable_hsc.png

接下来设置高速计数器的模式和工作方式:

hsc_mode.jpeg在"计数类型(Type of counting)"中有两种可选:计数(Counting)和频率测量(Frequency),这里选择"计数(Counting)";

在"Operating phase"中选择"单相(Single phase)";

在"计数方向依据(Counting direction is specified by)"中,由于没有外部方向的输入信号,所以选择"用户程序内部控制(User program-internal control)";

在"初始计数方向(Initial counting direction)"中选择"向上计数(Count up)";

接下来设置初始值和复位值:

initia_hsc.jpeg"Initial counter value"用来设置计数器的初始值;

"Initial reference value"用来设置计数器的最大值,计数到该数值后计数器将会复位;也可以勾选"使用外部输入进行复位(Use external reset value)"进行复位,这样的话需要在I0.3接外部复位信号;

接下来对地址进行配置,可以使用默认的地址:

address.jpeg

计数器的数值会保存到输入过程映像区的ID1000中,程序中通过读取ID1000的值就能获取脉冲的数,如果要直接访问计数器的物理地址,可以使用"ID1000:P"。

若此时将配置下载到CPU,高速计数器已经可以工作了。如果你需要在高速计数器复位时触发某个事件,可以在"事件配置(Event Configuration)"中勾选"当计数值等于参考值时触发中断(Generate interrrupt for counter value equals to reference)":

generate_interrupt.jpeg给事件定义一个名称,然后在"硬件中断(Hardware interrpt)"中打开添加硬件中断组织块对话框;

hardware_interrupt.jpeg

这样当计数器到达复位条件时,就会触发硬件中断,调用该中断组织块,执行其内部的程序。

高速计数器的硬件配置到这里就完成了,下面我们介绍一个指令"CTRL_HSC",使用该指令可以在程序中修改硬件配置中的参数。在博途V13的指令列表中,找到"工艺指令(Technology)"-"计数器(Counting)"-"CTRL_HSC",将该指令拖到程序块中;

hsc_instruct.png

该指令需要一个背景DB块,在添加的时候系统会提示。可以使用默认值,也可以自己命名,如下图;

hsc_db.png

添加完成后,指令在数据块中如下图:
hsc_inst2.png

其中参数"HSC"为高速计数器的编号,本例程使用的HSC1,所以写作"w#16#1";

"DIR"是使能外部方向信号,这里使用"False";

"CV"是使能新的计数器初始值,如果有需要,将该参数要设置成"True",然后在"NEW_CV"中输入你想设置的值,比如"L#5"。默认为"False";

"RV"是使能新的计数器参考值,,如果有需要,将该参数设置成"True",然后在"NEW_RV"中输入你想设置的值,比如"L#3000"。默认为"False";

"PERIOD"使能一个新的计数周期;

"BUSY"和"STATUS"为输出值,表示系统是否繁忙及当前的状态。

好了,关于S7-1200高速计数器的组态和编程我们就介绍到这里了。如果你对高速计数器的工作原理及硬件配置不清楚,可以参考上一篇文章:S7-1200硬件篇之高速计数器(HSC)。

扫描下面的二维码,关注“方正智芯”的原创文章,提供工业控制领域(PLC、单片机、通信)的技术和经验的分享,持续关注,持续进步

点击这里下载本文的PDF版本:

已经过安全软件检测无毒,请您放心下载。

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论