北京昆仑通态自动化软件科技有限公司是国内知名的一家高科技企业,公司主要从事专业自动化软件的开发,应用系统的集成,并向用户提供从硬件到软件的总体设计方案。产品遍布石油、化工、冶金、矿山、运输、机械、食品等几十个行业,并应用于全国乃至世界的众多工业控制现场。值此之即,我们向大家介绍公司软件MCGS嵌入式组态系统快速采集解决方案。 我们按照目标方案来组织解决方案。使用本文档的时候,首先需要确认你的工程是否符合所列举的目标方案。可以通过检查工程是否符合目标系统的特点来发现你所需要处理的工程项目是何种类型的工程项目。如果你发现你的工程与所列举特点有不一致的地方,可能你需要处理的是新的类型的工程,这种情况下,请通过和嵌入式产品线以便确认你的工程需要的解决方案。 目前,嵌入式组态系统可以解决的快速采集项目有如下三种: 1、 高速采集和连续控制方案 目标系统 本方案主要解决的是小型
控制设备中嵌入组态系统的要求。此类系统包括注槊机,扫路机以及其他小型控制设备。 系统特点 这些设备的特点是有简单画面,一般是批次工作,有比较复杂的工作状态和状态转换关系。操作逻辑比较复杂。而且,为了降低成本,一般只使用简单AD、DA、IO,由组态软件来解决控制逻辑和时序问题,不使用PLC。有时有报表输出等。 进入快速采集是事先预知的,比如:是由操作员决定开始进入快速采集和控制,而不是由于发生了某种事件如报警进入快速采集和控制。如果是后一种情况,请参看快速转入高速采集方案。 对于要求响应周期在50毫秒以上的项目,可以直接使用组态软件中的相应功能如循环策略,定时策略等来实现。 对于响应周期在50毫秒以下的项目,通常原因是由于需要进行一路或几路位置控制PID操作,其控制周期要求可以和PLC相比,在1~10毫秒之间。 解决方案 MCGS组态系统对此类系统的解决方案如下: 除了高速控制以外的功能,使用通用组态功能来完成。注意参考通用组态功能的各项性能参数。 对于高速控制,解决方法如下: 1、 构造一个用户策略,此策略在系统初始化时启动。 2、 在此用户策略中,添加一个脚本程序。 3、 在此脚本程序的开头,使用脚本函数SetRealTimeStgy,把本策略升级为硬实时策略,如果不升级为硬实时策略则很容易被其他线程干扰。 4、 在此脚本程序中,构造一个while循环体。在循环体中,反复循环执行以下内容。 ● 等待定时间隔到来,定时间隔的等待有两种办法,一种是使用!SLEEP函数,使用此函数,参数为1时,大约延时2毫秒,参数为3时,延时4毫秒,也就是延时指定时长,外加任务切换的时间1毫秒,此性能指标在486 66MHz上测出。另一种办法是使用函数WAITFORINTERRUPT,等待一个中断的发生。可以使用硬件板卡上的2M定时器,配合计数器来触发中断,实现此功能。此方式可以达到1毫秒的扫描周期,缺点是需要硬件配合。 ● 检查是否已经不需要进行此快速扫描控制了,如系统退出或状态转换为手动。如果是,则退出循环体。 ● 启动AD转换和DI,采集数据。 ● 进行控制算法和逻辑的计算工作,此时可以从实时数据库中读取各种设定值。并输出各种数值。 ● 启动DA转换和DO,输出控制命令。 ● 进入下一次循环。 2、 高速采集和事后分析方案 目标系统 本方案主要解决的是实验采集设备中嵌入组态系统的要求。此类系统包括各种测试仪设备。 系统特点 这些设备的特点是其工作状态有高速采集状态和事后分析状态两个。通常使用办法是进行一次试验,打开高速采集,以很高的速度如1毫秒采集数据,采集到的数据存放在内存中,同时可以做一些比较简单的数据处理如求平均值等等。一般采集1~20秒,zui多不超过1分钟。高速采集停止后(经常是由于试验完成了),把数据保存到磁盘上的数据文件中。然后进入分析状态,从数据文件中把数据读取出来,通过相对曲线来显示,通过数据流览构件来看数据。额外的要求包括对数据文件的命名,管理,备份和传送到上位机中。 进入快速采集是事先预知的,比如:是由实验员决定开始进入快速采集和控制,而不是由于发生了某种事件如报警进入快速采集和控制。如果是后一种情况,请参看快速转入高速采集方案。 对于要求响应周期在50毫秒以上的项目,可以直接使用组态软件中的相应功能如循环策略,定时策略等来实现。 对于响应周期在50毫秒以下的项目,通常原因是由于需要进行一路或几路高速采集,其采集周期达到1~50毫秒之间。 解决方案 MCGS组态系统对此类系统的解决方案如下: 除了高速采集以外的功能,使用通用组态功能来完成。注意参考通用组态功能的各项性能参数。 对于高速控制,解决方法如下: 5、 构造一个用户策略,此策略在系统初始化时启动。 6、 在此用户策略中,添加一个脚本程序。 7、 在此脚本程序的开头,使用脚本函数SetRealTimeStgy,把本策略升级为硬实时策略,如果不升级为硬实时策略则很容易被其他线程干扰。使用脚本程序ArrayCreate 创建一个浮点数组。此函数指定数组序号,序号范围为0~255,数组大小,范围为1~655350。 8、 准备一个变量Pointer来指示目前使用到哪个位置。 9、 在此脚本程序中,构造一个while循环体。在循环体中,反复循环执行以下内容。 ● 等待定时间隔到来,定时间隔的等待有两种办法,一种是使用!SLEEP函数,使用此函数,参数为1时,大约延时2毫秒,参数为3时,延时4毫秒,也就是延时指定时长,外加任务切换的时间1毫秒,此性能指标在486 66MHz上测出。另一种办法是使用函数WAITFORINTERRUPT,等待一个中断的发生。可以使用硬件板卡上的2M定时器,配合计数器来触发中断,实现此功能。此方式可以达到1毫秒的扫描周期,缺点是需要硬件配合。 ● 检查是否已经不需要进行此快速扫描采集了,如系统退出或状态转换为手动。如果是,则退出循环体。 ● 启动AD转换和DI,采集数据。 ● 使用ArraySetAt把采集到的数据放到数组中的位置,位置可以根据变量Pointer决定,然后把Pointer增长1。 ● 启动DA转换和DO,输出控制命令。 ● 进入下一次循环。 10、 高速采集结束后,使用ArrayGetAt逐个把数据读出来,使用FileWriteStrLimit来保存数据到文件中去。 11、 试验完成后,按照操作员的操作,从指定文件中读取数据,放到配置成相对曲线的实时曲线上,观看数据。 3、 低速轮循和触发转换到高速采集方案 目标系统 本方案主要解决的是事故纪录仪性质的设备方案。如电力故障纪录仪等等。 系统特点 这些设备的特点是其工作状态有高速采集状态和平时轮循状态两个。通常使用时,以不高的速度如100毫秒一次采集数据并进行存盘处理。在外界报警或故障发生时,转入高速采集状态,设备以很短的间隔如1毫秒一次采集一段时间(1~5秒)的数据,然后存盘以便分析和处理。 进入快速采集是无法事先预知的,通常情况如:一个中断通知到来表示某种事件已经发生。此时系统转入快速采集,采集一段时间后停止,并保存采集到得数据。 对于响应周期在50毫秒以下的项目,通常原因是由于需要进行一路或几路高速采集,其采集周期达到1~50毫秒之间。 解决方案 MCGS组态系统对此类系统的解决方案如下: 除了高速采集以外的功能,使用通用组态功能来完成。注意参考通用组态功能的各项性能参数。 对于高速控制,解决方法如下: 1、 构造一个中断策略,监听故障通知中断。 2、 在此中断策略中,添加一个脚本程序。 3、 在此脚本程序的开头,使用脚本函数SetRealTimeStgy,把本策略升级为硬实时策略,如果不升级为硬实时策略则很容易被其他线程干扰。 4、 使用脚本程序ArrayCreate 创建一个浮点数组。此函数指定数组序号,序号范围为0~255,数组大小,范围为1~655350。 5、 准备一个变量Pointer来指示目前使用到哪个位置。 6、 在此脚本程序中,构造一个while循环体。在循环体中,反复循环执行以下内容。 ● 等待定时间隔到来,定时间隔的等待有两种办法,一种是使用!SLEEP函数,使用此函数,参数为1时,大约延时2毫秒,参数为3时,延时4毫秒,也就是延时指定时长,外加任务切换的时间1毫秒,此性能指标在486 66MHz上测出。另一种办法是使用函数WAITFORINTERRUPT,等待一个中断的发生。可以使用硬件板卡上的2M定时器,配合计数器来触发中断,实现此功能。此方式可以达到1毫秒的扫描周期,缺点是需要硬件配合。 ● 检查是否已经不需要进行此快速扫描采集了,如系统退出或状态转换为手动。如果是,则退出循环体。 ● 启动AD转换和DI,采集数据。 ● 使用ArraySetAt把采集到的数据放到数组中的位置,位置可以根据变量Pointer决定,然后把Pointer增长1。 ● 进入下一次循环。 12、 高速采集结束后,使用ArrayGetAt逐个把数据读出来,使用FileWriteStrLimit来保存数据到文件中去。 13、 试验完成后,按照操作员的操作,从指定文件中读取数据,放到配置成相对曲线的实时曲线上,观看数据。