登录
首页 PLC论坛 欧姆龙OMRON
回帖 发帖
正文

主题:【话题】关于在运动控制中进行模拟量的高速采集问题(20240118)

点击:210 回复:4

PLC类型:欧姆龙CP1H-X;
使用通道:模拟量模块MAD11_输入通道0、脉冲输出0、高速计数器0;
使用设备:带模拟量输出的位移传感器1台,台达伺服电机1台,差分信号转集电极开路信号设备1台;
设备参数:MAD11模块转换时间2ms/点,位移传感器反应时间1.5ms,目前程序周期时间5-8ms,中断任务处理时间0.2ms
需求:    在电机连续运行过程中,使用位移传感器检测键盘字键的高低(将位移传感器装在伺服丝杠模组上,在伺服电机的连续运行过程中,每到达预先设定的位置时(通过高速计数器0判断是否到达设定位置),就执行一次高速计数器中断程序进行模拟量当前值的读取和保存(暂时是取24个位置的模拟量信息读取,相邻两个位置之间的时间大于扫描周期)
控制流程:使用脉冲输出0控制台达伺服电机运行,将台达伺服电机反馈的编码器AB相差分信号通过差分转集电极设备接入高速计数器0,建立高速计数器中断程序(通过CTBL指令登录目标一致值比较表)
实际现象:为什么电机连续运行中通过模拟量读取的值都是在设定的位置之前位置的值?可能不好理解,我举个例子,电机运行轨迹为“A>B>C>D>E”,当电机连续运行至C点时,通过中断程序将模拟量当前值读取至寄存器D7000,然后通过手动定位使电机前往C点然后停止电机运行,此时读取的值往往和我在连续运行时读取到的值D7000不一样,D7000存储的值实际上是在C位置前面一点的位置(即B>C中间某个位置,速度越快,这个点离B越近,C越远)的模拟量值;
个人分析:因为存在一个”位移传感器DA转换时间+MAD11模块AD转换的时间”,所以在电机连续运行至预先设定的点位时,通过高速计数中断程序读取到的值是不可能就是当前位置的实际值的,因为存在DA+AD的转换时间,所以在电机经过某个点位时,这个点位的模拟量实际值并未转换完成,此时读取到的值为MAD11模块通道保存的前一个转换完成的模拟量值,不知道这种猜想是否正确,请各位大佬指点,感激不尽!
问题点:1. 模拟量转换受到扫描周期的影响吗?是每个周期进行1次模拟量转换(扫描周期时间+2ms),还是独立于程序任务单独进行转换(以2ms的间隔时间进行不断的AD转换)
       2.即使电机以同一运行速度进行多次采集时,这几组采集的模拟量数据都存在较大差异,这是为什么?
       3.如果PLC无法进行高速模拟量的采集?各位前辈大佬是否有其他方式进行高速运行过程中的模拟量采集?我看了下有什么NI数据采集卡之类的,这种数据采集卡是否需要自己进行高级语言编程之类的?
小弟初次接触模拟量,不太熟悉这块,还请各位前辈大佬能不吝赐教,感激不尽!
最后修改:2024/1/19 9:57:51
24-01-18 11:02
问题点:1. 模拟量转换受到扫描周期的影响吗?是每个周期进行1次模拟量转换(扫描周期时间+2ms),还是独立于程序任务单独进行转换(以2ms的间隔时间进行不断的AD转换)
回答:肯定受扫描周期影响,毕竟扫描后再进行输入输出更新的,2MS是CPU发出读取指令到返回数据的时间,而不会是间隔2MS读取。
2.即使电机以同一运行速度进行多次采集时,这几组采集的模拟量数据都存在较大差异,这是为什么?
回答:因为扫描周期存在差异。
3.如果PLC无法进行高速模拟量的采集?各位前辈大佬是否有其他方式进行高速运行过程中的模拟量采集?我看了下有什么NI数据采集卡之类的,这种数据采集卡是否需要自己进行高级语言编程之类的?
回答:你的这款PLC无法高速模拟量的采集,并不是PLC不能进行,不过可以完成任务的恐怕你接受不了价格。NI的采集卡不编程你如何看到数据呢,当然NI基于图形化编程方式,就是现在小学文化就能编程的乐高,会乐高么也会NI了。
Good Luck~
24-01-18 13:41
非常感谢大大的回复!但是有个疑问是,如果是大大你说的模拟量转换受扫描周期影响,那我在每个点位读取的模拟量值反到接近该点位的真实值,因为我的模拟量读取是在高速计数器中断任务内进行的 mov 2 @D6000 ;+L D6000 &2 D6000 ,而模拟量转换只在中断任务内执行mov 2 @D6000指令时才进行模数转换的话,那么读取到的值就应该是该点位的值;而且我查看了下中断任务的处理时间为0.2ms,而现在电机运行在任意两个点位之间的时间都会大于扫描周期+转换时间。刚问了下欧姆龙人工客服,客服反馈说模拟量转换不受扫描周期影响,有点懵。程序我附在下面了
最后修改:2024/1/18 16:12:39
24-01-18 16:07
附件:字键高低检测验证项目.zip
[本地下载]
24-01-18 16:12

引用 苏玉锋 在 2024/1/18 16:07:45 发言【内容省略】

我必须纠正一下我前面的说法:2MS可以说是模拟量的采样时间,这个时间并不是说采样后你CPU就能收到了,你CPU从模拟量模块那里取值会有一个输入延迟时间,因此,采集到一个模拟量的总时间就是  采样时间+扫描周期。
Good Luck~
24-01-18 16:41

工控新闻

更多新闻资讯