<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ZZLAB</title>
	<atom:link href="http://www.zzlab.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.zzlab.com</link>
	<description>A technical blog about embeded design &#38; programming.</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:31:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SSH翻墙 飞一般的感觉</title>
		<link>http://www.zzlab.com/general-feeling-of-flying-over-the-wall-ssh.html</link>
		<comments>http://www.zzlab.com/general-feeling-of-flying-over-the-wall-ssh.html#comments</comments>
		<pubDate>Fri, 23 Jul 2010 16:31:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=144</guid>
		<description><![CDATA[突然来了点灵感，想去看看那些撞墙的网站，譬如twitter和blogspot之类的。但是用Tor翻墙的龟速真是让我难以忍受，自由门速度虽然还可以但是也常常会断。索性试试SSH，嘿嘿，速度不错而且相当稳定。还真对得起这一年30元，30元买了个2G的国外空间用来放博客还可以用SSH来翻墙，真是太值了。具体怎用SSH翻墙，网上的教程不胜枚举，我是用PUTTY+PLINK来做的，很是方便，那感觉——飞一般的。]]></description>
			<content:encoded><![CDATA[<p>突然来了点灵感，想去看看那些撞墙的网站，譬如twitter和blogspot之类的。但是用Tor翻墙的龟速真是让我难以忍受，自由门速度虽然还可以但是也常常会断。索性试试SSH，嘿嘿，速度不错而且相当稳定。还真对得起这一年30元，30元买了个2G的国外空间用来放博客还可以用SSH来翻墙，真是太值了。具体怎用SSH翻墙，网上的教程不胜枚举，我是用PUTTY+PLINK来做的，很是方便，那感觉——飞一般的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/general-feeling-of-flying-over-the-wall-ssh.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bit time setting on mc9s08dz60 mscan</title>
		<link>http://www.zzlab.com/bit-time-setting-on-mc9s08dz60-mscan.html</link>
		<comments>http://www.zzlab.com/bit-time-setting-on-mc9s08dz60-mscan.html#comments</comments>
		<pubDate>Tue, 06 Jul 2010 00:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bit time]]></category>
		<category><![CDATA[mc9s08dz60]]></category>
		<category><![CDATA[NBT]]></category>
		<category><![CDATA[nominal bit time]]></category>
		<category><![CDATA[sample point]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=142</guid>
		<description><![CDATA[These day I working on CAN based ECU programming.In this project CAN bit rate is specified to 500kbps.Nominal bit time can be 10tq 12tq 16tq &#038; 20tq.Sample point must between 75%~80%. When nominal bit time is 10tq SJW must be 2tq.Nominal bit time is 12tq SJW must be 3tq.And nomimal bit time is 16tq or [...]]]></description>
			<content:encoded><![CDATA[<p>These day I working on CAN based ECU programming.In this project CAN bit rate is specified to 500kbps.Nominal bit time can be 10tq 12tq 16tq &#038; 20tq.Sample point must between 75%~80%.<br />
When nominal bit time is 10tq SJW must be 2tq.Nominal bit time is 12tq SJW must be 3tq.And nomimal bit time is 16tq or 20tq SJW is 4tq.<br />
Nominal bit time = Sync_Seg+Prop_Seg+Phase_Seg1+Phase_Seg2<br />
bit rate = CANCLK/NBT<br />
In this ECU I use MC9S08DZ60 as control unit.The MC9S08DZ60 has a MSCAN module which is compatible with CAN2.0 protocol.I will give different settings according to different NBT(Nominal Bit Time) below.<br />
Note:<br />
CANCLK:relate to crystal frequency or bus clock &#038; CANCTL1[bit6] &#038; CANBTR0[bit5:bit0]<br />
SJW: can be configed by CANBTR0[bit7:bit6]<br />
Sync_Seg: fixed to 1tq by MCU<br />
Prop_Seg+Phase_Seg1:can be configed by CANBTR1[bit3:bit0]<br />
Phase_Seg2:can be configed by CANBTR1[bit6:bit4]<br />
First case:NBT = 10tq &#038; bit rate = 500kbps<br />
CANCLK = 5MHz<br />
SJW = 2tq<br />
Sync_Seg = 1tq<br />
Prop_Seg+Phase_Seg1 = 7tq<br />
Phase_Seg2 = 2tq<br />
calculate sample point position =(Sync_Seg+Prop_Seg+Phase_Seg1)/NBT = (1+7)/10=80%<br />
Second case:NBT = 12tq &#038; bit rate = 500kbps<br />
CANCLK = 6MHz<br />
SJW = 3tq<br />
Sync_Seg = 1tq<br />
Prop_Seg+Phase_Seg1 = 8tq<br />
Phase_Seg2 = 3tq<br />
calculate sample point position =(Sync_Seg+Prop_Seg+Phase_Seg1)/NBT = (1+8)/12=75%<br />
Third case:NBT = 16tq &#038; bit rate = 500kbps<br />
CANCLK = 8MHz<br />
SJW = 4tq<br />
Sync_Seg = 1tq<br />
Prop_Seg+Phase_Seg1 = 11tq<br />
Phase_Seg2 = 4tq<br />
calculate sample point position =(Sync_Seg+Prop_Seg+Phase_Seg1)/NBT = (1+11)/16=75%<br />
Last case :NBT = 20tq &#038; bit rate = 500kbps<br />
CANCLK = 10MHz<br />
SJW = 4tq<br />
Sync_Seg = 1tq<br />
In this condition there have two cases to set the CAN sample point .Both of these two cases are satisfied with the above requirement(sample point between 75%~80%)<br />
case A:<br />
Prop_Seg+Phase_Seg1 = 14tq<br />
Phase_Seg2 = 5tq<br />
calculate sample point position =(Sync_Seg+Prop_Seg+Phase_Seg1)/NBT = (1+14)/20=75%<br />
case B:<br />
Prop_Seg+Phase_Seg1 = 15tq<br />
Phase_Seg2 = 4tq<br />
calculate sample point position =(Sync_Seg+Prop_Seg+Phase_Seg1)/NBT = (1+15)/20=80%</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/bit-time-setting-on-mc9s08dz60-mscan.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>下班后挖一口自己的“井”</title>
		<link>http://www.zzlab.com/after-work-digging-a-their-own-well.html</link>
		<comments>http://www.zzlab.com/after-work-digging-a-their-own-well.html#comments</comments>
		<pubDate>Fri, 14 May 2010 15:01:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Moments of Life]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=140</guid>
		<description><![CDATA[在网上看到这篇文章觉得很有道理，尤其适合做技术的朋友们。 有两个和尚住在隔壁，所谓隔壁就是隔壁那座山，他们分别住在相邻的两座山上的庙里。这两座山之间有一条溪，于是这两个和尚每天都会在同一时间下山去溪边挑水，久而久之他么变成为了好朋友。 就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水，右边那座山的和尚心想：“他大概睡过头了。”便不以为意。 哪知道第二天左边这座山的和尚还是没有下山挑水，第三天也一样。过了一个星期还是一样，直到过了一个月右边那座山的和尚终于受不了，他心想：“我的朋友可能生病了，我要过去拜访他，看看能帮上什么忙。”于是他便爬上了左边这座山，去探望他的老朋友。 等他到了左边这座山的庙，看到他的老友之后大吃一惊，因为他的老友正在庙前打太极拳，一点也不像一个月没喝水的人。他很好奇地问：“你已经一个月没有下山挑水了，难道你可以不用喝水吗？” 左边这座山的和尚说：“来来来，我带你去看。”于是他带着右边那座山的和尚走到庙的后院，指着一口井说：“这五年来，我每天做完功课后都会抽空挖这口井，即使有时很忙，能挖多少就算多少。如今终于让我挖出井水，我就不用再下山挑水，我可以有更多时间练我喜欢的太极拳。” 我们在公司领的薪水再多，那都是挑水。而把握下班后的时间挖一口属于自己的井，未来当年纪大了，体力拚不过年轻人了，还是有水喝，而且喝得很悠闲。 via 下班后挖一口自己的“井”.]]></description>
			<content:encoded><![CDATA[<p>在网上看到这篇文章觉得很有道理，尤其适合做技术的朋友们。</p>
<blockquote><p>有两个和尚住在隔壁，所谓隔壁就是隔壁那座山，他们分别住在相邻的两座山上的庙里。这两座山之间有一条溪，于是这两个和尚每天都会在同一时间下山去溪边挑水，久而久之他么变成为了好朋友。<span id="more-140"></span></p>
<p>就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水，右边那座山的和尚心想：“他大概睡过头了。”便不以为意。</p>
<p>哪知道第二天左边这座山的和尚还是没有下山挑水，第三天也一样。过了一个星期还是一样，直到过了一个月右边那座山的和尚终于受不了，他心想：“我的朋友可能生病了，我要过去拜访他，看看能帮上什么忙。”于是他便爬上了左边这座山，去探望他的老朋友。</p>
<p>等他到了左边这座山的庙，看到他的老友之后大吃一惊，因为他的老友正在庙前打太极拳，一点也不像一个月没喝水的人。他很好奇地问：“你已经一个月没有下山挑水了，难道你可以不用喝水吗？”</p>
<p>左边这座山的和尚说：“来来来，我带你去看。”于是他带着右边那座山的和尚走到庙的后院，指着一口井说：“这五年来，我每天做完功课后都会抽空挖这口井，即使有时很忙，能挖多少就算多少。如今终于让我挖出井水，我就不用再下山挑水，我可以有更多时间练我喜欢的太极拳。”</p>
<p>我们在公司领的薪水再多，那都是挑水。而把握下班后的时间挖一口属于自己的井，未来当年纪大了，体力拚不过年轻人了，还是有水喝，而且喝得很悠闲。</p></blockquote>
<p>via <a href="http://lzhi.info/views/764">下班后挖一口自己的“井”</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/after-work-digging-a-their-own-well.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>电烙铁焊接技术</title>
		<link>http://www.zzlab.com/electric-iron-welding.html</link>
		<comments>http://www.zzlab.com/electric-iron-welding.html#comments</comments>
		<pubDate>Wed, 28 Apr 2010 05:30:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/%e7%94%b5%e7%83%99%e9%93%81%e7%84%8a%e6%8e%a5%e6%8a%80%e6%9c%af.html</guid>
		<description><![CDATA[一 、使用电烙铁的安全性，应认真做到以下几点 1.使用前，应认真检查电源插头、电源线有无损坏。并检查烙铁头是否松动。 2.电烙铁使用中，不能用力敲击。要防止跌落。烙铁头上焊锡过多时，可用耐高温棉沾水擦掉。不可乱甩，以防烫伤他人。 3.焊接过程中，烙铁不能到处乱放。不焊时，应放在烙铁架上。注意电源线不可搭在烙铁头上，以防烫坏绝缘层而发生事故。 4.使用结束后，应及时切断电源，拔下电源插头。冷却后，再将电烙铁收回工具箱。 二 、使用电烙铁的焊接方法 1.右手持电烙铁。左手用尖嘴钳或镊子夹持元件或导线。焊接前，电烙铁要充分预热。烙铁头刃面上要吃锡，即带上一定量焊锡。 2.将烙铁头刃面紧贴在焊点处。电烙铁与水平面大约成60℃角。以便于熔化的锡从烙铁头上流到焊点上，烙铁头在焊点处停留的时间控制在2～3秒钟。 3.抬开烙铁头，左手仍持元件不动，待焊点处的锡冷却凝固后，才可松开左手。 4.焊接电路板时，一定要控制好时间，如果时间太长，电路板将被烧焦，或造成铜箔脱落。 5.从电路板上拆卸元件时，可将电烙铁头贴在焊点上，待焊点上的锡熔化后，将元件拔出。 三 、电烙铁焊接质量的判断 1.电烙铁焊接的锡点是否光亮、圆滑而无毛刺，以及锡量是否适中。 2.锡和被焊物融合是否牢固，不应有虚焊和假焊等现象。 四 、在电烙铁焊接中何为虚焊和假焊 1.虚焊是焊点处只有少量锡焊住，造成接触不良，时通时断。 2.假焊是指表面上好像焊住了，但实际上并没有焊上，有时用手一拔，引线或组容件就可以从焊点中拔出和脱落。 3.以上两种情况将给电子制作的调试和检修带来极大的困难。只有经过大量的、认真的焊接实践，才能避免这两种情况。 五 、电烙铁焊接中所需焊锡和助焊剂 1.焊锡：焊接电子元件，一般采用有松香芯的焊锡丝。这种焊锡丝，熔点较低，而且内含松香助焊剂，使用极为方便。 2.助焊剂：常用的助焊剂是松香或松香水（将松香溶于酒精中）。使用助焊剂，可以帮助清除金属表面的氧化物，利于焊接，又可保护烙铁头。如果焊接较大元件或导线时，也可采用焊锡膏，但它有一定腐蚀性，焊接后应及时清除残留物。]]></description>
			<content:encoded><![CDATA[<p>一 、使用电烙铁的安全性，应认真做到以下几点<br />
1.使用前，应认真检查电源插头、电源线有无损坏。并检查烙铁头是否松动。<br />
2.电烙铁使用中，不能用力敲击。要防止跌落。烙铁头上焊锡过多时，可用耐高温棉沾水擦掉。不可乱甩，以防烫伤他人。<span id="more-139"></span><br />
3.焊接过程中，烙铁不能到处乱放。不焊时，应放在烙铁架上。注意电源线不可搭在烙铁头上，以防烫坏绝缘层而发生事故。<br />
4.使用结束后，应及时切断电源，拔下电源插头。冷却后，再将电烙铁收回工具箱。<br />
二 、使用电烙铁的焊接方法<br />
1.右手持电烙铁。左手用尖嘴钳或镊子夹持元件或导线。焊接前，电烙铁要充分预热。烙铁头刃面上要吃锡，即带上一定量焊锡。<br />
2.将烙铁头刃面紧贴在焊点处。电烙铁与水平面大约成60℃角。以便于熔化的锡从烙铁头上流到焊点上，烙铁头在焊点处停留的时间控制在2～3秒钟。<br />
3.抬开烙铁头，左手仍持元件不动，待焊点处的锡冷却凝固后，才可松开左手。<br />
4.焊接电路板时，一定要控制好时间，如果时间太长，电路板将被烧焦，或造成铜箔脱落。<br />
5.从电路板上拆卸元件时，可将电烙铁头贴在焊点上，待焊点上的锡熔化后，将元件拔出。<br />
三 、电烙铁焊接质量的判断<br />
1.电烙铁焊接的锡点是否光亮、圆滑而无毛刺，以及锡量是否适中。<br />
2.锡和被焊物融合是否牢固，不应有虚焊和假焊等现象。<br />
四 、在电烙铁焊接中何为虚焊和假焊<br />
1.虚焊是焊点处只有少量锡焊住，造成接触不良，时通时断。<br />
2.假焊是指表面上好像焊住了，但实际上并没有焊上，有时用手一拔，引线或组容件就可以从焊点中拔出和脱落。<br />
3.以上两种情况将给电子制作的调试和检修带来极大的困难。只有经过大量的、认真的焊接实践，才能避免这两种情况。<br />
五 、电烙铁焊接中所需焊锡和助焊剂<br />
1.焊锡：焊接电子元件，一般采用有松香芯的焊锡丝。这种焊锡丝，熔点较低，而且内含松香助焊剂，使用极为方便。<br />
2.助焊剂：常用的助焊剂是松香或松香水（将松香溶于酒精中）。使用助焊剂，可以帮助清除金属表面的氧化物，利于焊接，又可保护烙铁头。如果焊接较大元件或导线时，也可采用焊锡膏，但它有一定腐蚀性，焊接后应及时清除残留物。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/electric-iron-welding.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSEK/VDX 标准与车控电子产品开发</title>
		<link>http://www.zzlab.com/osek-vdx-standard-electronic-product-development-and-vehicle-control.html</link>
		<comments>http://www.zzlab.com/osek-vdx-standard-electronic-product-development-and-vehicle-control.html#comments</comments>
		<pubDate>Sat, 10 Apr 2010 07:20:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Control]]></category>
		<category><![CDATA[About Electronic]]></category>
		<category><![CDATA[CAN总线]]></category>
		<category><![CDATA[OSEK/VDX]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/osek-vdx-standard-electronic-product-development-and-vehicle-control.html</guid>
		<description><![CDATA[摘要 汽车产业是我国国民经济的支柱产业;汽车电子产品是汽车的重要组成部分。将汽车电子产品分为车载电子产品和车控电子产品,并分析车控电子产品的嵌入式技术基础。通过对当前国际上主流车控软件标准OSEK/VDX的分析,提出我国自主发展车控电子的基于OSEK/VDX的产品开发流程;总结车控电子产品发展的趋势。 关键词 车控电子 嵌入式技术 OSEK/VDX CAN总线 智能汽车环境 1简介 汽车工业是技术密集、资金密集、综合性强、附加值高、经济效益好的产业。汽车工业的水平与规模是一个国家综合国力的体现。据统计,2002年,中国汽车的生产量为325万辆;2003年1至8月,国内汽车产量272.8万辆,同比增长36％;轿车销售量占国内汽车销售量的42.5％。我国已成为世界第五大汽车生产国。 汽车电子化是现代汽车发展的重要标志之一。目前世界每辆汽车采用电子装置的情况已成为衡量这部汽车水平高低的主要标志。国外汽车电子系统在汽车价格中所占比例已达 30％以上（我国目前仅为10％以内）,而且这一比例还在不断扩大。为了加强市场竞争能力,国外广泛采用 16～32位微处理器,以及广泛采用更先进的传感器,使汽车的功能从对汽车自身的控制管理扩大到&#8221;汽车－人－环境&#8221;这样一个大系统的信息获取、处理和控制。 与国外相比,我国的汽车电子工业起点低,技术装备水平较低,没有掌握核心技术。伴随着我国汽车需求的强劲增长,我们应抓住国外汽车生成基地向我国转移的机遇,大力发展自主产权的汽车电子控制技术,促进我国汽车电子控制产品开发水平升级。 2 汽车电子产品的分类及嵌入式技术应用 按照对汽车行驶性能作用的影响划分,可以把汽车电子产品归纳为两类。一类是车控电子&#8211;汽车电子控制装置。汽车电子控制装置要和车上机械系统进行配合使用,即所谓&#8221;机电结合&#8221;的汽车电子装置。它们包括发动机、底盘、车身电子控制,例如电子燃油喷射系统、制动防抱死控制、防滑控制、牵引力控制、电子控制悬架、电子控制自动变速器、电子动力转向等。另一类是车载电子&#8211;车载汽车电子装置。车载汽车电子装置是在汽车环境下能够独立使用的电子装置,与汽车本身的性能并无直接关系。它们包括汽车信息系统（行车电脑）、导航系统、汽车音响及电视娱乐系统、车载通信系统、上网设备等。 汽车电子的技术基础是嵌入式技术。在过去的几十年里,嵌入式技术发展迅速。随着后PC时代的来临,计算广泛的嵌入到应用中去,嵌入式系统将成为未来计算的主要存在方式。应用的牵引和计算环境的变迁推动了嵌入式技术的发展。嵌入式技术与行业的结合又带动了行业的发展。汽车的电子化、信息化是嵌入式技术在汽车行业的应用。 车控电子产品是一个个分布在汽车上的电子控制单元（ECU）、智能传感器（Smart Sensor）等功能单元器件。这些器件通过总线连接在一起组成一个子系统。它们可以以适合自己的协议,如Lin、J1939等进行通信。不同的子系统也通过总线组成更大的网络。其中智能传感器（Smart Sensor）是一个以工业现场总线为基础,以CPU为处理核心,以数字通信为变送方式的传感器和变送器的统一体。与传统的Sensor相比,Smart Sensor增加了数字通信功能,面向网络,具有联网功能。 3 车控电子产品系统平台&#8211;OSEK/VDX 为了满足日益庞大复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商的控制模块间的可兼容性。1993年,德国汽车工业界联合推出了汽车电子的开放式系统及接口&#8211;OSEK/VDX(Open Systems and the Corresponding Interfaces For Automotive Electronics)规范,旨在为汽车上的分布控制单元提供一个开放结构的工业标准。OSEK/VDX 规范从实时操作系统RTOS（RealTime Operating System）、软件接口、通信和网络管理等方面对汽车的电子控制软件开发平台作了较为全面的定义与规定。 它所提出的一整套解决方案是未来汽车电子软件开发的发展方向。目前,一些公司推出了符合OSEK/VDX规范的操作系统并得到了OSEK/VDX委员会的认证,如 OSEK Works、OSEKOS、OSEKTurbo等。OSEK/VDX标准包括以下四部分：OSEK/VDX操作系统规范（OSEK Operating System,OSEK OS）, OSEK/VDX通信规范（OSEK Communication,OSEK COM）, OSEK/VDX网络管理规范（OSEK Network Management,OSEK NM）以及OSEK/VDX实现语言（OSEK Implementation Language,OSEK OIL）。采用符合OSEK/VDX标准的嵌入式实时操作系统可以提高产品代码的复用率、降低开发成本、缩短产品开发周期。使用兼容OSEK/VDX标准的嵌入式实时操作系统的应用架构如图1所示。 下面分别对OSEK规范的操作系统部分（OS）、通信部分（COM）、网络管理部分（NM）、实现语言部分（OIL）、运行调试接口部分（ORTI）等进行介绍。 3.1 OSEK [...]]]></description>
			<content:encoded><![CDATA[<p>摘要 汽车产业是我国国民经济的支柱产业;汽车电子产品是汽车的重要组成部分。将汽车电子产品分为车载电子产品和车控电子产品,并分析车控电子产品的嵌入式技术基础。通过对当前国际上主流车控软件标准OSEK/VDX的分析,提出我国自主发展车控电子的基于OSEK/VDX的产品开发流程;总结车控电子产品发展的趋势。<span id="more-137"></span></p>
<p>关键词 车控电子 嵌入式技术 OSEK/VDX CAN总线 智能汽车环境</p>
<p>1简介<br />
汽车工业是技术密集、资金密集、综合性强、附加值高、经济效益好的产业。汽车工业的水平与规模是一个国家综合国力的体现。据统计,2002年,中国汽车的生产量为325万辆;2003年1至8月,国内汽车产量272.8万辆,同比增长36％;轿车销售量占国内汽车销售量的42.5％。我国已成为世界第五大汽车生产国。<br />
汽车电子化是现代汽车发展的重要标志之一。目前世界每辆汽车采用电子装置的情况已成为衡量这部汽车水平高低的主要标志。国外汽车电子系统在汽车价格中所占比例已达 30％以上（我国目前仅为10％以内）,而且这一比例还在不断扩大。为了加强市场竞争能力,国外广泛采用 16～32位微处理器,以及广泛采用更先进的传感器,使汽车的功能从对汽车自身的控制管理扩大到&#8221;汽车－人－环境&#8221;这样一个大系统的信息获取、处理和控制。<br />
与国外相比,我国的汽车电子工业起点低,技术装备水平较低,没有掌握核心技术。伴随着我国汽车需求的强劲增长,我们应抓住国外汽车生成基地向我国转移的机遇,大力发展自主产权的汽车电子控制技术,促进我国汽车电子控制产品开发水平升级。<br />
2 汽车电子产品的分类及嵌入式技术应用<br />
按照对汽车行驶性能作用的影响划分,可以把汽车电子产品归纳为两类。一类是车控电子&#8211;汽车电子控制装置。汽车电子控制装置要和车上机械系统进行配合使用,即所谓&#8221;机电结合&#8221;的汽车电子装置。它们包括发动机、底盘、车身电子控制,例如电子燃油喷射系统、制动防抱死控制、防滑控制、牵引力控制、电子控制悬架、电子控制自动变速器、电子动力转向等。另一类是车载电子&#8211;车载汽车电子装置。车载汽车电子装置是在汽车环境下能够独立使用的电子装置,与汽车本身的性能并无直接关系。它们包括汽车信息系统（行车电脑）、导航系统、汽车音响及电视娱乐系统、车载通信系统、上网设备等。<br />
汽车电子的技术基础是嵌入式技术。在过去的几十年里,嵌入式技术发展迅速。随着后PC时代的来临,计算广泛的嵌入到应用中去,嵌入式系统将成为未来计算的主要存在方式。应用的牵引和计算环境的变迁推动了嵌入式技术的发展。嵌入式技术与行业的结合又带动了行业的发展。汽车的电子化、信息化是嵌入式技术在汽车行业的应用。<br />
车控电子产品是一个个分布在汽车上的电子控制单元（ECU）、智能传感器（Smart Sensor）等功能单元器件。这些器件通过总线连接在一起组成一个子系统。它们可以以适合自己的协议,如Lin、J1939等进行通信。不同的子系统也通过总线组成更大的网络。其中智能传感器（Smart Sensor）是一个以工业现场总线为基础,以CPU为处理核心,以数字通信为变送方式的传感器和变送器的统一体。与传统的Sensor相比,Smart Sensor增加了数字通信功能,面向网络,具有联网功能。<br />
3 车控电子产品系统平台&#8211;OSEK/VDX<br />
为了满足日益庞大复杂的汽车电子控制软件的开发需要,实现应用软件的可移植性和不同厂商的控制模块间的可兼容性。1993年,德国汽车工业界联合推出了汽车电子的开放式系统及接口&#8211;OSEK/VDX(Open Systems and the Corresponding Interfaces For Automotive Electronics)规范,旨在为汽车上的分布控制单元提供一个开放结构的工业标准。OSEK/VDX 规范从实时操作系统RTOS（RealTime Operating System）、软件接口、通信和网络管理等方面对汽车的电子控制软件开发平台作了较为全面的定义与规定。<br />
它所提出的一整套解决方案是未来汽车电子软件开发的发展方向。目前,一些公司推出了符合OSEK/VDX规范的操作系统并得到了OSEK/VDX委员会的认证,如 OSEK Works、OSEKOS、OSEKTurbo等。OSEK/VDX标准包括以下四部分：OSEK/VDX操作系统规范（OSEK Operating System,OSEK OS）, OSEK/VDX通信规范（OSEK Communication,OSEK COM）, OSEK/VDX网络管理规范（OSEK Network Management,OSEK NM）以及OSEK/VDX实现语言（OSEK Implementation Language,OSEK OIL）。采用符合OSEK/VDX标准的嵌入式实时操作系统可以提高产品代码的复用率、降低开发成本、缩短产品开发周期。使用兼容OSEK/VDX标准的嵌入式实时操作系统的应用架构如图1所示。</p>
<p>下面分别对OSEK规范的操作系统部分（OS）、通信部分（COM）、网络管理部分（NM）、实现语言部分（OIL）、运行调试接口部分（ORTI）等进行介绍。<br />
3.1 OSEK OS规范<br />
OSEK OS规范定义操作系统内核的实现机制和应用编程接口（API）,包括任务管理机制、中断处理机制、事件机制、资源管理机制、报警器管理机制等及相关标准的应用编程接口。<br />
3.2 OSEK COM规范<br />
OSEK COM规范（OSEK Communication Specification）为汽车ECU应用软件提供了统一的通信环境。通过定义应用软件通信接口以及ECU内部通信和ECU外部通信,OSEK COM规范提高了应用软件模块的可移植性。OSEK COM 提供了多种服务,以方便在任务与任务之间、中断服务程序与中断服务程序之间以及任务与中断服务程序之间发送数据。<br />
OSEK COM 规范的目的是支持应用软件的移植性、重用性和相互合作性。应用程序接口隐藏了内部和外部通信的区别,同样也隐藏了不同的通信协议、总线系统和网络。<br />
OSEK COM中的通信是基于消息的。消息包括了特定应用的数据。消息和消息属性通过OSEK实现语言(OIL)静态配置。消息的内容和使用方法与OSEK COM无关。OSEK COM允许0长度的消息存在。在内部通信情况下,交互层IL(Interaction Layer)使消息数据立即发送到接收方。在外部通信情况下,IL将1个或多个消息压缩成指定的交互层协议数据单元(IPDU),并把它们传递到下层处理,如图2所示。 内部通信的功能性是外部通信功能性的子集。交互层里的消息管理者是基于消息对象的。消息对象存在于发送端的是&#8221;发送消息对象&#8221;,存在于接收端的是&#8221;接收消息对象&#8221;。</p>
<p>交互层和下层通信的数据被组织称IPDUs,包括一个或多个消息。一个消息必须占据在IPDU中连续的位而且不能被分离,在IPDUs中交叉。在IPDUs中消息被位排列。消息的大小在位中说明。交互层提供了应用程序接口（API）来处理消息,API包括初始化、数据传送和通信管理的服务。在网络上传送消息的服务是非阻塞的,一个发送消息的服务可能不能返回一个最终的发送状态,因为网络中的传送仍在进行之中。OSEK COM为应用程序提供了通知机制来决定传送或接收的状态。<br />
3.3 OSEK NM规范<br />
对于由不同生产商生产的汽车ECU产品,它们有通过串行数据交换连接成网络的趋势。因此,为了避免重复劳动和缩短开发时间,需要有一个基础性的标准。OSEK NM规范（OSEK Network Management system specification）为提高ECU产品的网络互连能力提供了一个网络连接标准。OSEK NM任务的目的是提高ECU产品网络通信的安全性和可靠性。OSEK NM规范规定了网络管理的机制和应用编程接口（API）。采用OSEK NM规范的ECU产品具有以下功能：<br />
◆ 经过授权后,每一个节点必须是可以访问的;<br />
◆ 在允许访问失败的情况下,具有最大容忍限度;<br />
◆ 支持网络诊断。<br />
作为一个基础的配置,遵守OSEK规范的网络管理实现必须应用在网络的所有节点。每一个节点都能在规定的间隔内获得整个网络的状态信息。OSEK NM为网络监控提供了两种机制：一种是通过监控应用的消息进行间接监控;另一种是对于特定的网络管理利用标记机制进行直接监控。OSEK NM包括以下部分：<br />
◆ OSEK NM与应用程序的接口（API）;<br />
◆ 节点监控的算法;<br />
◆ OSEK NM与OSEK COM的接口;<br />
◆ 转换到睡眠状态的算法;<br />
◆ OSEK NM协议数据单元（NMPDU）。<br />
图3说明了OSEK NM在整个系统中的位置及其与其他部分的关系。</p>
<p>3.4OSEK实现语言规范<br />
为了达到软件可移植的目标,OSEK OIL规范（OSEK Implementation Language Specification）定义了一种配置和使用OSEK应用的方法。图4表示了一个遵守OSEK规范的应用开发过程。OIL文件可以是手写的或者是系统配置工具产生的。</p>
<p>OIL提供一种在特定CPU中配置OSEK应用的机制。每个CPU对应一个OIL描述,所有的OSEK系统对象用OIL对象来描述。OSEK应用的OIL描述是一组OIL对象的组合,CPU是这些OIL对象的容器。OIL明确地为每个OIL对象定义了所有标准属性。每个OSEK应用可以定义附加的特殊执行属性和引用。每个OSEK应用可以限制每个属性的取值范围。<br />
OIL中的对象包括：CPU（处理器）、OS（操作系统）、Appmode（应用模式）、Isr（中断服务）、Resource（资源）、Task（任务）、Counter（记数器）、Event（事件）、Alarm（报警器）、Com（通信子系统）、Message（消息）、Ipdu（交互层协议数据单元）、NM（网络管理）。<br />
3.5 OSEK ORTI规范<br />
OSEK ORTI规范（OSEK RunTime Interface Specification）为OSEK操作系统开发工具提供了统一的接口。通过OSEK ORTI,使调试工具可以获取和显示操作系统的运行状态和性能、各种任务的状态、各种操作系统对象的状态等信息。ORTI文件是由系统生成器在系统生成阶段产生的。ORTI使用KIOL语言将操作系统内核信息传递给调试器,同时为OSEK标准对象定义了一些的语法规则。ORTI信息是通过ASCII文本文件提供的。由于OSEK/VDX是基于静态配置的,因此,ORTI不支持动态的表示和配置数据。<br />
OSEK ORTI规范包括Part A和Part B两部分：Part A介绍了ORTI为调试工具定义的操作系统内核对象的语言（Kernel Object Interface Language,KOIL）;Part B描述了OSEK/VDX标准对象、属性和它们的含义。<br />
3.5.1 ORTI文件结构<br />
ORTI文件包含版本信息部分、声明部分和信息部分。版本信息部分描述了KOIL和内核的版本。对于ORTI来讲,内核的版本是ORTI标准的版本号。声明部分声明ORTI实现中使用的内核类型,相当于C语言中的结构声明。它描述了访问内核对象所包含数据的方法。该部分详细说明了给定属性的显示名称。信息部分包含了所有给定系统声明部分所声明的方法,描述了计算或引用所需属性的方法。信息部分还提供了所需属性的静态值和表达式。<br />
3.5.2 标准的ORTI对象及属性<br />
OS对象,包含正在运行的任务、正在运行的优先级、正在运行的中断处理程序、操作系统服务、最近的错误、当前应用的模式等属性。<br />
任务对象,包含优先级、状态、堆栈、活动状态、上下文等属性。<br />
上下文对象,包含地址、大小等两个属性。<br />
堆栈对象,包含大小、基地址、堆栈方向、填充模式等四个属性。<br />
报警器对象,包含报警时间、周期、状态、动作、记数器等五个属性。<br />
资源对象,包含状态、资源锁、优先级等三个属性。<br />
消息容器对象,包含消息名称、类型、队列大小、队列记数器、当前消息地址等五个属性。<br />
4 车控电子产品的开发流程<br />
车控电子产品是软硬件结合的嵌入式系统。为了节约资源,缩短产品开发周期,一般应采取软硬件同步开发的方案,如图5所示。车控电子产品的开发工具对软硬件的同步开发、调试提供了很好的支持。车控电子产品的软件开发分为功能描述、软件设计、代码生成、操作系统环境下高级调试等步骤。车控电子产品的硬件开发分为硬件描述、硬件设计、硬件调试等步骤。当软件设计完成后,通过使用相应的工具,完成在虚拟ECU平台上的验证。当硬件设计完成后,与硬件一起进行软硬件集成调试。通过这种开发方式,缩短了产品上市的时间。</p>
<p>目前,汽车车控电子产品软件开发流程是&#8221;V&#8221;形开发流程,如图6所示。&#8221;V&#8221;形开发流程分为五个阶段,即功能设计、原型仿真、代码生成、硬件在回路仿真&#8211;HIL、标定。</p>
<p>在功能设计阶段使用的主要工具是MATLAB。通过使用MATLAB提供的Simulink、Stateflow等工具,完成控制方案的设计、功能模块的设计、控制算法的设计等任务,并进行初步的仿真模拟工作。在原型仿真阶段使用的主要工具是dSPACE。使用dSPACE提供的快速控制原型&#8211;RCP工具完成离线的仿真工作。在开始该阶段之前,需要使用Real Time Workshop、Targetlink等工具完成由Simulink、Stateflow等产生的代码向标准 C代码的转换工作。在进行向标准 C代码的转换过程中,可以根据需要加入符合OSEK规范的嵌入式实时操作系统。在代码生产阶段使用图7车控电子产品代码生成过程的主要工具是CodeWarrior。通过使用CodeWarrior提供的编译器、调试器等工具,完成从标准C代码向目标硬件平台上的产品代码的转换工作。</p>
<p>结语</p>
<p>我国自主发展汽车车控产品尚处于起步阶段。本文简要介绍了车控产品的系统平台&#8211;OSEK/VDX规范,并给出了一个基于OSEK/VDX规范的简单的车控电子开发模型。在这个模型中,要求开发者熟练使用国际上主流的开发工具,以提高开发效率,缩短开发时间。</p>
<p>参考文献<br />
1Designing an OSEK/VDX Compliant RTOS for the C16x. Andrew Coombes, CEng,http://www.dspace.com<br />
2Experience with an Advanced Design Flow with OSEK/VDX compliant Code Generation for Automotive ECU&#8221;s. Manfred Thanner, Motorola GmbH ; Raz Yerushalmi, I-Logix, http://www.omimo.be/magazine/01q1/2001q1_p006.pdf<br />
3ModelBased Software Development for Electronic Control Units (ECUs). Peter Bechberger http://www.dspaceinc.com/ww/en/pub/company/ medien/papers/73_e.htm<br />
4Connecting Simulink to OSEK/VDX: Automatic Code Generation for RealTime Operating Systems with TargetLink, Lutz K ster, Thomas Thomsen, Ralf Stracke, http://www.dspace.com<br />
5OSEK/VDXCompliant Embedded Development Solution for Automotive Applications. Jennifer Hubert, http://www.dspace.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/osek-vdx-standard-electronic-product-development-and-vehicle-control.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几款代码转流程图软件</title>
		<link>http://www.zzlab.com/several-code-change-to-flowchart-software.html</link>
		<comments>http://www.zzlab.com/several-code-change-to-flowchart-software.html#comments</comments>
		<pubDate>Tue, 06 Apr 2010 09:36:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AutoFlowchart]]></category>
		<category><![CDATA[flowchart]]></category>
		<category><![CDATA[流程图]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=120</guid>
		<description><![CDATA[今天在写程序时，感到程序中的逻辑判断挺多的，一个函数里的判断太多后自己前后翻来翻去自己搞得都有点晕。所以就想画出流程图来。但是为了这事来画流程图却觉得有点麻烦，这就想到有没有通过通过代码来生成流程图的工具。没想到网上还真有这么些软件。首先搜到的就是CSDN上一位朋友提到的AutoFlowchart。 AutoFlowchart 是一个根据源程序生成流程图的工具，主要用于对已有的程序进行分析，并为制作项目文档做准备。它生成的流程图支持展开/合拢，缩放和移动也很方便， 并且可以预设流程图的长宽和纵向横向间距。你可以将流程图导出到WORD文档或Bmp图像文件。它支持C,C++,VC++(Visual C++ .NET),Delphi(Object Pascal)。此软件为收费软件，官方网址：http://www.ezprog.com/ 主界面 流程图 导出至Visio中 导出至word中 另有一个Code Visual to Flowchart (原先的 SourceCode to Flowchart)是一款可以用于迅速地分析源代码并且在流程图窗口当中显示当前被编辑的代码的图形化描述的设计编辑器软件.该软件由一个代码编辑器和 一个流程图窗口组成并且支持许多编程语言,诸如C/C++, Java/JavaScript, VB/BASIC/ASP, Delphi/Pascal, PHP, Powerbuilder, Perl 以及其它语言.此外, Code Visual to Flowchart 提供了若干个诸如语法突出显示,书签和更多方面的通用编辑功能。 SourceCode to flowchart是一个代码维护与管理软件，它能够快速的分析你的源代码，并在流程图窗口中显示出目前代码的图示。该软件具有一个代码编辑器和一个流程图窗口。流程图的引擎很快，在你查看源代码的时候流程图就能够一点一点地显示出来了。你还可以输出流程图。该软件为收费软件，官方网址：http://www.fatesoft.com EasyStructure 从C来源自动地生成流程图和资源结构树。EasyStructure工具从它的分析和结果字符理解源代码。该软件可以被浏览、打印或者拷贝。流程图可以被 定制。树形浏览以一个你可以通过它的结构以及它的原始资源随意地进行浏览、组织的形式显示资源。可以使用树节点来找到包含的各种不同类型的声明。最主要的是该软件为免费软件。官方网址：http://www.ablegoldcomputers.com/ 更多图片请到官方网站查看。 Crystal FLOW for C 从源代码生成流程图。获得一个带有流程图的清晰代码。校验逻辑功能的正确性。检测错误。使用流程图回顾和重编代码。导出流程图为BMP 或者JPG格式文件以及用于Visio的XML文件。该软件提供代码和注释的自动格式化功能。为功能调用定制形状。利用它可以把自己或别人写的代码格式化，并可以生成直观的流程图、交叉调用图、直观的注释等。该软件为收费软件，官方网址：http://www.sgvsarc.com Technorati : AutoFlowchart, flowchart, 流程图 Del.icio.us : AutoFlowchart, flowchart, 流程图 [...]]]></description>
			<content:encoded><![CDATA[<p style="margin: 0cm 0cm 0pt;">今天在写程序时，感到程序中的逻辑判断挺多的，一个函数里的判断太多后自己前后翻来翻去自己搞得都有点晕。所以就想画出流程图来。但是为了这事来画流程图却觉得有点麻烦，这就想到有没有通过通过代码来生成流程图的工具。没想到网上还真有这么些软件。首先搜到的就是CSDN上一位朋友提到的AutoFlowchart。<span id="more-120"></span></p>
<p style="margin: 0cm 0cm 0pt;">AutoFlowchart 是一个根据源程序生成流程图的工具，主要用于对已有的程序进行分析，并为制作项目文档做准备。它生成的流程图支持展开/合拢，缩放和移动也很方便， 并且可以预设流程图的长宽和纵向横向间距。你可以将流程图导出到WORD文档或Bmp图像文件。它支持C,C++,VC++(Visual C++ .NET),Delphi(Object Pascal)。此软件为收费软件，官方网址：http://www.ezprog.com/</p>
<p style="margin: 0cm 0cm 0pt; text-align: center;"><img src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_001n262947d7.png" alt="" width="500" height="366" /></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">主界面</p>
<p style="margin: 0cm 0cm 0pt; text-align: center;"><img style="display: inline; width: 500px; height: 523px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_003p11c6cdd8.png" alt="" width="500" height="523" /></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">流程图</p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">
<p style="margin: 0cm 0cm 0pt; text-align: center;"><img style="display: inline; width: 500px; height: 523px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_004n763b8b52.png" alt="" width="500" height="523" /></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">导出至Visio中</p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">
<p style="margin: 0cm 0cm 0pt; text-align: center;"><img style="display: inline; width: 500px; height: 455px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_005n67b84309.png" alt="" width="500" height="455" /></p>
<p style="margin: 0cm 0cm 0pt; text-align: center;">导出至word中</p>
<p>另有一个Code Visual to Flowchart (原先的 SourceCode to Flowchart)是一款可以用于迅速地分析源代码并且在流程图窗口当中显示当前被编辑的代码的图形化描述的设计编辑器软件.该软件由一个代码编辑器和 一个流程图窗口组成并且支持许多编程语言,诸如C/C++, Java/JavaScript, VB/BASIC/ASP, Delphi/Pascal, PHP, Powerbuilder, Perl 以及其它语言.此外, Code Visual to Flowchart 提供了若干个诸如语法突出显示,书签和更多方面的通用编辑功能。</p>
<p>SourceCode to flowchart是一个代码维护与管理软件，它能够快速的分析你的源代码，并在流程图窗口中显示出目前代码的图示。该软件具有一个代码编辑器和一个流程图窗口。流程图的引擎很快，在你查看源代码的时候流程图就能够一点一点地显示出来了。你还可以输出流程图。该软件为收费软件，官方网址：http://www.fatesoft.com</p>
<p style="text-align: center;"><img style="display: inline; width: 500px; height: 375px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_006nb0a63.png" alt="" width="500" height="375" /></p>
<p style="text-align: center;"><img style="display: inline; width: 500px; height: 375px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_007n5d2ea3c6.png" alt="" width="500" height="375" /></p>
<p style="margin: 0cm 0cm 0pt;">EasyStructure 从C来源自动地生成流程图和资源结构树。EasyStructure工具从它的分析和结果字符理解源代码。该软件可以被浏览、打印或者拷贝。流程图可以被 定制。树形浏览以一个你可以通过它的结构以及它的原始资源随意地进行浏览、组织的形式显示资源。可以使用树节点来找到包含的各种不同类型的声明。最主要的是该软件为免费软件。官方网址：<a href="http://www.ablegoldcomputers.com/">http://www.ablegoldcomputers.com/</a> 更多图片请到官方网站查看。</p>
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt; text-align: center;">
<p style="margin: 0cm 0cm 0pt;">
<p style="margin: 0cm 0cm 0pt;">Crystal FLOW for C 从源代码生成流程图。获得一个带有流程图的清晰代码。校验逻辑功能的正确性。检测错误。使用流程图回顾和重编代码。导出流程图为BMP 或者JPG格式文件以及用于Visio的XML文件。该软件提供代码和注释的自动格式化功能。为功能调用定制形状。利用它可以把自己或别人写的代码格式化，并可以生成直观的流程图、交叉调用图、直观的注释等。该软件为收费软件，官方网址：http://www.sgvsarc.com</p>
<p style="margin: 0cm 0cm 0pt; text-align: center;"><img style="display: inline; width: 500px; height: 355px;" src="http://www.zzlab.com/wp-content/uploads/2010/04/zrclip_010p461acd27.png" alt="" width="500" height="355" /></p>
<p class="zoundry_raven_tags"><!-- Tag links generated by Zoundry Raven. Do not manually edit. http://www.zoundryraven.com --><span class="ztags"><span class="ztagspace">Technorati</span> : <a class="ztag" rel="tag" href="http://www.technorati.com/tag/AutoFlowchart">AutoFlowchart</a>, <a class="ztag" rel="tag" href="http://www.technorati.com/tag/flowchart">flowchart</a>, <a class="ztag" rel="tag" href="http://www.technorati.com/tag/%E6%B5%81%E7%A8%8B%E5%9B%BE">流程图</a></span><br />
<span class="ztags"><span class="ztagspace">Del.icio.us</span> : <a class="ztag" rel="tag" href="http://del.icio.us/tag/AutoFlowchart">AutoFlowchart</a>, <a class="ztag" rel="tag" href="http://del.icio.us/tag/flowchart">flowchart</a>, <a class="ztag" rel="tag" href="http://del.icio.us/tag/%E6%B5%81%E7%A8%8B%E5%9B%BE">流程图</a></span><br />
<span class="ztags"><span class="ztagspace">Zooomr</span> : <a class="ztag" rel="tag" href="http://www.zooomr.com/search/photos/?q=AutoFlowchart">AutoFlowchart</a>, <a class="ztag" rel="tag" href="http://www.zooomr.com/search/photos/?q=flowchart">flowchart</a>, <a class="ztag" rel="tag" href="http://www.zooomr.com/search/photos/?q=%E6%B5%81%E7%A8%8B%E5%9B%BE">流程图</a></span><br />
<span class="ztags"><span class="ztagspace">Flickr</span> : <a class="ztag" rel="tag" href="http://www.flickr.com/photos/tags/AutoFlowchart">AutoFlowchart</a>, <a class="ztag" rel="tag" href="http://www.flickr.com/photos/tags/flowchart">flowchart</a>, <a class="ztag" rel="tag" href="http://www.flickr.com/photos/tags/%E6%B5%81%E7%A8%8B%E5%9B%BE">流程图</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/several-code-change-to-flowchart-software.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PID调节口诀</title>
		<link>http://www.zzlab.com/pid-adjustment-formulas.html</link>
		<comments>http://www.zzlab.com/pid-adjustment-formulas.html#comments</comments>
		<pubDate>Sat, 03 Apr 2010 04:52:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Control]]></category>
		<category><![CDATA[微分控制]]></category>
		<category><![CDATA[积分控制]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[PID 控制]]></category>
		<category><![CDATA[比例控制]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=119</guid>
		<description><![CDATA[PID常用口诀：参数整定找最佳，从小到大顺序查，先是比例后积分，最后再把微分加，曲线振荡很频繁，比例度盘要放大，曲线漂浮绕大湾，比例度盘往小扳，曲线偏离回复慢，积分时间往下降，曲线波动周期长，积分时间再加长，曲线振荡频率快，先把微分降下来，动差大来波动慢，微分时间应加长，理想曲线两个波，前高后低4比1。]]></description>
			<content:encoded><![CDATA[<p>1.PID常用口诀：参数整定找最佳，从小到大顺序查，先是比例后积分，最后再把微分加，曲线振荡很频繁，比例度盘要放大，曲线漂浮绕大湾，比例度盘往小扳，曲线偏离回复慢，积分时间往下降，曲线波动周期长，积分时间再加长，曲线振荡频率快，先把微分降下来，动差大来波动慢，微分时间应加长，理想曲线两个波，前高后低4比1。<span id="more-119"></span></p>
<p>2.一看二调多分析；调节质量不会低2.PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照：温度T:P=20~60%,T= 180~600s,D=3-180s压力P:P=30~70%,T=24~180s,液位L:P=20~80%,T=60~300s,流量L:P= 40~100%,T=6~60s。</p>
<p>3.PID控制的原理和特点：在工程实际中，应用最为广泛的调节器控制规律为比例、积分、微分控制，简称 PID控制，又称PID调节。PID控制器问世至 今已有近70年历史，它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握，或得不到精确的 数学模型时，控制理论的其它技术难以采用时，系统控制器的结构和参数必须依靠经验和现场调试来确定，这时应用PID控制技术最为方便。即当我们不完全了解 一个系统和被控对象，或不能通过有效的测量手段来获得系统参数时，最适合用PID控制技术。PID控制，实际中也有PI和PD控制。PID控制器就是根据系统的误差，利用比例、积分、微分计算出控制量进行控制的。比例（P）控制比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差（Steady-stateerror）。积分（I）控制在积分控制中，控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统，如果在进入稳态后存在稳态误差，则称这个控制系统是有稳态误差的或简称有差系统（SystemwithSteady- stateError）。为了消除稳态误差，在控制器中必须引入“积分项”。积分项对误差取决于时间的积分，随着时间的增加，积分项会增大。这样，即便误差很小，积分项也会随着时间的增加而加大，它推动控制器的输出增大使稳态误差进一步减小，直到等于零。因此，比例+积分(PI)控制器，可以使系统在进入稳态后无稳态误差。微分（D）控制在微分控制中，控制器的输出与输入误差信号的微分（即误差的变化率）成正比关系。自动控制系统在克服误差的调节过程中可 能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件（环节）或有滞后(delay)组件，具有抑制误差的作用，其变化总是落后于误差的变化。解决的办 法是使抑制误差的作用的变化“超前”，即在误差接近零时，抑制误差的作用就应该是零。这就是说，在控制器中仅引入“比例”项往往是不够的，比例项的作用仅是放大误差的幅值，而目前需要增加的是“微分项”，它能预测误差变化的趋势，这样，具有比例+微分的控制器，就能够提前使抑制误差的控制作用等于零，甚至为负值，从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象，比例+微分(PD)控制器能改善系统在调节过程中的动态特性.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/pid-adjustment-formulas.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PID调节的基本原理</title>
		<link>http://www.zzlab.com/the-basic-principle-of-pid-regulator.html</link>
		<comments>http://www.zzlab.com/the-basic-principle-of-pid-regulator.html#comments</comments>
		<pubDate>Tue, 30 Mar 2010 15:36:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Control]]></category>
		<category><![CDATA[开环控制系统]]></category>
		<category><![CDATA[阶跃响应]]></category>
		<category><![CDATA[闭环控制系统]]></category>
		<category><![CDATA[PID]]></category>
		<category><![CDATA[PID 控制]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/?p=118</guid>
		<description><![CDATA[在工程实际中，应用最为广泛的调节器控制规律为比例、积分、微分控制，简称PID控制，又称PID调节。 PID控制器问世至今已有近70年历史，它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。]]></description>
			<content:encoded><![CDATA[<p>在工程实际中，应用最为广泛的调节器控制规律为比例、积分、微分控制，简称PID控制，又称PID调节。 PID控制器问世至今已有近70年历史，它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。<span id="more-118"></span></p>
<p>1、开环控制系统</p>
<p>开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器(controller)的输出没有影响。在这种控制系统中，不依赖将被控量反送回来以形成任何闭环回路。</p>
<p>2、闭环控制系统</p>
<p>闭环控制系统(closed-loop control system)的特点是系统被控对象的输出(被控制量)会反送回来影响控制器的输出，形成一个或多个闭环。闭环控制系统有正反馈和负反馈，若反馈信号与系 统给定值信号相反，则称为负反馈( Negative Feedback)，若极性相同，则称为正反馈，一般闭环控制系统均采用负反馈，又称负反馈控制系统。闭环控制系统的例子很多。比如人就是一个具有负反馈 的闭环控制系统，眼睛便是传感器，充当反馈，人体系统能通过不断的修正最后作出各种正确的动作。如果没有眼睛，就没有了反馈回路，也就成了一个开环控制系 统。另例，当一台真正的全自动洗衣机具有能连续检查衣物是否洗净，并在洗净之后能自动切断电源，它就是一个闭环控制系统。</p>
<p>3、阶跃响应</p>
<p>阶跃响应是指将一个阶跃输入（step function）加到系统上时，系统的输出。稳态误差是指系统的响应进入稳态后，系统的期望输出与实际输出之差。控制系统的性能可以用稳、准、快三个字 来描述。稳是指系统的稳定性(stability)，一个系统要能正常工作，首先必须是稳定的，从阶跃响应上看应该是收敛的；准是指控制系统的准确性、控 制精度，通常用稳态误差来(Steady-state error)描述，它表示系统输出稳态值与期望值之差；快是指控制系统响应的快速性，通常用上升时间来定量描述。</p>
<p>4、PID控制的原理和特点</p>
<p>在工程实际中，应用最为广泛的调节器控制规律为比例、积分、微分控制，简称PID控制，又称PID调节。 PID控制器问世至今已有近70年历史，它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌 握，或得不到精确的数学模型时，控制理论的其它技术难以采用时，系统控制器的结构和参数必须依靠经验和现场调试来确定，这时应用PID控制技术最为方便。 即当我们不完全了解一个系统和被控对象，或不能通过有效的测量手段来获得系统参数时，最适合用PID控制技术。PID控制，实际中也有PI和PD控制。 PID控制器就是根据系统的误差，利用比例、积分、微分计算出控制量进行控制的。</p>
<p>比例（P）控制</p>
<p>比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差（Steady-state error）。</p>
<p>积分（I）控制</p>
<p>在积分控制中，控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统，如果在进入稳态后存在稳态 误差，则称这个控制系统是有稳态误差的或简称有差系统（System with Steady-state Error）。为了消除稳态误差，在控制器中必须引入“积分项”。积分项对误差取决于时间的积分，随着时间的增加，积分项会增大。这样，即便误差很小，积 分项也会随着时间的增加而加大，它推动控制器的输出增大使稳态误差进一步减小，直到等于零。因此，比例+积分(PI)控制器，可以使系统在进入稳态后无稳 态误差。</p>
<p>微分（D）控制</p>
<p>在微分控制中，控制器的输出与输入误差信号的微分（即误差的变化率）成正比关系。 自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件（环节）或有滞后(delay)组件，具有抑制误差的作用， 其变化总是落后于误差的变化。解决的办法是使抑制误差的作用的变化 “超前”，即在误差接近零时，抑制误差的作用就应该是零。这就是说，在控制器中仅引入“比例”项往往是不够的，比例项的作用仅是放大误差的幅值，而目前需 要增加的是“微分项”，它能预测误差变化的趋势，这样，具有比例+微分的控制器，就能够提前使抑制误差的控制作用等于零，甚至为负值，从而避免了被控量的 严重超调。所以对有较大惯性或滞后的被控对象，比例+微分(PD)控制器能改善系统在调节过程中的动态特性。</p>
<p>5、PID控制器的参数整定</p>
<p>PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分 时间和微分时间的大小。PID控制器参数整定的方法很多，概括起来有两大类：一是理论计算整定法。它主要是依据系统的数学模型，经过理论计算确定控制器参 数。这种方法所得到的计算数据未必可以直接用，还必须通过工程实际进行调整和修改。二是工程整定方法，它主要依赖工程经验，直接在控制系统的试验中进行， 且方法简单、易于掌握，在工程实际中被广泛采用。PID控制器参数的工程整定方法，主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点，其共同点 都是通过试验，然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数，都需要在实际运行中进行最后调整与完善。现在一般采 用的是临界比例法。利用该方法进行 PID 控制器参数的整定步骤如下：(1)首先预选择一个足够短的采样周期让系统工作；(2)仅加入比例控制环节，直到系统对输入的阶跃响应出现临界振荡，记下这 时的比例放大系数和临界振荡周期；(3)在一定的控制度下通过公式计算得到PID控制器的参数。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/the-basic-principle-of-pid-regulator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NXP ARM7内置看门狗使用注意</title>
		<link>http://www.zzlab.com/notice-for-using-nxp-arm7-watchdog.html</link>
		<comments>http://www.zzlab.com/notice-for-using-nxp-arm7-watchdog.html#comments</comments>
		<pubDate>Sat, 14 Nov 2009 11:51:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Electronic]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[中断]]></category>
		<category><![CDATA[喂狗]]></category>
		<category><![CDATA[看门狗]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/notice-for-using-nxp-arm7-watchdog.html</guid>
		<description><![CDATA[先看一下zlg的喂狗程序 void InitWdt(void) { &#160;&#160;&#160; WDTC = 0x5F0000;&#160;&#160;&#160;&#160;&#160; // 设置WDTC，喂狗重装值 &#160;&#160;&#160; WDMOD = 0&#215;03;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 设置并启动WDT &#160;&#160;&#160; RstWdt();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 进行喂狗操作 } void&#160; RstWdt(void) { &#160;&#160;&#160; WDFEED = 0xAA; &#160;&#160;&#160; WDFEED = 0&#215;55; } 表面上看来这段程序没有什么问题，如果你不用中断的话，或者是狗的值设置的比较长而中断出现的频率较低时也不容出现什么问题，但是隐患还是依然存在的。 在周立功的&#60;&#60;ARM微控制起基础与实战&#62;&#62;里关于看门狗喂狗寄存器WDFEED有一句话:&#160;&#160; &#34; 向WDFEED寄存器写入0XAA的下一个操作应当是向WDFEED寄存器写入0X55&#34;。这就说喂狗时向WDFEED写入0xAA和0&#215;55时中间是不能有任何间隔的，也就是在此期间不能被中断。如果我们的程序里用到中断就有可能导致喂狗失败从而导致系统复位。因此为了避免被中断，我们可以在喂狗是关闭中断，在喂狗结束时再开启中断。程序改写如下 void&#160; RstWdt(void) { &#160;&#160;&#160; IRQDisable(); &#160;&#160;&#160; WDFEED = 0xAA; &#160;&#160;&#160; WDFEED = 0&#215;55; &#160;&#160;&#160; IRQEnable(); } 这就好比在os中的临界段要关闭中断一样，在不应该被打断的地方先关中断处理完了再开中断。]]></description>
			<content:encoded><![CDATA[<p>先看一下zlg的喂狗程序 </p>
<blockquote><p>void InitWdt(void)      <br />{       <br />&#160;&#160;&#160; WDTC = 0x5F0000;&#160;&#160;&#160;&#160;&#160; // 设置WDTC，喂狗重装值       <br />&#160;&#160;&#160; WDMOD = 0&#215;03;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 设置并启动WDT       <br />&#160;&#160;&#160; RstWdt();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 进行喂狗操作       <br />}</p>
<p>void&#160; RstWdt(void)      <br />{       <br />&#160;&#160;&#160; WDFEED = 0xAA;       <br />&#160;&#160;&#160; WDFEED = 0&#215;55;       <br />}</p>
</blockquote>
<p>表面上看来这段程序没有什么问题，如果你不用中断的话，或者是狗的值设置的比较长而中断出现的频率较低时也不容出现什么问题，但是隐患还是依然存在的。</p>
<p>在周立功的&lt;&lt;ARM微控制起基础与实战&gt;&gt;里关于看门狗喂狗寄存器WDFEED有一句话:&#160;&#160; &quot; 向WDFEED寄存器写入0XAA的下一个操作应当是向WDFEED寄存器写入0X55&quot;。这就说喂狗时向WDFEED写入0xAA和0&#215;55时中间是不能有任何间隔的，也就是在此期间不能被中断。如果我们的程序里用到中断就有可能导致喂狗失败从而导致系统复位。因此为了避免被中断，我们可以在喂狗是关闭中断，在喂狗结束时再开启中断。程序改写如下 </p>
<blockquote><p>void&#160; RstWdt(void)    <br />{     <br />&#160;&#160;&#160; IRQDisable();     <br />&#160;&#160;&#160; WDFEED = 0xAA;     <br />&#160;&#160;&#160; WDFEED = 0&#215;55;     <br />&#160;&#160;&#160; IRQEnable();     <br />}</p></blockquote>
<p>这就好比在os中的临界段要关闭中断一样，在不应该被打断的地方先关中断处理完了再开中断。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/notice-for-using-nxp-arm7-watchdog.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lpc2138捕获应用实践</title>
		<link>http://www.zzlab.com/practice-of-using-capture-function-in-lpc2138.html</link>
		<comments>http://www.zzlab.com/practice-of-using-capture-function-in-lpc2138.html#comments</comments>
		<pubDate>Mon, 19 Oct 2009 15:25:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[About Electronic]]></category>
		<category><![CDATA[定时器]]></category>
		<category><![CDATA[红外解码]]></category>
		<category><![CDATA[LPC2138]]></category>
		<category><![CDATA[TFM 5380]]></category>
		<category><![CDATA[捕获]]></category>

		<guid isPermaLink="false">http://www.zzlab.com/practice-of-using-capture-function-in-lpc2138.html</guid>
		<description><![CDATA[由于要在电子显示屏上增加遥控功能，所以涉及到红外遥控的解码问题，红外接收采用的是TFM 5380，红外接收头输出脚接10k电阻上拉到+5V，用100P电容接到GND。用示波器观察输出信号，效果很好基本上红外编码能够吻合了。红外接收头的输出接到LPC2318的22脚，即P0.2/CAP0.0，此脚可用作定时器0的捕获输入，这样看来硬件估计是没有什么问题的啦。 程序开始将该端口选择为捕获输入,即 PINSEL0 = (PINSEL0 &#38; ~(0&#215;20)) &#124; 0&#215;20; 接着对设置定时器0中断 IRQEnable(); VICIntSelect = 0&#215;00000000; VICVectCntl0 = 0&#215;20 &#124; 0&#215;04; VICVectAddr0 = (uint32)Timer0_CapInt; VICIntEnable = 1 &#60;&#60; 4; 随后对定时器0进行初始化， T0PR = 99; //对Fpclk 100分频 T0CCR = 0&#215;05; //上升沿触发，允许中断 T0TC = 0; //定时器0清零 T0TCR = 1; //启用定时器0 这样对其进行初始化应该不会有任何问题的。在中断响应程序中根据T0TC的值来判断同步位和code中的0，1。同时对T0TC进行清零并清除中断标志。 进入调试状态后在中断响应程序内设置断点，发现程序跑起来后不断地产生中断，此时并未用遥控器进行操作。回头检查程序并未发现什么问题，又将例程拿来看看做了一下比较，除了所有的定时器和端口不一样外并无什么不同，因此排除程序的问题。再来看看硬件吧，将示波器接到LPC2318的22脚观察波形也没有看到任何边沿的跳变。问题出来了，貌似软件和硬件都没有问题啊，什么原因呢？通过不停的捣腾最后发现是多接了一个上拉电阻的原因，原来是CAP0.0脚上接了两个上拉电阻其中有一个是原先用作I2C时加的上拉，原本是想采用外部中断来接红外的，后来I2C没有上，觉得还用用捕获来做红外方便些，因此弄根线飞了过来。拿烙铁把电阻弄下来后定时器0的捕获中断便正常了，呵呵。]]></description>
			<content:encoded><![CDATA[<p>由于要在电子显示屏上增加遥控功能，所以涉及到红外遥控的解码问题，红外接收采用的是TFM 5380，红外接收头输出脚接10k电阻上拉到+5V，用100P电容接到GND。用示波器观察输出信号，效果很好基本上红外编码能够吻合了。红外接收头的输出接到LPC2318的22脚，即P0.2/CAP0.0，此脚可用作定时器0的捕获输入，这样看来硬件估计是没有什么问题的啦。</p>
<p> <span id="more-105"></span>
<p>程序开始将该端口选择为捕获输入,即 <br />PINSEL0 = (PINSEL0 &amp; ~(0&#215;20)) | 0&#215;20;</p>
<p>接着对设置定时器0中断 <br />IRQEnable(); <br />VICIntSelect = 0&#215;00000000; <br />VICVectCntl0 = 0&#215;20 | 0&#215;04; <br />VICVectAddr0 = (uint32)Timer0_CapInt; <br />VICIntEnable = 1 &lt;&lt; 4;</p>
<p>随后对定时器0进行初始化， <br />T0PR = 99; //对Fpclk 100分频 <br />T0CCR = 0&#215;05; //上升沿触发，允许中断 <br />T0TC = 0; //定时器0清零 <br />T0TCR = 1; //启用定时器0</p>
<p>这样对其进行初始化应该不会有任何问题的。在中断响应程序中根据T0TC的值来判断同步位和code中的0，1。同时对T0TC进行清零并清除中断标志。</p>
<p>进入调试状态后在中断响应程序内设置断点，发现程序跑起来后不断地产生中断，此时并未用遥控器进行操作。回头检查程序并未发现什么问题，又将例程拿来看看做了一下比较，除了所有的定时器和端口不一样外并无什么不同，因此排除程序的问题。再来看看硬件吧，将示波器接到LPC2318的22脚观察波形也没有看到任何边沿的跳变。问题出来了，貌似软件和硬件都没有问题啊，什么原因呢？通过不停的捣腾最后发现是多接了一个上拉电阻的原因，原来是CAP0.0脚上接了两个上拉电阻其中有一个是原先用作I2C时加的上拉，原本是想采用外部中断来接红外的，后来I2C没有上，觉得还用用捕获来做红外方便些，因此弄根线飞了过来。拿烙铁把电阻弄下来后定时器0的捕获中断便正常了，呵呵。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zzlab.com/practice-of-using-capture-function-in-lpc2138.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.384 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-07-30 12:05:43 -->
