一种数据分享的方法、装置及系统制造方法及图纸

技术编号:32231033 阅读:19 留言:0更新日期:2022-02-09 17:35
本发明专利技术提供一种数据共享方法,包括在PLC侧对快速数据进行预处理,并将预处理后的快速数据存储于所述PLC侧的第一缓存区;将存储于所述第一缓存区的所述快速数据发送至上位系统;将接收的所述快速数据写入所述上位系统的共享内存中;所述上位系统中预配置的一个或多个用程序从所述共享内存中读取所述快速数据。基于该方法,实现在PLC侧和上位系统侧的无协议共享存储区域,实现高效、高吞吐量的数据共享,保证了应用程序读取PLC侧相关数据的连贯性,避免了短时的通信中断导致的数据不连续。本发明专利技术还提供一种数据共享装置以及一种数据共享系统。共享系统。共享系统。

【技术实现步骤摘要】
一种数据分享的方法、装置及系统


[0001]本专利技术涉及数据处理领域,更具体的,涉及一种PLC侧和上位系统侧数据共享的方法、装置及系统。

技术介绍

[0002]在某些特殊自动化场景中,需要将PLC采集的外部数据和自身产生的数据传送至上位系统中,以供上位系统中的应用程序进行数据的使用,例如对数据进行分析、存储、显示、转发等。目前通常是将PLC通过例如OPC UA,Modbus等通信协议与上位机连接,基于这些通信协议进行数据的传送共享;基于该种通信协议的数据传送、共享方式,由于需要对数据进行打包、解包等操作,效率较低,而PLC采集的外部实时数据和自身产生的数据变化非常快,因此容易产生数据堆积,最终会导致数据丢弃、覆盖等。

技术实现思路

[0003]有鉴于此,本专利技术提出了一种数据共享方法用以解决以上问题。
[0004]根据本专利技术的第一方面,本专利技术提供一种数据共享方法,包括:
[0005]在PLC侧对快速数据进行预处理,并将预处理后的快速数据存储于所述PLC侧的第一缓存区;
[0006]将存储于所述第一缓存区的所述快速数据发送至上位系统;
[0007]将接收的所述快速数据写入所述上位系统的共享内存中;
[0008]所述上位系统中预配置的一个或多个用程序从所述共享内存中读取所述快速数据。
[0009]基于上述实施例的数据共享方法,在PLC侧设置一级缓存,在上位系统中设置二级缓存,实现PLC侧和上位系统之间无协议共享存储区域,减小了通信开销,提高了通信效率,提高了吞吐量,且避免了短时的通信中断导致的数据不连续。
[0010]进一步的,基于一中间程序将存储于所述第一缓存区的所述快速数据发送至上位系统,以及基于所述中间程序将接收的所述快速数据写入所述上位系统的共享内存中。
[0011]通过在PLC侧和上位系统侧分别设置中间程序,并基于该中间程序实现PLC侧和上位系统侧的数据共享,无需通过工业通信协议,提高了数据传送和数据接收的效率。
[0012]进一步的,所述将接收的所述快速数据写入所述上位系统的共享内存中的步骤包括:
[0013]获取写信号量;
[0014]判断上一次写入位置的所述快速数据是否已被全部的所述预配置应用程序读取,
[0015]如果已被全部的所述预配置应用程序读取,则从所述共享内存的起始位置开始写入数据;
[0016]如果未被全部的所述预配置应用程序读取,则从所述上一次写入位置的下一个位置开始写入所述数据。
[0017]基于以上步骤,在进行写操作时,只写入当前接收的本次PLC侧发来的数据包到共享内存中,在进行读操作时,一次读取共享内存中所有未读取的数据,因此每一次进行写操作时,只需从上次写操作的位置进行判断,并根据判断结果决定是从共享内存起始位置开始写还是从下一个位置开始写,能够提高写操作的效率。
[0018]进一步的,所述上位系统中预配置的一个或多个应用程序从所述共享内存区域中读取所述快速数据的步骤,进一步包括:
[0019]获取读信号量;
[0020]检测上一次写入位置及其前面的所有位置中的所述快速数据是否已被所述预配置应用程序读取,
[0021]若已被所述预配置应用程序读取,则释放所述读信号量;
[0022]若未被所述预配置应用程序读取,则所述预配置应用程序对当前未被读取位置及其前面的所有位置中的所述快速数据进行读取,且在所述上一次写入位置及其前面的所有位置中的存储数据已被所述预配置应用程序读取后释放所述读取信号量。
[0023]基于以上步骤,只需从上次写入位置开始判断前面的所有数据是否已被该应用程序进行了读取,如果在该次读操作前已完成了读取直接释放读信号量,如果之前未进行读取则需要对其前面所有位置的数据进行读取,因此,提高了读取操作的效率。
[0024]进一步的,通过查询所述共享内存中维护的应用数据状态表判断所述共享内存中的所述快速数据是否被所述预配置应用程序读取,其中,所述应用数据状态表的各行依次对应于所述共享内存从起始位置开始被分成的不同块,所述列对应于所述上位系统中预配置的应用程序,所述应用数据状态表的每一单元格设置有状态值,所述状态值表征所述单元格对应的预配置应用程序对所述单元格对应的所述共享内存的块中的快速数据是否已读取,所述状态值包括“已读取”和“未读取”。
[0025]通过设置应用数据状态表,并通过该表中单元格的状态值记录应用程序对于某一个共享内存的块的数据的读取情况,方便在进行读写前进行判断,提高数据读取写入的效率。
[0026]进一步的,设置偏移量m,所述偏移量m表征指向所述应用数据状态表第m+1行。
[0027]通过采用偏移量m对应应用数据状态表中的行,进而对应共享内存的块的位置,方便记录操作的位置。
[0028]进一步的,所述上位系统将接收的所述快速数据写入所述共享内存中的步骤中,进一步包括:
[0029]获取上一次写入时的偏移量m;
[0030]判断所述应用数据状态表中第m+1行的所有单元格的状态值,当第m+1行的所有单元格的状态值都为“已读取”时,
[0031]将接收的所述快速数据存入所述共享内存的起始位置的块,并修改偏移位置m=0,修改所述应用数据状态表的所有单元格的状态值为“未读取”,释放所述写信号量。
[0032]进一步的,所述上位系统将接收的所述快速数据写入共享内存中的步骤中,进一步包括:
[0033]获取上一次写入时的偏移量m;
[0034]判断所述应用数据状态表中第m+1行的所有单元格的状态值,当第m+1行的所有单
元格的状态值存在“未读取”时,
[0035]判断偏移量m是否大于所述应用状态数据表的行数

1,
[0036]如果不大于,则修改m=m+1,将接收的所述快速数据存入到修改后的所述偏移量m指向的行对应的所述共享内存的块中,并将当前所述偏移量m指向的行的所有单元格的状态值设置为“未读取”,释放所述写信号量。
[0037]基于以上步骤,需要写入时,首先判断共享内存中的数据是否已经被所有的应用程序读取,如果未被所有预配置的应用程序读取,则不可以覆盖存储的数据,需要在上一次写入位置后继续写入,只有共享内存中的数据已经被所有的应用程序读取时,才可以重新写入新数据,以此避免将未读取数据进行覆盖,进而影响未读取该数据的应用程序的数据连续性;在判断时,基于偏移量m来进行位置的记录,方便、高效。
[0038]进一步的,所述上位系统中预配置的一个或多个用程序从所述共享内存中读取所述快速数据的步骤中,进一步包括:
[0039]获取上一次写入时的偏移量m;
[0040]获取所述预配置应用程序所在的列数n;
[0041]查看并判断所述应用数据状态表中第m+1行第n列的单元格的状态值是否为“已读取”,如果为“已读取”,则修改偏移量m=m

1;
[0042]重本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据共享方法,其特征在于,包括:S100:在PLC侧对快速数据进行预处理,并将预处理后的快速数据存储于所述PLC侧的第一缓存区;S200:将存储于所述第一缓存区的所述快速数据发送至上位系统;S300:将接收的所述快速数据写入所述上位系统的共享内存中;S400:所述上位系统中预配置的一个或多个用程序从所述共享内存中读取所述快速数据。2.如权利要求1所述的数据共享方法,其特征在于,基于一中间程序将存储于所述第一缓存区的所述快速数据发送至上位系统,以及基于所述中间程序将接收的所述快速数据写入所述上位系统的共享内存中。3.如权利要求2所述的数据共享方法,其特征在于,所述将接收的所述快速数据写入所述上位系统的共享内存中的步骤S300,进一步包括:S310:获取写信号量;S320:判断上一次写入位置的所述快速数据是否已被全部的所述预配置应用程序读取,如果已被全部的所述预配置应用程序读取,则从所述共享内存的起始位置开始写入数据(S321);如果未被全部的所述预配置应用程序读取,则从所述上一次写入位置的下一个位置开始写入所述数据(S322)。4.如权利要求2所述的数据共享方法,其特征在于,所述上位系统中预配置的一个或多个应用程序从所述共享内存区域中读取所述快速数据的步骤S400,进一步包括:S410:获取读信号量;S420:检测上一次写入位置及其前面的所有位置中的所述快速数据是否已被所述预配置应用程序读取,若已被所述预配置应用程序读取,则释放所述读信号量(S421);若未被所述预配置应用程序读取,则所述预配置应用程序对当前未被读取位置及其前面的所有位置中的所述快速数据进行读取,且在所述上一次写入位置及其前面的所有位置中的存储数据已被所述预配置应用程序读取后释放所述读取信号量(S422)。5.如权利要求3或权利要求4的一种数据共享方法,其特征在于,通过查询所述共享内存中维护的应用数据状态表判断所述共享内存中的所述快速数据是否被所述预配置应用程序读取,其中,所述应用数据状态表的各行依次对应于所述共享内存从起始位置开始被分成的不同块,所述列对应于所述上位系统中预配置的应用程序,所述应用数据状态表的每一单元格设置有状态值,所述状态值表征所述单元格对应的预配置应用程序对所述单元格对应的所述共享内存的块中的快速数据是否已读取,所述状态值包括“已读取”和“未读取”。6.如权利要求5所述的一种数据共享方法,其特征在于,设置偏移量m,所述偏移量m表征指向所述应用数据状态表第m+1行。7.如权利要求6所述的一种数据共享方法,其特征在于,所述上位系统将接收的所述快速数据写入所述共享内存中的步骤S300中,进一步包括:
获取上一次写入时的偏移量m;判断所述应用数据状态表中第m+1行的所有单元格的状态值,当第m+1行的所有单元格的状态值都为“已读取”时,将接收的所述快速数据存入所述共享内存的起始位置的块,并修改偏移位置m=0,修改所述应用数据状态表的所有单元格的状态值为“未读取”,释放所述写信号量。8.如权利要求6所述的一种数据共享方法,其特征在于,所述上位系统将接收的所述快速数据写入共享内存中的步骤S300中,进一步包括:获取上一次写入时的偏移量m;判断所述应用数据状态表中第m+1行的所有单元格的状态值,当第m+1行的所有单元格的状态值存在“未读取”时,判断偏移量m是否大于所述应用状态数据表的行数

1,如果不大于,则修改m=m+1,将接收的所述快速数据存入到修改后的所述偏移量m指向的行对应的所述共享内存的块...

【专利技术属性】
技术研发人员:张坤郭开诚
申请(专利权)人:西门子工厂自动化工程有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1