任务挂起
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在多任务实时系统中,任务状态有四种:①执行状态(execute),表示正在执行中这种状态的任务只能有一个,由优先数决定。
②挂起状态(suspend)表示暂时停止。
机器正在进行输入输出等待或事件等待,所有任务一旦处于挂起状态,机器就在操作系统内循环。
③就绪状态(ready)表示准备完了,一旦来通知就可以继续执行,或者由于优先数高的任务先执行,而优先数低的处于执行等待状态。
④静止状态(dormant)或称潜伏状态,作为任务已经消除,不能执行的状态。
所有的任务都处于静止状态时,表示该程序执行完毕。
转载请注明来自:.cn/Knowledge/nPost/nPost_52144.htm
uC/OS-II任务挂起和任务延时的异同:
同:二者都使任务进入等待状态。
处于等待状态的任务不处于就绪状态,任务在就绪任务表中登记的就绪标志被取消,任务不可能被调度。
异:挂起的任务只能在其他任务中通过调用恢复函数OSTaskResume()使其恢复为就绪状态,否则将不可能再次被运行(因为它没有就绪),而延时的任务可以在延时时间到时自动恢复就绪状态,即使没有其他任务调用取消延时函数OSTimeDlyResume()。
任务挂起是怎么回事
就相当于操作系统中将进程挂起的操作,可以查看itron的源代码,只要有操作系统的原理知识就可以解决了。
itron里边的任务有三个状态
1 run
2 ready
3 (广义挂起)
3.1 waiting
3.2 suspended
3.3 dormant
3.4 no-existing
一个任务可以在三个状态之间切换,再具体可以看相关资料
ready到waiting,,一个task在ready下时,这个task其实是可以执行的,但是有比他优先级更高的task在执行,当前task只好reay.这个task需要等待某一事件的发生比如说一个semaphone,他就跳转到waiting. waiting到ready,这个semaphone解除了,当前task又从waiting跳转到ready。
可以看下资料把那几个状态的跳转关系看一下,就明白了状态大致如6楼所说,但在最新的4.0系统上多了个二重等待状态
阻塞(pend)与挂起(suspend)的区别
理解一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待事件或资源时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切的知道他什么时候恢复阻塞。
而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的事件或资源(如信号量)就有自己的队列。
理解二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种资源或信
号量的时候出现。
挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务运行,一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试。
理解三:pend是task主动去等一个事件,或消息.suspend是直接悬挂task,以后这个task和你没任何关系,任何task间的通信或者同步都和这个suspended task没任何关系了,除非你resume task;
理解四:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾及处于pend下的任务,当pend下的任务等待的资源就绪后,就可以转为ready了。
ready 只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。
可以这样理解,只要是挂起状态,操作系统就不在管理这个任务了。
理解五:挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务一直不会ready。
而阻塞是因为资源被其他任务抢占而处于休眠态。
两者的表现方式都是从就绪态里“清掉”,即对应标志位清零,只不过实现方式不一样。
操作系统中睡眠、阻塞、挂起的区别形象解释
首先这些术语都是对于线程来说的。
对线程的控制就好比你控制了一个雇工为你干活。
你对雇工的控制是通过编程来实现的。
挂起线程的意思就是你对主动对雇工说:“你睡觉去吧,用着你的时候我主动去叫你,然后接着干活”。
使线程睡眠的意思就是你主动对雇工说:“你睡觉去吧,某时某刻过来报到,然后接着干活”。
线程阻塞的意思就是,你突然发现,你的雇工不知道在什么时候没经过你允许,自己睡觉呢,但是你不能怪雇工,肯定你这个雇主没注意,本来你让雇工扫地,结果扫帚被偷了或被邻居家借去了,你又没让雇工继续干别的活,他就只好睡觉了。
至于扫帚回来后,雇工会不会知道,会不会继续干活,你不用担心,雇工一旦发现扫帚回来了,他就会自己去干活的。
因为雇工受过良好的培训。
这个培训机构就是操作系统。
内存暂处理不过来的程序,称之为挂起程序
就是该程序未处于运行状态,但也没有被结束,只是暂时冻结
挂起就是进入后台操作
前台看不见我们能看到的就是前台
我们看不到了其实程序还在运作或者说这个程序还在占用一定的内存空间就是后台运行就叫挂起有些挂起还是可以看到的比如缩到右下角的任务栏里了
任务调度的几种状态
任务常见的有4种状态:就绪状态、运行状态、等待状态和挂起状态。
内存中的任务必须处于这4种状态之一。
就绪状态:指任务运行的时间条件和资源条件都满足,等待调度算法选择最合适的任务进入就绪状态。
任务一旦建立就处于就绪状态,这一点和
μC/0S—II相同。
运行状态:是当前时刻任务占有CPU资源正在运行的状态。
本调度算法选择进入就绪任务队列中优先级最高的任务运行。
任何时刻只能有一个任务处于运行状态。
等待状态:如果任务需要等待一段时间才能运行,那么这个任务当前处于等待状态。
使任务延迟一段时间可通过调用0s_TasK_Delay()函数实现。
调度器在每个系统时钟节拍检查任务延迟时间,一旦任务定义的延迟时间到,就使任务进入就绪状态。
挂起状态:正在运行的任务需要等待某一事件的发生,如果该事件没有发生那么任务就处于挂起状态。
事件的发生可能来自另外一个任务,也可能来自中断服务程序。
除此之外,系统还可能处在中断服务状态。
这是一种特殊的运行状态,当系统响应中断时,正在执行的任务被挂起,中断服务程序控制了CPU的使用权,系统就进入中断服务状态。
其中,空闲任务优先级最低,而且永远处于就绪状态,而且当所有的任务都在等待事件发生或者延迟时间结束时,操作系统就会执行空闲任务。
1、挂起任务
当你在进行系统升级维护的时候,你可能不希望当前计划中的批量进程在运行,使用程序BTCTRNS1,这将捕获所有当前计划任务并释放工作以及把他们移动到“特殊”状态。
在事务代码SE37中看到的任务状态将是“Released/Susp”。
2、释放执行任务
当你准备恢复他们以前的状态的时候,简单的运行BTCTRNS2就可以了,这些程序被用于SAP升级过程中,或者其他危险的维护工作中。
1 引言
组合秤又称选择组合衡器,它是由多个独立的进料出料结构的称量单元组成,电脑利用排组合原理对称量单元的载荷量自动优选组合计算出最佳、最接近目标重量值的重量组合进行包装。
选别秤是检测单个产品重量与设定目标是否相符,并由分选装置自动剔除不合标准产品的包装行业设备。
从实用角度出发,采用具有24位∑-△型A/D转换器的系统级单片机MSC1210结合低成本的供电解决方案与CAN控制器SJA1000以及CAN总线收发器
82C250,设计一种具有CAN总线接口的24位称重数据采集系统,可应用于组合称重设备、选别设备。
2 系统硬件设计
图1为系统硬件结构图。
系统硬件采用系统级单片机MSC1210直接采集传感器信号。
由称重传感器产生的电压输入信号采用差分输入方式,由滤波电路直接接到MSC1210的AIN0、AIN1,经MSC1210内部A/D转换采集数据,然后将采集数据转化为CAN协议数据传输至CAN总线网络,再由触摸屏处理数据。
MSC1210内置有温度传感器,便于后期数据校正,采集测量环境温度。
2.1 供电电压
A/D转换数据大小仅取决于输入电压V0大小,A/D转换精度取决于参考电压V0的稳定性。
V0、VREF必须取同一电源,电源波动相互抵消,对A/D转换无影响。
该称重传感器最小激励电压为5 V,最小激励电流为25 mA。
MSC1210提供的内部参考电压不足以驱动传感器,因此选择外部输入参考电压,同时关闭内部参考电压以减小噪声干扰和功率损耗。
基于上述原因,综合成本考虑,选用低压差线性稳压器LP2591提供5 V用以激励传感器,通过高精度电阻网络分压成2.5 V供给MSC1210作为A/D转换的参考电源。
LP2951属精密型低压差线性稳压器,初始精度0.5%,电压调整率和负载调整率可达0.05%,具有低静态电流(≤8 mA)、低压差、低温度系数(20×10-6/℃)等特点。
轻载时的
压差为50 mV;当其为100 mA负载时压差为380 mV。
最大输出电流为100 mA。
集成的各个电阻具有参数、性能、受环境影响一致的特点,外界对其干扰(如电源变化、温度变化)能在分压比中相互抵消。
采用并联电阻的分压电路有助于减小温漂,提高稳定性。
2.2 A/D转换器
高精度数据采集核心在于A/D转换器的参数指标。
即量程、有效分辨率和转换时间等。
MSC1210通过可编程增益放大器(PGA)和偏移D/A转换器(ODAC)改变量程以增加输入信号的动态范围。
MSC1210通过改变本身的PGA来改变量程以适应不同的传感器输入电压。
如果AIN0作为同相差分输入通道,其他任何一个通道都可作为反相差分输入通道。
这里选择AIN0、AIN1作为输入传感器输入电压的前向通道。
PGA的模拟输入通过ODAC最多被偏置到输入范围的一半,由于ODAC引入了模拟偏置量而非数字量到PGA,所以使用ODAC 不会降低A/D转换器的性能。
该系统要求输入信号的动态范围为0~4 000 g,最小输入分辨率为0.1 g,同时根据A/D转换器线性输入、输出特性,A/D转换器满量程电压与所分辨最小电压的比值和相应重量输出比值相等。
系统必须保证最终测量结果具有16位的精度。
考虑系统电源电压漂移、温度漂移等其他因素,因此要求A/D转换至少应达到18 bit的实际转换精度。
因此,MSC1210能够满足系统设计要求。
2.3 温度测量
MSC1210内置温度传感器便于后期数据校正,采集测量环境的温度。
由于其内部二极管提供温度传感功能,当输入多路复用器的设置寄存器所有位都为1时,二极管就连到A
/D转换器的输入端,所有通道打开。
2.4 CAN总线数据通讯
SJA1000的AD0~AD7连接到MSC1210的P0端口,CS连接到MSC1210的引脚P2_7。
P2_7引脚为0时,CPU片外存储器地址选中SJA1000,CPU通过这些地址对SJA1000执行相应的读/写操作。
SJA1000的RD、WR、ALE分别与MSC1210的对应引脚相连,INT引脚接MSC1210的INT0,MSC1210可通过中断方式访问SJA1000。
为增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0通过高速光耦6N137与82C250相连,这样就实现总线上各CAN节点间的电气隔离。
采用小功率电源隔离模块
B05-05S将光耦部分的两个电源完全隔离。
通过隔离提高了节点的稳定性和安全性,如图2所示。
传感器电压输出信号经过滤波后直接接MSC1210的AIN0,AIN1;MSC1210内部A/D转换的参考电压为LP2951,输出电压经精密电阻网络分压得到,如图3所示。
3 系统软件设计
单片机采集A/D转换的数据并通过CAN协议发给CAN网络,传输数据,在触摸屏上编制软件系统接收和存储采集到的称重传感器输出的电压数据,软件工作的重点包括数据校准和数据采集两部分。
3.1 数据校准
为降低器件和系统的偏移误差和增益误差,需要采用校准方法。
MSC1210或整个系统的偏移、增益误差可以通过校正来减少影响。
校正功能ADCCON1寄存器(SFR DDH)的CAL2~0位控制每个校准过程需7个tDATA 周期,因此,完成偏移和增益校准需要14个rDATA周期。
在校准完成后,当中断允许时,会产生A/D转换中断。
校正完成以后A/D转换器中断位置为1,表示校正结束可以读取有效数据,相关程序代码如下:
ADCON1=0X01;//初始化增益和偏移自校准
while(!(AISTAT&0X20));//等待中断触发
3.2 数据采集
采用台达DOP人机界面软件ScreenEditor开发平台,编制数据采集与存储系统,使用CAN网络协议与下位机通讯,进行称重数据的实时采集,具体应用于称重系统采集测试系统中。
数据采集界面如图5所示。
3.3 提高精度采取的其他措施
为保证得到一个高精度的测试系统,除了使用高精度A/D转换器外,系统中的其他模块设计也对整个系统精度有很大的影响。
(1)传感器是整个系统的核心,要获得可靠的数据源就要注意电阻式应变传感器的安装方式,传感器的底座安装面应平整、整洁,无任何油膜、胶膜等存在。
安装底座要求高于传感器本身的强度和刚度。
安装底座的安装面要用水平仪调整水平。
安装时不能采用普通平垫圈,应使用弹簧垫圈。
在给传感器加载受力时,要按传感器加载受力方向加载,避免横向或附加扭矩力。
(2)数字器件和模拟器件独立供电,对电源进行稳压,并加滤波电路,以免电源噪声对系统产生影响。
为防止传导型高频电磁干扰,在传感器信号输出端及电源线上加屏蔽珠。
在PCB布线时应尽量将数字部分和模拟部分隔离,数字地与模拟地隔离。
系统能够稳定运行,测量结果满足精度要求,显示分辨率为1/40 000。
数据稳定时间小于1 s。
4 结束语
该CAN总线的称重数据采集方案适用于组合称重或选别称重的环境下对称重传感器信号的采集与存储,经工厂环境的实践检验,证明系统能够长时间稳定运行,具有较好的应用前景,同时也可运用在车辆称重系统。
24位A/D转换称重数据采集系统的设计
发布: 2009-8-05 19:06 | 作者: aaaaaqi509
1 引言
组合秤又称选择组合衡器,它是由多个独立的进料出料结构的称量单元组成,电脑利用排组合原理对称量单元的载荷量自动优选组合计算出最佳、最接近目标重量值的重量组合进行包装。
选别秤是检测单个产品重量与设定目标是否相符,并由分选装置自动剔除不合标准产品的包装行业设备。
从实用角度出发,采用具有24位∑-△型A/D转换器的系统级单片机MSC1210结合低成本的供电解决方案与CAN控制器SJA1000以及CAN总线收发器82C250,设计一种具有CAN总线接口的24位称重数据采集系统,可应用于组合称重设备、选别设备。
2 系统硬件设计
图1为系统硬件结构图。
系统硬件采用系统级单片机MSC1210直接采集传感器信号。
由称重传感器产生的电压输入信号采用差分输入方式,由滤波电路直接接到MSC1210的AIN0、AIN1,经MSC1210内部A/D转换采集数据,然后将采集数据转化为CAN协议数据传输至CAN总线网络,再由触摸屏处理数据。
MSC1210内置有温度传感器,便于后期数据校正,采集测量环境温度。
2.1 供电电压
A/D转换数据大小仅取决于输入电压V0大小,A/D转换精度取决于参考电压V0的稳定性。
V0、VREF必须取同一电源,电源波动相互抵消,对A /D转换无影响。
该称重传感器最小激励电压为5 V,最小激励电流为25 mA。
MSC1210提供的内部参考电压不足以驱动传感器,因此选择外部输入参考电压,同时关闭内部参考电压以减小噪声干扰和功率损耗。
基于上述原因,综合成本考虑,选用低压差线性稳压器LP2591提供5 V用以激励传感器,通过高精度电阻网络分压成2.5 V供给MSC1210作为A/D转换的参考电源。
LP2951属精密型低压差线性稳压器,初始精度0.5%,电压调整率和负载调整率可达0.05%,具有低静态电流(≤8 mA)、低压差、低温度系数(20×10-6/℃)等特点。
轻载时的压差为50 mV;当其为100 mA负载时压差为380 mV。
最大输出电流为100 mA。
集成的各个电阻具有参数、性能、受环境影响一致的特点,外界对其干扰(如电源变化、温度变化)能在分压比中相互抵消。
采用并联电阻的分压电路有助于减小温漂,提高稳定性。
2.2 A/D转换器
高精度数据采集核心在于A/D转换器的参数指标。
即量程、有效分辨率和转换时间等。
MSC1210通过可编程增益放大器(PGA)和偏移D/A转换器(ODAC)改变量程以增加输入信号的动态范围。
MSC1210通过改变本身的PGA来改变量程以适应不同的传感器输入电压。
如果AIN0作为同相差分输入通道,其他任何一个通道都可作为反相差分输入通道。
这里选择AIN0、AIN1作为输入传感器输入电压的前向通道。
PGA的模拟输入通过ODAC最多被偏置到输入范围的一半,由于ODAC引入了模拟偏置量而非数字量到PGA,所以使用ODAC不会降低A/D转换器的性能。
该系统要求输入信号的动态范围为0~4 000 g,最小输入分辨率为0.1 g,同时根据A/D转换器线性输入、输出特性,A/D转换器满量程电压与所分辨最小电压的比值和相应重量输出比值相等。
系统必须保证最终测量结果具有16位的精度。
考虑系统电源电压漂移、温度漂移等其他因素,因此要求A /D转换至少应达到18 bit的实际转换精度。
因此,MSC1210能够满足系统设计要求。
2.3 温度测量
MSC1210内置温度传感器便于后期数据校正,采集测量环境的温度。
由于其内部二极管提供温度传感功能,当输入多路复用器的设置寄存器所有位都为1时,二极管就连到A/D转换器的输入端,所有通道打开。
2.4 CAN总线数据通讯
SJA1000的AD0~AD7连接到MSC1210的P0端口,CS连接到MSC1210的引脚P2_7。
P2_7引脚为0时,CPU片外存储器地址选中SJA1000,CPU通过这些地址对SJA1000执行相应的读/写操作。
SJA1000的RD、WR、ALE分别与MSC1210的对应引脚相连,INT引脚接MSC1210的INT0,MSC1210可通过中断方式访问SJA1000。
为增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0通过高速光耦6N137与82C250相连,这样就实现总线上各CAN节点间的电气隔离。
采用小功率电源隔离模块B05-05S将光耦部分的两个电源完全隔离。
通过隔离提高了节点的稳定性和安全性,如图2所示。
传感器电压输出信号经过滤波后直接接MSC1210的AIN0,AIN1;MSC1210内部A/D转换的参考电压为LP2951,输出电压经精密电阻网络分压得到,如图3所示。
3 系统软件设计
单片机采集A/D转换的数据并通过CAN协议发给CAN网络,传输数据,在触摸屏上编制软件系统接收和存储采集到的称重传感器输出的电压数据,软件工作的重点包括数据校准和数据采集两部分。
3.1 数据校准
为降低器件和系统的偏移误差和增益误差,需要采用校准方法。
MSC1210或整个系统的偏移、增益误差可以通过校正来减少影响。
校正功能ADCCON1寄存器(SFR DDH)的CAL2~0位控制每个校准过程需7个tDATA周期,因此,完成偏移和增益校准需要14个rDATA周期。
在校准完成后,当中断允许时,会产生A/D转换中断。
校正完成以后A/D转换器中断位置为1,表示校正结束可以读取有效数据,相关程序代码如下:
ADCON1=0X01; //初始化增益和偏移自校准
while(!(AISTAT&0X20));//等待中断触发
3.2 数据采集
采用台达DOP人机界面软件ScreenEditor开发平台,编制数据采集与存储系统,使用CAN网络协议与下位机通讯,进行称重数据的实时采集,具体应用于称重系统采集测试系统中。
数据采集界面如图5所示。
3.3 提高精度采取的其他措施
为保证得到一个高精度的测试系统,除了使用高精度A/D转换器外,系统中的其他模块设计也对整个系统精度有很大的影响。
(1)传感器是整个系统的核心,要获得可靠的数据源就要注意电阻式应变传感器的安装方式,传感器的底座安装面应平整、整洁,无任何油膜、胶膜等存在。
安装底座要求高于传感器本身的强度和刚度。
安装底座的安装面要用水平仪调整水平。
安装时不能采用普通平垫圈,应使用弹簧垫圈。
在给传感器加载受力时,要按传感器加载受力方向加载,避免横向或附加扭矩力。
(2)数字器件和模拟器件独立供电,对电源进行稳压,并加滤波电路,以免电源噪声对系统产生影响。
为防止传导型高频电磁干扰,在传感器信号输出端及电源线上加屏蔽珠。
在PCB布线时应尽量将数字部分和模拟部分隔离,数字地与模拟地隔离。
系统能够稳定运行,测量结果满足精度要求,显示分辨率为1/40 000。
数据稳定时间小于1 s。
4 结束语
该CAN总线的称重数据采集方案适用于组合称重或选别称重的环境下对称重传感器信号的采集与存储,经工厂环境的实践检验,证明系统能够长时间稳定运行,具有较好的应用前景,同时也可运用在车辆称重系统。