这里用大连理工大学信息工程研究所研制的DUT-3000作为一个实例,来介绍这种数据采集方法。DUT-3000是8路温度采集、控制及传送装置。它的温度数据可用串口通过通信的方法传给PLC。也可用脉冲选通的方法,通过4个数据输入点及一个脉冲选通点,按数位(DIGIT)逐一送给PLC。DUT-3000有8组温度数据,每组4个数位,共32个数位。以下介绍后一种方法。系统布局如图5-33所示。
从图5-33可知,CPM2A的1通道的00~03用作数位输入点。选通信号(STB)输入点用0通道的00点。
DUT-3000工作时,STB每隔若干毫秒发一次选通脉冲。每发一次脉冲即依次把32个数位逐个通过它的D0~D3口,送给CPM2A的1.00~1.03输入端。而每发送完这32位,停止38个时段。之后,又开始新的过程,如图5-34所示。
图5-33 系统布局
图5-34 信号传送过程
为了采集数据,得有相应的PLC程序。图5-35~图5-37即为这个程序。图5-35为初始化程序。目的是设定外中断、定时中断及工作参数初始赋值。外中断用于选通脉冲输入点,只要出现选通脉冲,即调子程序0。定时中断设定时,每一定时间间隔调子程序23。工作参数初始赋值是把0赋值给BM110及把2赋值给DM112。
图5-36为数据采集子程序。只要出现选通脉冲信号,则采集一个数位。
图5-35 初始化程序
图5-36 数据采集子程序
从图5-36可知,执行一次本子程序,先是DM113加1。再是,第1次执行时,把1通道的0数位,即含有00~03的值,送DM111的0数位(因此时DM112为0)。接着把DM112加100。再接着进行比较,看DM112是否不小于402。这时是小,故跳出子程序。(www.daowen.com)
第二次执行,把1通道的0数位,即含有00~03的值,送DM111的数位1(因此时DM112为102)。接着把DM112加100。再接着进行比较,看DM112是否不小于402。这时还是小,故跳出子程序。
第三次执行,把1通道的0数位,即含有00~03的值,送DM111的数位2(因此时DM112为202)。接着把DM112加100。再接着进行比较,看DM112是否不小于402。这时还是小,故跳出子程序。
第四次执行,把1通道的0数位,即含有00~03的值,送DM111的数位3(因此时DM112为302)。接着把DM112加100。再接着进行比较,看DM112是否不小于402。这时不小,故子程序往下执行。注意,这时DM111已把4数位的数据全部采集到了。
第1次执行这后一段子程序时,先是DM112恢复为初始值,接着把DM111的值传给DM120(这里用了偏移传送,第1次执行,DM110值为0)。传后,DM110加1。再比较,看DM110是否不小于8,这时不小。则退出子程序。
接着,由于DM112已是初始值,故又重复上述四次执行过程。当DM112不小于402时,第2次执行这后一段子程序时,又先是DM112恢复为初始值,接着把DM111的值传给DM121(这时DM110值为1)。传后,DM110加1。再比较,看DM110是否不小于8,这时还是不小。则退出子程序。
……
直到第8次执行这后一段子程序时,先是DM112恢复为初始值,接着把DM111的值传给DM127(这里用了偏移传送,第1次执行,DM110值为7)。传后,DM110加1。再比较,看DM110是否小于8,这时不小,把0赋值给DM110,使其恢复为初始化值。子程序数据全部复原。又可进行新一轮的采集。
图5-37为同步处理程序。从上介绍知,这里的时序关系很重要。一旦时序出错,所有数据将“张冠李戴”,不能使用。为避免出现此情况,特用了同步处理程序。
从图5-37可知,它是定时中断子程序。每隔一定时间执行一次。执行时先比较DM113及DM114,看是否相等?相等,则使DM110、DM112初始化。不等,则把DM113的值传给DM114。从图5-35信号传送过程知道,这里数据传送是有停顿的。目的之一也是为了同步处理。从图5-37可知,每次调子程序0时,DM113的值总是加1,是变化的。而不调时,即传送停顿时,它的值不变。此程序正好利用这个不变,使DM110、DM112初始化。显然,DM110、DM112初始化正确,也就确保了这个同步了。
图5-37 同步处理程序
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。