一、高速采集和连续控制方案 目标系统 本方案主要解决的是小型控制设备中嵌入组态系统的要求。此类系统包括注槊机,扫路机以及其他小型控制设备。
系统特点
这些设备的特点是有简单画面,一般是批次工作,有比较复杂的工作状态和状态转换关系。操作逻辑比较复杂。而且,为了降低成本,一般只使用简单AD、DA、IO,由组态软件来解决控制逻辑和时序问题,不使用PLC。有时有报表输出等。 进入快速采集是事先预知的,比如:是由操作员决定开始进入快速采集和控制,而不是由于发生了某种事件如报警进入快速采集和控制。如果是后一种情况,请参看快速转入高速采集方案。 对于要求响应周期在50毫秒以上的项目,可以直接使用组态软件中的相应功能如循环策略,定时策略等来实现。 对于响应周期在50毫秒以下的项目,通常原因是由于需要进行一路或几路位置控制PID操作,其控制周期要求可以和PLC相比,在1~10毫秒之间。
解决方案 MCGS组态系统对此类系统的解决方案如下:
除了高速控制以外的功能,使用通用组态功能来完成。注意参考通用组态功能的各项性能参数。
对于高速控制,解决方法如下:
1、构造一个用户策略,此策略在系统初始化时启动。
1、构造一个用户策略,此策略在系统初始化时启动。
2、在此用户策略中,添加一个脚本程序。
3、在此脚本程序的开头,使用脚本函数SetRealTimeStgy,把本策略升级为硬实时策略,如果不升级为硬实时策略则很容易被其他线程干扰。
4、在此脚本程序中,构造一个while循环体。在循环体中,反复循环执行以下内容。
● 等待定时间隔到来,定时间隔的等待有两种办法,一种是使用!SLEEP函数,使用此函数,参数为1时,大约延时2毫秒,参数为3时,延时4毫秒,也就是延时指定时长,外加任务切换的时间1毫秒,此性能指标在486 66MHz上测出。另一种办法是使用函数WAITFORINTERRUPT,等待一个中断的发生。可以使用硬件板卡上的2M定时器,配合计数器来触发中断,实现此功能。此方式可以达到1毫秒的扫描周期,缺点是需要硬件配合。
● 检查是否已经不需要进行此快速扫描控制了,如系统退出或状态转换为手动。如果是,则退出循环体。
● 启动AD转换和DI,采集数据。
● 进行控制算法和逻辑的计算工作,此时可以从实时数据库中读取各种设定值。并输出各种数值。
● 启动DA转换和DO,输出控制命令。
● 进入下一次循环。
二、高速采集和事后分析方案 目标系统 本方案主要解决的是实验采集设备中嵌入组态系统的要求。此类系统包括各种测试仪设备。
系统特点
这些设备的特点是其工作状态有高速采集状态和事后分析状态两个。通常使用办法是进行一次试验,打开高速采集,以很高的速度如1毫秒采集数据,采集到的数据存放在内存中,同时可以做一些比较简单的数据处理如求平均值等等。一般采集1~20秒,***多不超过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、试验完成后,按照操作员的操作,从指定文件中读取数据,放到配置成相对曲线的实时曲线上,观看数据。
三、低速轮循和触发转换到高速采集方案 目标系统 本方案主要解决的是事故纪录仪性质的设备方案。如电力故障纪录仪等等。
系统特点
这些设备的特点是其工作状态有高速采集状态和平时轮循状态两个。通常使用时,以不高的速度如100毫秒一次采集数据并进行存盘处理。在外界报警或故障发生时,转入高速采集状态,设备以很短的间隔如1毫秒一次采集一段时间(1~5秒)的数据,然后存盘以便分析和处理。 进入快速采集是无法事先预知的,通常情况如:一个中断通知到来表示某种事件已经发生。此时系统转入快速采集,采集一段时间后停止,并保存采集到得数据。 对于响应周期在50毫秒以下的项目,通常原因是由于需要进行一路或几路高速采集,其采集周期达到1~50毫秒之间。
这些设备的特点是其工作状态有高速采集状态和平时轮循状态两个。通常使用时,以不高的速度如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、 试验完成后,按照操作员的操作,从指定文件中读取数据,放到配置成相对曲线的实时曲线上,观看数据。