发明内容
本发明目的在于,提供一种传感器数据处理系统,能够快速准确地存储目标传感器数据。
根据本发明第一方面,提供了一种传感器数据处理系统,包括上位机、至少一个PLC、至少一个传感器、地址映射表、处理器和存储有计算机程序的存储器,所述上位机与至少一个PLC通信连接,所述PLC连接至少一个设备,每一设备连接至少一个传感器;每一设备在所连接的PLC中设置有对应的数据存储区,所述数据存储区包括第一数据位、第二数据位和至少一个传感器数据位,每一第一数据位、第二数据位、传感器数据位分别对应一个PLC地址;所述第一数据位设置为0时,表示所述数据存储区对应的传感器数据未采集完成;所述第一数据位设置为1时,表示对应的传感器数据采集完成;所述第二数据位设置为0时,表示对应的传感器数据未在上位机中存储完成,所述第二数据位设置为1时,表示设备的传感器数据在上位机中存储完成;所述映射表用于存储设备id和对应的数据存储区域所对应的PLC地址;
当所述处理器执行所述计算机程序时,实现以下步骤:
步骤S1、获取目标设备id,将目标设备id所连接的PLC与所述上位机建立通信连接,目标设备id所连接的传感器为目标传感器;
步骤S2、所述PLC获取目标传感器所采集的传感器数据,并存储在对应的传感器数据位,当目标设备id对应的数据存储区中所有传感器数据存储位均存储对应数据时,将对应的第一数据位设置为1,同时锁住所述目标设备;
步骤S3、所述上位机轮询所有目标设备的第一数据位,并获取第一数据位为1的目标设备的数据存储区域中的所有传感器数据位上的数据作为目标数据,并将所述目标数据存储至所述上位机预设的数据库中;
步骤S4、所述上位机监测到所述目标设备的目标数据在所述数据库中存储完成后,将目标设备对应的第二数据位变成1,所述PLC将对应的目标设备解锁,执行下一传感器数据采集操作。
本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提供的一种传感器数据处理系统可达到相当的技术进步性及实用性,并具有产业上的广泛利用价值,其至少具有下列优点:
本发明能够通过设置PLC和上位机的数据交互过程,快速准确地将目标传感器数据存储至上位机数据库中,提高了传感器数据处理的效率和准确性。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种传感器数据处理系统的具体实施方式及其功效,详细说明如后。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
本发明实施例提供了一种传感器数据处理系统,如图1所示,包括上位机、至少一个PLC、至少一个传感器、地址映射表、处理器和存储有计算机程序的存储器。所述上位机与至少一个PLC通信连接,所述PLC连接至少一个设备,每一设备连接至少一个传感器,每一设备在所连接的PLC中设置有对应的数据存储区,所述数据存储区包括第一数据位、第二数据位和至少一个传感器数据位,每一第一数据位、第二数据位、传感器数据位分别对应一个PLC地址。所述第一数据位设置为0时,表示所述数据存储区对应的传感器数据未采集完成;所述第一数据位设置为1时,表示对应的传感器数据采集完成。所述第二数据位设置为0时,表示对应的传感器数据未在上位机中存储完成,所述第二数据位设置为1时,表示设备的传感器数据在上位机中存储完成;所述映射表用于存储设备id和对应的数据存储区域所对应的PLC地址。作为示例,传感器具体可以包括设置于拧紧枪上的扭矩传感器和角度传感器,其中,扭矩传感器用于采集拧紧扭矩数据,所述角度传感器用于采集拧紧角度数据。传感器具体还可包括设置在加注机上的加注量传感器、时间传感器、真空压力传感器等,加注量传感器用于采集加注机的加注量,时间传感器用于采集加注机的加注时间,真空压力传感器用于采集加注机的真空压力。需要说明的是,PLC连接可以连接多个不同的传感器,不同传感器产生的传感器数据是并发的。需要说明的是,地址映射表、处理器和存储器可以直接设置与一个服务器中,也可直接设置于上位机中,上位机具体可以为工控机。当所述处理器执行所述计算机程序时,实现以下步骤:
步骤S1、获取目标设备id,将目标设备id所连接的PLC与所述上位机建立通信连接,目标设备id所连接的传感器为目标传感器;
其中,目标设备id根据生产线的大小来具体设定,取值区间可设置在[1,160],例如在车辆总装线的应用场景下,目标设备id数量可以具体可以设置为150个。
步骤S2、所述PLC获取目标传感器所采集的传感器数据,并存储在对应的传感器数据位,当目标设备id对应的数据存储区中所有传感器数据存储位均存储对应数据时,将对应的第一数据位设置为1,同时锁住所述目标设备;
其中,以目标设备为拧紧枪为例,拧紧枪所连接的传感器包括扭矩传感器和角度传感器,设备id对应的数据存储区域的传感器数据位包括拧紧扭矩数据位和拧紧角度数据位。拧紧枪执行拧紧操作过程中,扭矩传感器和角度传感器分别采集对应的传感器数据,拧紧枪所连接的PLC从分别从扭矩传感器和角度传感器中采集对应的传感器数据,并存储至数据存储区域。
步骤S3、所述上位机轮询所有目标设备的第一数据位,并获取第一数据位为1的目标设备的数据存储区域中的所有传感器数据位上的数据作为目标数据,并将所述目标数据存储至所述上位机预设的数据库中;
步骤S4、所述上位机监测到所述目标设备的目标数据在所述数据库中存储完成后,将目标设备对应的第二数据位变成1,所述PLC将对应的目标设备解锁,执行下一传感器数据采集操作。
本发明实施例能够通过设置PLC和上位机的数据交互过程,将每一设备当前的目标数据存储完成后,再控制启动设备开始下一轮数据采集操作,避免数据上传出现重叠,从而提升传感器数据采集的准确性。本发明所述系统快速准确地将目标传感器数据存储至上位机数据库中,提高了传感器数据处理的效率和准确性。
作为一种实施例,如图2所示,所述上位机包括依次连接的中间件、第一线程区、FIFO队列、第二线程区,所述第一线程区用于动态生成数据缓冲线程,所述第二线程区中设置有至少一个数据存储线程,所述步骤S1中,将所连接的PLC与所述上位机建立通信连接,目标设备id所连接的传感器为目标传感器,所述步骤S1包括:
步骤S11、将所述上位机通过所述中间件与目标设备所连接的PLC建立通信连接;
步骤S12、将所述第二线程区与所述数据库建立连接。
基于图2所示的系统结构,所述步骤S3具体可包括:
步骤S31、所述上位机轮询所有目标设备id的第一数据位,当发现第m目标设备id的第一数据位为1,m=1,2,3…,所述上位机通过所述中间件向第m目标设备id所连接的PLC发送第m目标数据获取请求;
可以理解的是,所述第m目标设备id指的是所有目标设备id中的其中一个,m的最大值为目标设备id数量总和。
步骤S32、所述上位机将从所述PLC获取的第m目标数据存入所述中间件,所述中间件基于所述第m目标数据在所述第一线程区创建对应的第m数据缓冲线程;
可以理解的是,基于每一第m目标数据,均在第一线程区创建对应的第m数据缓冲线程,且按照创建时间先后顺序排列,因此,执行过程中,第一线程区中通常包括多个数据缓冲线程。
步骤S32、所述第一线程区中的所有数据缓冲线程按照生成的先后顺序依次将对应的目标数据写入所述FIFO队列,第m目标数据写入完成后,删除对应的第m数据缓冲线程;
步骤S33、所述数据存储线程监测所述FIFO队列是否为空,若不为空,则执行步骤S34;
步骤S34、所述数据存储线程获取当前FIFO队列中的最先存入的第n目标数据,n=1,2,3…,并将所述第n目标数据存入所述数据库中,然后将所述第n目标数据从所述FIFO队列中删除,并返回步骤S33。
由此可知,第一线程区的数据缓冲线程是顺序执行的,一个数据缓冲线程执行完后就删除掉,第二线程区的数据存储线程是循环执行的。在所述步骤S32-步骤S34中,同一时间内只能由一个数据缓冲线程或一个数据存储线程对FIFO队列执行操作,执行完毕后,再释放FIFO队列,由下一数据缓冲线程或一个数据存储线程对FIFO队列执行操作,从而保证传感器数据存入FIFO队列,获取FIFO队列取出的精确性。具体的,当第m数据缓冲线程在所述FIFO队列写入数据时或所述数据存储线程从所述FIFO队列读取第n目标数据过程中,所述FIFO队列锁定,当数据写入完成或数据读取完成时,从所述FIFO队列释放,执行下一第m数据缓冲线程在所述FIFO队列写入数据操做或所述数据存储线程从所述FIFO队列读取第n目标数据操做。
本发明实施例所述系统通过第一线程区、FIFO队列、第二线程区形成了目标数据的缓冲区,既能保证目标数据准确快速地存储至数据库中。且当PLC将目标数据上传中间件后,即便此时上位机出现故障或者断开与上位机的连接,也不会影响已发送的目标数据的存储,程序简单且能保证程序更加稳定。如果,在上位机想PLC 发出目标数据获取指令后,PLC尚未将目标数据发送给中间件时,则可能出现了网络故障或PLC故障,此时可加入对应的容错机制,具体的,作为一种实施例,所述步骤S32中,若所述上位机监测到从所述PLC获取的第m目标数据存入所述中间件的过程执行失败,则还包括:
步骤S321、所述上位机间每隔预设的第一时间延时重新通过所述中间件向第m目标设备id所连接的PLC发送第m目标数据获取请求,直至监测到从所述PLC获取的第m目标数据存入所述中间件的过程执行成功,如果连续发送第m目标数据获取请求的次数超过预设第一次数阈值,则执行第一报警操作。其中,所述预设的第一时间延时为毫秒级别。
通过步骤S321,如果是短暂的通讯故障,则通过重新发送几次第m目标数据获取请求即可继续执行后续操作流程。如果超过预设的第一次数阈值,则说明可能是设备故障或PLC等故障,此时可执行第一报警操作,可以进行人工干预解决故障问题。
作为一种实施例,所述步骤S4包括:
步骤S41、所述上位机监测到第n目标数据存储在所述数据库中存储完成后,将所述第n目标数据对应的第n目标设备所对应的第二数据位变成1;
步骤S42、所述PLC监测到所述第n目标设备所对应的第二数据位变成1后,向第n目标设备发送解锁指令,控制所述目标传感器执行下一传感器数据采集操作。
可以理解的是,若所述上位将所述第n目标数据对应的第n目标设备所对应的第二数据位变成1的操作失败,则可能出现了PLC与上位机的通信故障或者PLC、设备等故障,此时可设置相应的容错机制,作为一种实施例,所述步骤S41中,若所述上位将所述第n目标数据对应的第n目标设备所对应的第二数据位变成1的操作失败,则还包括:
步骤S411、所述上位机间每隔预设的第二时间延时重新执行将所述第n目标数据对应的第n目标设备所对应的第二数据位变成1的操作,直至将所述第n目标数据对应的第n目标设备所对应的第二数据位变成1的操作成功, 如果执行所述第n目标数据对应的第n目标设备所对应的第二数据位变成1的操作失败次数连续达到预设的第二次数阈值,则执行第二报警操作。其中,所述预设的第二时间延时为毫秒级别。
通过步骤S411,如果是短暂的通讯故障,则通过重新向第n目标设备发送将对应第二数据位变成1的操作指令,即可继续执行后续操作流程。如果超过预设的第二次数阈值,则说明可能是设备故障或PLC等故障,此时可执行第一报警操作,可以进行人工干预解决故障问题。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。