本文内容基于SoMachine v4.3版本编写,所用控制器型号:LMC058LF42,外接编码器型号:XCC-1406PR01K
LMC058控制器本体提供:
2 个嵌入式专用 I/O 模块(DM72F0 和 DM72F1),该模块具有:
5 路快速输入
2 路常规输入
2 路快速输出
如下图所示,在SoMachine中DM72F0&DM72F1可配置的高速计数和编码器类型如下:
专用功能分配标准及最大数量如下:
从配置类型来说,LMC058高速计数可以配置为:
Event_Latch
该功能可以配置为两种情况:
锁存(缺省):
锁存是一种可以分配给快速输入的功能,该功能用于记忆(或锁存)持续时间短于扫描周期的所有脉冲,如果某个脉冲短于一次扫描,控制器将锁存该脉冲,而该脉冲将在下一次扫描时更新,且该锁存机制只能识别上升沿,下降沿不能锁存,锁存效果如下图:
下面的时序图显示了锁存的效果:
简单的来说就是:锁存允许捕捉和记录持续时间短于控制器扫描时间的传入脉冲。当输入到达状态 1 时,此状态保持不变,直到 MAST 任务读取输入。
需要特别注意的是:锁存仅在MAST任务中可以被使用。
每个专用模块(DM72F0 或DM72F1)最多可以配置4路Event_latch(如下图所示)
事件:
事件检测可在跳变沿上启动事件任务。 事件任务”可由上升沿、下降沿或这两种输入(I0 到 I3)触发。
具体操作步骤如下:
配置DI点,如下图所示,配置I0为Event_Latch0,模式为事件,上升沿触发。
在应用程序树中新建一个TASK任务,类型选择“外部”,触发使用BLOCK0_I0。
配置完成后,将需要被事件触发的POU添加到Task任务下,当PLC检测到I0上升沿时,该POU被触发运行。
HSCSimple
HSCSimple就是单个输入计数器,配置成Simple类型可以支持两种类型的输入模式:
一次性(One-shot):在此模式下,A输入上每应用一次脉冲,计数器当前值寄存器就会(从用户定义的值)递减一次,直到计数器达到 0。(硬件配置如下图所示)
在配置好输入后,我们可以使用“HSCSimple_LMC058”功能块对其进行操作。
功能块引脚定义如下:
触发功能块后,可以看到输出管脚CurrentValue管脚的值会从配置中的预设值开始不断减小,直到0为止。
需要注意的是ACK_Modulo管脚可以复位计数值为初始值,但需要重新触发Enable和Sync。
2、模数回路(Modulo-loop):在此模式下,计数器从 0 计数到用户定义的模数值,然后返回到 0 并重新启动计数,周而复始,反复执行。(硬件配置如下图所示)
程序当中用到的功能块与上面相同。
另外假如需要在程序当中修改计数器的预设值的话可以使用“EXPERTSetParam”功能块。
功能块引脚定义如下:
其中Param参数管脚可以修改的参数具体如下:
这里我以修改HSCSimple0的模数值为例,将模数值改为1000。将“要写入的参数”改为“EXPERT_MODULO”,“参数值”改为1000。然后出发功能块即可。
写入完成后,Done管脚会置TRUE。
写入完成。
-
控制器
+关注
关注
112文章
16332浏览量
177800 -
嵌入式
+关注
关注
5082文章
19104浏览量
304782 -
计数器
+关注
关注
32文章
2256浏览量
94476
原文标题:LMC058嵌入式I/O高速计数器功能详解(上篇)
文章出处:【微信号:SE_AUT,微信公众号:自动化小天地】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论