使用通道:模拟量模块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