首页 理论教育 如何以记录为单位存储数据?-硫化机温度监测模式详解

如何以记录为单位存储数据?-硫化机温度监测模式详解

时间:2023-06-16 理论教育 版权反馈
【摘要】:再如,还是以上讲的硫化机的温度监测,也是按记录进行存储的。每个记录为5个字。当数据满后,又回到起点,用新的记录取代旧的记录,继续存储。如有不同对象的数据记录,可1个对象存储在1个存储区。“时间设定”是1组数,按要存储的时段划分。然后把它与“时段1”等进行比较,如相等,则进行记录存储。一旦超限,即这里的LR14.00或LR14.01ON,则都会进行数据存储操作。图6-30 固定地址存储4.固定地址存储以上两例都是非固定地址存储。

如何以记录为单位存储数据?-硫化机温度监测模式详解

1.记录

记录是指一组有关联的数据。记录要有关键字(或多字),以区分不同记录。

如电量采集数据,所存的记录就是一组数,共4个字。第1个字,存年月;第2个字,存日及时段;第3、4个字,存电量累计值(用双字长)。每天分7个时段定时存储,每天7个记录。

再如以上讲的(图6-2)硫化机合模、开模,所存的记录就是1组数,共4个字。第1个字,存对应的硫化机号(3位数)及开(用A表示)或合(用B表示)模标志;第2个字,存年月;第3个字,存日时;第4个字,存分秒。只要开或合模一次,即被监测的数据有了变化,则存储1个记录。但由于硫化机工作时间是有规律的,大体每小时,开合模1次。所以,它每天的存储长度可预计。

再如,还是以上讲的(图6-2)硫化机的温度监测,也是按记录进行存储的。每个记录为5个字。第1个字,存对应的硫化机号;第2个字,存年月;第3个字,存日时;第4个字,存分秒;第5个字,存储当时的温度值。它也是变化存储。但只是出现超温时才存储。但什么时候超温,则是随机的,所以,它每天的存储长度不好预计。

数据存储的记录除了定长的(固定格式),也有非定长的(非固定格式)。可按实际情况组织。后者,可节省存储空间,但程序的算法要复杂些。

组织成记录后怎么存储?存储区的地址怎么分配?方法也很多。可以是地址不固定,当数据存储时,按数据区地址升幂(或降幂)顺序依此存储。当数据满后,又回到起点,用新的记录取代旧的记录,继续存储。也可以是固定地址的,什么时候、存储在什么地址是固定的。但多数用的是地址不固定的。

什么时候存储可按时间设定,每天有固定的存储时间,这叫定时存储。也可为事件存储,当发生所定义的事件时,才存储。

数据存储方法一般用间接地址,即指针访问。这样的程序较简练。也可用在数据采集程序中用过的字移位,如图6-8、图6-10所示。只是存储区大,执行这样的移位指令,执行时间可能很长。

如有不同对象的数据记录,可1个对象存储在1个存储区。也可多对象混合存储在1个存储区。

2.定时存储

分时段记下监测量的当时值,有时还要记下当时的时间。图6-27所示为定时存储例子。

978-7-111-56641-0-Chapter07-28.jpg

图6-27 定时变地址存储

图6-27a为欧姆龙PLC程序。从图知,它先把“当前时分”与“时间设定”进行表比较。“当前时分”是从PLC时钟中读出,随时间而变。“时间设定”是1组数,按要存储的时段划分。如700代表7点0分。通道“时段”中的相应位是ON,还是OFF,与比较的结果有关。如“时间设定”的第1个数为700,而“当前时分”又正好7点0分,则“时段”通道的“时段1”位ON。

当“时段1”“时段2”“时段3”等ON时,将把“当前日时”等数据,存入指针指向的地址。存1个数,修改1次指针(地址加1)。可见,它是定时,但变地址存储。

图6-27b为西门子PLC程序。它先读PLC的实时时钟,按READ_RTC指令使用的操作数VB10知,当前时值存于VB13字节中,而且是BCD码。然后把它与“时段1”等(也应是BCD码)进行比较,如相等,则进行记录存储。把“当前日时”等数据,存入指针指向的地址。存1个数,修改1次指针。可见,它是定时,但变地址存储。

图6-27c为三菱PLC程序。从图知,它先把“当前年月”“日时”及“分秒”分别存于K4M60、K4M40及K4M20中。然后进行时值(D8015)与“时段1”等进行表比较。如相等,则进行记录存储。把“当前年月、日时”等数据,存入D0V0的地址。存1个数,修改1次变址器V0。可见,它是定时,但变地址存储。

在上述程序的基础上,还要有进行指针控制的程序,以确保只能在指定的数据区中存储记录。图6-28所示为这个指针控制程序。

978-7-111-56641-0-Chapter07-29.jpg

图6-28 指针控制程序

图6-28a为欧姆龙PLC程序。它始终进行“指针”与“存区起始地址”及“存区结束地址”比较。只要指针不在此区间,则用“存区起始地址”赋值给“指针”,使指针复原。对指针的这个控制,可确保数据始终在存储区中,周而复始地存储。

图6-28b为西门子PLC程序。它先根据“初始地址”及“结束地址”计算“初始指针”及“结束指针”。然后也是通过比较控制“指针”,使其始终处在“初始指针”与“结束指针”之间。

图6-28c为三菱PLC程序。它用比较控制变址器V0,使其始终处于“起始地址”与“结束地址”之间。这即可确保所存储的记录始终在指定的D区中。

可知,执行了上述程序,只要PLC的实时时钟与时间段处的设定值相等,则先是下标加1,接着计算“年月”字的值,并向存数的数组存储。接着,下标再加1,再计算“日时”字的值,并向存数的数组存储。最后,下标再加1,并向存数的数组存储模拟量输入值。同时判断数组下标是否越界,如果越界,则返回初始值。

3.事件存储

发生某个事件,如监测量超限、监测量变化(对开关量),或变化超过某范围(对模拟量),就进行存储。存储时,不仅记下监测量的当时值,还要记下当时的时间。(www.xing528.com)

图6-29所示为超限存储梯形图程序。但该图未把全部程序画出。

978-7-111-56641-0-Chapter07-30.jpg

图6-29 超限存储

图6-29a是欧姆龙PLC程序。该程序用于图6-2介绍的轮胎硫化机温度超限记录。从图知,如“一号合模”ON,即一号机工作,则不断地进行“温度值”与“温度上限”及“温度下限”比较。一旦超限,即这里的LR14.00或LR14.01ON,则都会进行数据存储操作。这时,先是把“当前年月”存入“指针”指向的地址,后修改指针。接着存“当前日时”…以下存储在图中未画出。当然指针控制程序也是绝对需要的。这里也未画出。

图6-29b为西门子PLC程序,图6-29c为三菱PLC程序。也都是用于当超温与欠温事件发生时存储记录的。

可知,执行了上述程序,只要PLC的模拟量输入值超限,则先是计算“月日”字的值,并向存数的数组(其第2下标为1)存储。接着,再计算“时分”字的值,并向存数的数组(其第2下标为2)存储。再接着,向存数的数组(其第2下标为3)存储模拟量输入值。最后是,数组第1下标加1,并判断数组下标是否越界,如越界在节7使其返回初始值。

978-7-111-56641-0-Chapter07-31.jpg

图6-30 固定地址存储

4.固定地址存储

以上两例都是非固定地址存储。特点是“指针”随存储修改,存储区可很大。而固定地址存储的特点是“指针”用存储事件赋值。发生什么事件,就有什么事件的“指针”值,因而,该事件的数据存的地址也就固定了。图6-30所示为固定地址存储的梯形图程序。该程序是每“整5min”存储一次数据。存储地址与存储的时刻有关,是固定的。

图6-30a为欧姆龙PLC程序。从图知,它先把当前实时时钟的分值除以5。其商存于HR0中,余数存于HR1中。接着,判断HR1是否等于0。如相等,即为“整5min”,则LR11.00ON。进而,启动数据存储。但在存储数据前,先根据“当前时分”计算指针值,然后,再按“指针”指向的地址存储“存储数据”。所有的计算与存储指令,都是微分执行的。目的是确保是在进入“整5min”0s时,存数据。

从程序计算情况可知,当时间从0点0分~23点55分之间变化时,“指针”的值将在0~287之间变化。即“存储数据”将存储在DM0~DM287之间的数据区中,而且,不同的存储时间,有自身的固定DM地址。

图6-30b为三菱PLC程序。从图知,它先把当前实时时钟的分值(D8014)除以5。其商存于D1000中,余数存于D1001中。接着,判断D1001是否等于0。如相等,即为“整5min”。进而,启动数据存储。但在存储数据前,先根据“当前时分”计算指针值,然后,再按“指针”指向的地址存储“存储数据”。所有的计算与存储指令,都是微分执行的。目的是确保是在进入“整5min”0s时,存数据。

从程序计算情况可知,当时间从0点0分~23点55分之间变化时,“指针”的值将在0~287之间变化。即“存储数据”将存储在D0~D287之间的数据区中,而且,不同的存储时间,有自身的固定D区地址。

图6-30c为西门子PLC程序。从图知,它先读PLC的实时时钟,按READ_RTC指令使用的操作数VB10知,当前分值存于VB14字节中,而且是BCD码。所以,要转换为字,并译成十六进制码,然后进行带余数的除5运算。本例余数存于VW30中,商存于VW32中。接着,判断VW30等于0否?如相等,即为“整5min”。进而,启动数据存储。但在存储数据前,先根据“当前时分”计算指针值,然后,再按“指针”指向的地址存储“存储数据”。所有的计算与存储指令,都是微分执行的。目的是确保是在进入“整5min”0s时,存数据。

从程序计算情况可知,当时间从0点0分~23点55分之间变化时,“指针”的值将在0~574之间变化。即“存储数据”将存储在VW0~VWD574之间的数据区中,而且,不同的存储时间,有自身的固定D区地址。

图6-30d所示为和利时LM机程序。程序所用变量声明如下:

978-7-111-56641-0-Chapter07-32.jpg

图6-30d中:节1为启动模拟量输入功能块;节2为启动读取PLC实时时钟功能块;节3为对当时的时间的分值,求“模5”的运算,如果结果为0,即当时时间为0min、5min、10min……,则“pCJ”ON;节4、5,如果“pCJ”ON,则生成脉冲信号“ppCJ”;节6,在脉冲“pCJ”ON的周期,进行地址计算,并根据计算结果指向的地址,存储模拟量输入数据。

可知,执行了上述程序,只要PLC当时时间为0min、5min、10min、……,则先是根据当时的时分,计算数组下标。这里是“小时”值乘12,再与当时的“分”值除5后相加。并以这个计算结果值作为下标值,用于数据存储。

从程序计算情况可知,当时间从0点0分~23点55分之间变化时,“指针”的值将在0~287之间变化。即“存储数据”将在cunshu[0]~cunshu[287]之间的数据区中,而且,不同的存储时间,有自身的固定下标值。

固定地址存储时,时间值可以不存。从地址即可知道它是什么时间的“存储数据”。也很节省存储空间。

5.多对象存储

非固定地址存储,可存储多个对象。如图6-2轮胎硫化机实时记录,用的就是这种存储。它把各个轮胎硫化机的数据,都存储在一个4K字的存储区中。用统一的存储指针存储。但不同的轮胎硫化机,有不同的关键字,用关键字区分它们的记录。

多对象存储把存储区连成一片,较节省存储空间。而且,上位机读此数据时,也简单,发一个读命令,等着接收与应答即可。上位机读取数据后,可按标志的不同,把数据分开,并进行处理及存储。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈