2009年6月30日星期二

FreeDOS 用 USB Flash ��

FreeDOSUSB Flash ��[收藏]

最近因�突然需要��DOS 的程式, 想�用�碟����就好, 但容量又太小, 又不想灌在硬碟�, 因��完�次, 不知道下次哪��用到, �好之前某3C量�太俗���了一�2G的SD卡, 就拿��DOS��片吧..!!


我的Idea 是用USBFreeDOS, 然後在上面跑Watcom C/C++��DOS程式, 所以找了一些�料, �算�它搞定, 程式也�好了, 所以我就�步���一下, 也�大家�考


1. 下� FreeDOS 的�碟��影像� FDSTD.288.imz
2. 下�WinImage WinImage 8.0
3. 用WinImage 解� FSDTD.288.imz 到一�指定目�

4. 下� Format Utility for HP Drive Key or DiskOnKey USB Device �安�
5. �行HP USB Key :
a . �� Create a DOS startup Disk
b. 在using DOS system files located at : 的地方���由WinImage 解�的FreeDOS ��片目�

c. 按下Start 之後�始�行USB Flahs Disk 的 Format



6. �WinImage所解�的FreeDOS ��片�的�案完全拷��USB Flash Disk �, 因�HP USB Key程式只要�����, 而其它的FreeDOS的程式�是需要手�拷�

7. 重新��後, �入BIOS �, �定USB HDD ��(有的直接可以在HDD Boot Device priority 可以看到USB )�最�先的

8. �8呀....���..!!

相���

1. gentikayos - FreDOS on a USB Flash
2. Boot Disk Create USB

後� : 感�Rob提醒 USB Utility 下���已�修正

2009年6月26日星期五

[收藏]初探C++ Builder 2009的UnicodeString

初探C++ Builder 2009的UnicodeString

作者:Tuuzed(土仔)   发表于:2009年6月25日23:39:34
版权声明:可以任意转载,
转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.cppblog.com/tuuzed/archive/2009/06/26/88538.html



       下面两个问题一直困扰着我这个处于第1层的菜鸟:1、为什么卡巴斯基KIS2009简体中文版安装在繁体XP下能正常显示简体中文,而瑞星、金山等则是乱码?2、为什么简体的MS Word或Firefox能显示繁体中文(特指Big5编码)的内容?处于1层以上的程序员(见《程序员》6月杂志周伟明的《程序员的十层楼》)肯定已经笑出来了,请略过剩下的内容。。。

        这么说吧,如果想实现一个可以在简体中文系统中显示繁体中文的“记事本”,C++ Builder2009中如何实现?很多人(包括我)在没有了解各种字符编码以前,想当然地觉得既然支持Unicode了,那么直接使用TMemo的LoadFromFile方法直接load一个繁体中文的文档就能显示了。因为支持Unicode了嘛,Unicode就是在任何系统都能显示正常。好像很对,先试一下,初探嘛。

        一、不变的“简体中文”版
        既然支持Unicode,搞一个Form,放一个Button在上面,



 
      Caption先不要去动,用程序去修改:

      Form1->Caption = "简体中文";
       Button1->Caption = "汉字";





       简体XP下显示正常,可繁体XP下就显示乱码了。不是说支持Unicode了吗?跟踪调试一下:



        简体XP下,“汉字”的“汉”编码是0x6C49,而繁体XP下,“汉”的编码变成了0x7296。我们知道“汉”在Uunicode编码中是0x6C49,说明简体XP下是正确的,而繁体XP下就不正确了。为什么会有这样的情况发生?把断点设置在“Button1->Caption = "汉字";”这一句,再用F7一直跟踪。原来是CB2009在把“汉字”赋值给Button1->Caption前,先进行了Ansi到Unicode的转换,恰恰问题就在CB2009使用的这个函数:InternalUStrFromPCharLen(Dest, Source, Length, DefaultSystemCodePage);函数在实现过程中获取了系统默认的CodePage(http://www.cppblog.com/shenhuafeng/archive/2007/04/05/21336.html),而简体XP和繁体XP的CodePage不一样(一个为936,一个为950)导致在转换到UNICODE的时候结果不一致,也就导致到繁体XP下显示为乱码。如何解决呢?在CB2009的帮助“Unicode in RAD Studio”一章中的“Issues(问题)”节中提到:运用“U”这个标量(一个宏,与VC++中的“L”类似)将ANSI字符常量强制识别为Unicode。这个过程是在编译时就已经完成,编译的时候是在简体XP下,所以程序运行时内存中存储的“汉字”Unicode是正确的。为了证实,将代码变为Button1->Caption = U"汉字";,再用F7跟踪。结果是程序一运行到这,就马上用UnicodeSetLength(var dst: UnicodeString; len: Integer);(注意dst的数据类型)来初始化一个UnicodeString类,等着给TButton赋值(TControl.SetText)了。



        现在终于明白,不变的“简体中文”其实是不变的Unicode编码,已经不是我们的GB了。那么CB2009中的UnicodeString默认的CodePage是啥?调用UnicodeString.CodePage()就知道了——1200。


        二、正确显示“繁体中文”

        简体XP下显示繁体好像都很容易:用IE、Firefox浏览繁体网站,用MS Word打开繁体内容doc文档等。如何用CB2009也实现相应功能?先试试用Memo控件来Load一个繁体文本看看:




        结果肯定是乱码,繁体XP下运行这个程序是能正常显示的。Memo控件中的每一行其实都是UnicodeString(属性Lines是TStrings类的对象),而繁体内容的TXT文本按ANSI保存,在Memo载入文件的时候做了一个ANSI到Unicode的转换。有了之前的跟踪结果,可以想象CB2009是获取了系统的默认CodePage(936)而导致繁体不能正确转换为UTF-16。那么我们让CB2009重新进行CodePage950的转换就应该可以正确显示了。

        有个函数在前面跟踪源码的时候出现过——MultiByteToWideChar,看名字很容易理解它的作用是把多字节转为宽字符,CB2009应该是利用了这个函数将ANSI进行了转换,当然CB2009是用的简体系统默认的CodePage。转换应该可逆,那么应该有WideCharToMultiByte。实现它看看:

 1 UnicodeString __fastcall BIG5ToUnicode(UnicodeString usString)
 2 {
 3     if (GetOEMCP() == 950
 4     {
 5         //如果为繁体系统,不用转换
 6         return usString;                                                
 7     }
 8     //预分配空间
 9     int length = usString.Length() * 2;                    
10     char *chBuffer = new char[length+1];
11     //按系统默认的codepage转回去
12     int iReturn = WideCharToMultiByte(GetOEMCP(), 0, usString.w_str(), -1, chBuffer, length+1, NULL, NULL);
13     wchar_t *wcBuffer = new wchar_t[iReturn+1];
14     //按Big5编码转换回来
15     iReturn = MultiByteToWideChar(9500, chBuffer, -1, wcBuffer, iReturn+1 );
16     usString = UnicodeString(wcBuffer);
17     delete chBuffer;
18     delete wcBuffer;
19     return usString;
20 }



“载入文件”的Click事件实现如下:

 1 void __fastcall TForm1::btn1Click(TObject *Sender)
 2 {
 3     TStringList *slBuf = new TStringList();
 4     slBuf->LoadFromFile("d:\\eula.txt");
 5     int iCount = slBuf->Count;
 6     for (int i = 0; i < iCount; i++)
 7     {
 8         mmo1->Lines->Add(BIG5ToUnicode(slBuf->Strings[i]));
 9         Application->ProcessMessages();
10     }
11 }



运行一下看看:





        好像自己的两个问题有了答案,但是总觉得第二个问题的方法效率低下,毕竟又转了一道。肯定还有更好的方法,当然,在没有找到好的办法前,我们这些菜鸟用用这种方法也是可以的。毕竟成长的过程是痛苦的。

2009年6月23日星期二

天下"老公"通用定律

[C++Builder研究]编程论坛: 天下"老公"通用定律

天下"老公"通用定律

1、当老婆对时,绝不说她对。

2、当老婆不对时,先看她脸色对不对。

3、不管她对不对,你永远说对。

苟活法则

1、别跟老婆谈有争议性的话题。

2、自己不能做的,就推给老婆。

3、老婆做完后,你再补充补充。当然做的比自己做的还要多。

信念守则

1、信自己能改变老婆。

2、若无法改变,就强加信念。

3、改变不了老婆,就改变自己的信念。

避灾守则

1、别问你不想知道的事。

2、别问老婆不想说的事情。

3、剩下的都能问,但别相信答案。

晚归守则

1、别超过半夜一点回家。

2、超过两点,则想好两个理由。

3、超过三点,就准备三个理由。

4、超过四点,不必想任何理由,因一切理由都是徒劳的。

5、所说理由的内容,坚守不说谎,不吐实的原则。

眼神定律

1、不要在老婆面前盯别的女人。

2、如果盯着别的女人应避免让老婆看见。

3、如果被老婆看见,要马上转回来注视老婆,并说:
怎么她穿那一款的衣服没你穿得漂亮?

送花定律

1、拮据时,送一朵花。

2、阔气时,也送一朵花。

3、送花要有理由,不要心血来潮,
否则会让人怀疑是因为你的内疚。

2009年6月18日星期四

我的一个毛病―挑剔

搞设计几年下来,发现自己在设计过程中有一个毛病:
不管是什么样的任务,节点怎么急,总是先找最好的设计工具和软件,其次所有可能相关的资料和说明,最好才是设计。而且我最爱使用有新意的东西。
所以六天的设计节点可能四天在找,两天在设计。
对稍大点的项目还好,小项目就效率提不上去了。
总之,不太考虑成本和未来的实现难度,而是追求设计的"高尚"。

--
Sent from my mobile device

This E-mail comes from Kefeng.CN@Gmail.com

2009年6月17日星期三

[收藏]IT经理世界:向山寨科技学习什么

[收藏]IT经理世界:向山寨科技学习什么

alect发布于 2009-06-05 孙黎/文

《山寨科技创了什么新》一文(本刊5月5日号总第267期)发表以后,读者的热情反应与分歧的意见,让远在大洋彼岸的我始料未及。在本文中,我试图再次整理山寨中的创新因素,让居庙堂之高者明白,创新不必非来自于高高在上的微软、诺基亚或者默克,也不必像当年搞"两弹一星"那样举全国之力倾斜投入,关键在于利用市场全球化、技术开放化的强大推手,在国际价值产业链上配置资源。

  中国要走的自主知识产权的创新道路上,山寨科技的摸索已经为我们探明了前进的路径:

  研发模式:蚂蚁雄兵的模块化开发强于集权式的技术攻关

  哈佛商学院前院长吉姆・克拉克和前副院长卡利斯・鲍德温对IBM开发360计算机系统的研发过程进行研究,首次发现了模块化在大型研发项目中的重要作用。但估计他们无论如何也想不到:他们的研发思想在中国得到最先应用的,不是大型研发机构,而是山寨!

  模块化理论认为:在模块化前,复杂系统内部不同的功能区块需要大量的沟通协调,这大大降低了开发速度,提高了成本。如图1"手机开发示意图"所示,主板研发人员必须与显示屏开发人员有大量的沟通,这就是散布在这种功能区块的大量知识点。

  模块化开发的思路则是先定下设计规则,在各子模块之间建立明确的联系规则, 包括结构、界面(接口)和标准等三方面的信息。在目前的山寨手机中,MTK就综合了市场的各种需求,是这一规则的主要架构师。当然,高通、TI、运营商等也从各个方面提出要求,从而建立起产品的基本架构。在这个架构上,左边栏是各种公众信息,使各子模块之间可以共享,而各个模块内部又有各种私人信息,不同模块的开发商不必花时间去了解其他模块内部的缄默知识,这样就大幅降低了协调成本。各个模块之间可以独立、平行地展开工作,也可以很方便地被更好的模块所替代。IBM将这一开发大型机上研发经验运用到PC上,迅速击败了苹果当时在PC行业建立的先行者优势,但模块化的发展也使专注芯片的英特尔、专注软件的微软大获其利,使从事兼容机的AST、康柏迅速崛起。开源社区市集式开发模式的成功也可以说是建立在模块化的基础之上的。

  回顾我国开发手机的历程,从最早的"华夏一号"到夏新电子的巨额投资,都想从全面自主研发的民族主义出发,却无法降低集权式技术攻关下的高额沟通成本与协调成本,无法解脱"自主"的困境。而山寨模式利用现有模块化分工,却可以迅速实现开发部署。同样,在上网本的开发上,由芯片商、模具商、主板开发商、市场终端等组成的蚂蚁雄兵,在各道工序上并行研发,通过山寨模式组织协调各种市场力量与联盟力量,突出了模块化、轻资产部署的速度竞争力。

  启示一:不要看山寨产品是否尊重知识产权,而要看你研发的战略架构有没有错,看你是否充分利用了行业现有的宝贵的非专利性知识。

  产品模式:"试错性"的多品种平行竞争优于断代式的单一技术引进

  回顾硅谷的IT业发展历史,可以说整个美国高科技都架构在模块化的基础上,如图1展示:在模块化发轫的六十年代前,高科技一直被IBM、通用等大型公司而垄断,甚至经济学家熊彼得都将创新的动力寄托在它们身上。但模块化、开放化使PC兴起,催生了CPU、DRAM、磁盘、显示器、硬盘、、光驱、网卡以及其后的路由器等各个行业的积极创新。对比之下,日本在上世纪80年代以出口赚取的巨额外汇,投入第五代机器人的研发,但其封闭、中央集权的开发模式注定了其失败的命运。

  硅谷模式成功的秘诀是什么:工程师的敢为精神?车库文化?大学商业化能力?经济制度学家昌木青�的答案是:建立在模块化基础上的风险投资体制。模块化的结果,是系统内各个模块之间可以实现"试错性"的多品种平行竞争,由于模块化使投资一个项目的成本大幅降低,随之兴起的风险投资商可以一口气投资十家企业,让这些企业之间光为一个模块而举行淘汰赛,最后的赢家实现通吃,这样就大幅激励了硅谷企业家的创新能力,而对风险投资商而言,其他九家公司的死亡抵不上最后成功者上市所实现的巨额收益。

  山寨科技也学会了这种"试错性"多品种平行竞争机制。一方面,产品内各子模块之间平行展开研发,可以快速多型号地开发产品;另一方面,子模块内部信息"封装"后使每个子模块内的研发进程免受新型号的干扰,这样山寨企业家就可以同时灵活地开发多个备选产品,以对付风险与不确定性。这正是我们看到山寨手机型号、上网本型号如此变化多端的原因。而自主品牌汽车厂商们能比合资的"共和国长子"推出更多的汽车型号(即使外观是"山寨"的),正是对内部共用模块自信的体现。同时,研究表明:快速的机制和灵活性有利于人们更快地学习。

  对比之下,断代式的单一技术引进,从上广电、通用的合资经验看,由于没有竞争机制,美日跨国公司不可能给我们最新的流水线与技术。但我们追求GDP的政府可能还是很难放弃,为引进落后世代的流水线而继续浪费数以亿计的纳税人资金!而对上广电的亏损比山寨还"雷"的解释是:因为上海政府舍不得十几亿元的新投入,再引进夏普的新一代流水线(而不是这家国营企业完全依赖日企,从而丧失了在竞争中消化吸收技术的能力)!

  启示二:不要看山寨产品有多"模仿",而要看你的产品功能是否更多,品种更全。

  生产模式:开放式的产业集群强于集中式的企业集团

  模块化也改变了供应链管理、生产管理。浅沼万里指出,日本汽车业的重要竞争源泉就来自于核心企业与供应商之间设计上的模块化,不同于美国汽车企业提供图纸给供应商加工的做法,日本的汽车企业,例如丰田,在确定了一般的共识界面之后,就放手让供应商去做,在"认可图纸方式"的框架下,各模块的设计、生产可以在很多供应商之间同时进行,大大缩短了改换车型的时间周期。对比之下,通用、福特开始分拆零部件产商德尔福、伟世通,才赢得一些竞争力,法雷奥集团也考虑出售零部件分子公司。

  山寨的生产也利用了类似的产业集群,以上百家手机方案研发公司、上千家手机集成商和贸易商为中心,通过开放式的集群配套上万家元器件、外观设计、模具、壳料和组装料供应商以及组装工厂和物流公司,形成强大的信息交流,组织起迅速反应的完整生产链条。

  启示三:不要看山寨产品成本有多低,而要看你是否能在开放式集群中配置设计与生产。

  市场模式:开发第三世界金字塔底层的市场需求,优于为发达国家OEM

  杜克大学教授Gereffi曾经将全球价值链分为生产者驱动和购买者驱动两种。在前者中生产者在协调生产网络运作中起主要作用;与前者相比,后者以大型零售商、品牌营销商、品牌制造商为首,综合运用研究、设计、营销和财务服务等方面的能力,将主要市场与生产厂家联系起来。在研究亚洲奇迹时,也有学者指出,四小龙的出口导向政策之所以能够成功,除这些国家和地区人民的勤劳与文化价值以外,也要看到欧美大型零售商(例如沃尔玛)在上世纪八九十年代崛起对亚洲出口商非常大的"购买者驱动"。同样,中国很多外销企业在转内销时发现:国内客户有很大差异,在产品质量、客户素质或订单规模上一般均逊于海外买家,这使得中国的外销企业在全球经济危机下进行转型很困难。

  同时,生产者驱动的价值链则由跨国公司主导,这些跨国公司为独占高额利润,就利用消费者的品牌忠诚,故意制造产品的差异,例如国际大牌汽车厂商就在其低端车型中有意不在内后视镜上设置车辆的行驶方向和车内外温度的功能,其实这些功能模块的成本非常低,只是加一个指南针和温度计而已,但他们还是有意不加。尼葛洛庞帝推出100美元"一个孩子一部电脑"计划,英特尔立即推出自有品牌的Classmate小型笔记本电脑,千方百计阻止尼葛洛庞帝选用AMD公司的芯片,并让广达等台湾OEM代工商不敢配合。

  现在,山寨科技重新发现了这些跨国公司忽视的市场,并通过模块化创新使成本降到第三世界国家消费者可以接受的水平,例如比亚迪就在5万元以下的福莱尔车型上提供温度显示和方向显示。而第三世界强大的地下经济,也助长了中国山寨的成长,通过这条道路,中国的制造商可以走出与台湾代工商不同的成长空间。

  启示四:不要看山寨产品是否有品牌,而要看你是否充分利用了市场全球化的机会。

  全球化正在推动各产业由传统的纵向分工向横向分工转变。在这一巨大的变革浪潮中,柔性生产、并行设计、虚拟组织等现代生产组织形式纷纷出现,通用、克莱斯勒等无法适应的恐龙型组织纷纷被淘汰出局。在中国,我们欣喜地看到山寨科技已经开始最先拥抱这一变革,并迅速成长。其他行业的企业从这种演化历程中,或多或少可以学到如何提升自己的创新效率、如何利用开放式的组织模式抓住全球化的机会。

  30年前,在"割资本主义尾巴"的阴霾尚未散尽的时候,义乌人通过鸡毛换糖走出一条小商品制造和贸易的道路;今天,义乌为这些山寨先驱们树碑立传。30年后,希望同样有一块纪念山寨科技创新的丰碑,树立在深圳的华强北。

【引用】IT经理世界:向山寨科技学习什么_cnBeta 博文精选_cnBeta.COM




[收藏]加工中心自动换刀过程PLC编程的技巧



信息来源:慧聪网






加工程序和PLC程序关系示意图PLC程序是数控机床正常运转的软件核心,是连接NC和机床的桥梁,也是机床电气设计人员调试机床的关键。



一个完善的PLC程序不仅能使机床正常运行,还要让人看起来一目了然,既为自己调试提供方便,还能帮助维修人员查找故障和分析原因。下面就XH756B系列卧式加工中心配SIEMENS802D数控系统时,在自动换刀过程中机械手的编程技巧作一介绍。



首先简单介绍一下刀具交换装置的基本情况,刀库是可正反向旋转的链式刀库、装在刀具交换装置上的机械手用15个步骤将刀库中的刀具交换到主轴,并将主轴刀具还回刀库对应的刀套中。为尽量缩短换刀时间,我们采用刀具预选与零件加工同时进行的方式来压缩换刀时间。机械手动作顺序如下:



步骤 1:平移缩回,抓刀库中预选的刀具:步骤2:拔刀伸出,拔出刀套中的刀具:步骤3:平移伸出,离开刀库侧抓刀位置:步骤4:拔刀缩回,机械手缩回:步骤 5:摇臂伸出,摇臂转向主轴侧:步骤6:平移伸出,抓主轴刀具:步骤7:拔刀伸出,拔出主轴中的刀具:步骤8:换刀正转或反转,刀具交换:步骤9:拔刀缩回,将预选刀具插入主轴:步骤10:平移缩回,机械手离开主轴:步骤11:摇臂缩回,摇臂转向刀库侧:步骤12:拔刀伸出,准备将主轴刀具送回刀库:步骤 13:平移缩回,机械手移向刀库:步骤14:拔刀缩回,将主轴刀具插入刀库:步骤15:平移伸出,离开刀库侧抓刀位置。



以上15个步骤可分为如下4个阶段:



第1阶段:抓新刀。Txx代码控制刀库按就近方向转动到编程刀具所在的位置,到位且有刀库定位I信号后启动机械手,经过步骤1→步骤2→步骤3→步骤4,将编程刀具抓在手上等待换刀。

第2 阶段:换刀。M06启动换刀固定循环“TOOL”。“TOOL”控制各坐标移动到换刀位置,并用M90通知PLC启动换刀,PLC用M90信号请求NC “读入禁止”并启动机械手换刀步骤5→步骤6→步骤7→步骤8→步骤9→步骤10→步骤11,同时用步骤5的到位信号控制刀库转到主轴刀号的位置。

第3阶段:还刀。步骤5启动的刀库旋转停止且有刀库定位I信号后,启动机械手步骤12→步骤13→步骤14→步骤15,将主轴刀具还到刀库中并将记忆主轴刀号的存储器更新。步骤11完成后,取消“读入禁止”,激活刀具参数,加工程序和机械手还同时进行。



第4 阶段:抓预选新刀。在M06的下一段紧跟下道工序要用的刀具号Txx,刀库在完成还刀动作后可在零件加工的同时启动机械手步骤1→步骤2→步骤3→步骤 4,将下道工序所用的刀具预选抓到机械手上,等待M06启动后面的换刀动作,这样大大缩短了刀具交换的时间,提高了工作效率。



注意事项:







  1. Txx和M06不能编在同一程序段内:




  2. 在固定循环TOOL中,所有位移程序段应加G153(段有效)取消基本偏移:




  3. 三个换刀过程:①装刀:主轴无刀,Txx/M06直接安装编程刀具:②换刀:主轴有刀,交换编程刀具和主轴刀具:③还刀:主轴有刀,编程T0,将主轴刀具还回刀库。




  4. 主轴准停角度利用PLC浮点参数MD14514[0]:$MN_USER_DATA_FLOAT[0]




本编程方法的核心是将机械手动作按时序分成共15个步骤。“步骤”存储在一个中间的变量中,该中间变量点占一个字节,每个“步骤”完成后将中间变量的值修改为下一个“步骤”,而整个步骤全部完成后将中间变量置为零,下一个换刀指令到来后又从步骤1开始执行。这样不仅使PLC程序简单、直观,而且由于“步骤” 是唯一的,这样就能避免信号之间的互相干扰,编程人员再也不用绞尽脑汁来为每一个输出信号加各种限制条件,巧妙利用“变量”达到事半功倍的效果。加工程序和PLC程序关系见下图。





















1






此外,刀库运转、托盘交换等也可以用这种方法来编程。




2009年6月15日星期一

[收藏]PLC实现变频调速器多电机控制



本文介绍了一种PLC与变频调速器构成的多分支通讯网络,阐明了该网络控制调速系统与一般模拟量控制调速系统相比的优越性,给出了系统框图及PLC程序。


一、引言


  以变频调速器为调速控制器的同步控制系统、比例控制系统和同速系统等已广泛应用于冶金、机械、纺织、化工等行业。以比例控制系统为例,一般的系统构成如图1 所示。





  工作时操作人员通过控制机(可为PLC或工业PC)设定比例运行参数,然后控制机通过D/A转换模件发出控制变频调速器的速度指令使各个变频调速器带动电机按一定的速度比例运转。此方案对电机数目不多,电机分布比较集中的应用系统较合适。但对于大规模生产自动线,一方面电机数目较多,另一方面电机分布距离较远。采用此控制方案时由于速度指令信号在长距离传输中的衰减和外界的干扰,使整个系统的工作稳定性和可靠性降低;同时大量D/A转换模件使系统成本增加。为此我们提出了PLC与变频调速器构成多分支通讯控制网络。该系统成本较低、信号传输距离远、抗干扰能力强,尤其适合远距离,多电机控制。



二、系统硬件构成


系统硬件结构如图2 所示,主要由下列组件构成;




1、FX0N—24MR为PLC基本单元,执行系统及用户软件,是系统的核心。
2、FX0N—485ADP为FX0N系统PLC的通讯适配器,该模块的主要作用是在计算机—PLC通讯系统中作为子站接受计算机发给PLC的信息或在多PLC构成n:n网络时作为网络适配器,一般只作为规定协议的收信单元使用。本文作者在分析其结构的基础上,将其作为通讯主站使用,完成变频调速器控制信号的发送。

3、FR—CU03为FR—A044系列比例调速器的计算机连接单元,符合RS—422/RS—485通讯规范,用于实现计算机与多台
变频调速器的连网。通过该单元能够在网络上实现变频调速器的运行控制(如启动、停止、运行频率设定)、参数设定和状态监控等功能,是变频器的网络接口。

4、FR—A044变频调查器,实现电机调速。
  在1:n(本文中为1:3)多分支通讯网络中,每个变频器为一个子站,每个子站均有一个站号,事先由参数设定单元设定。工作过程中,PLC通过FX0N—485ADP发有关命令信息后,各个子站均收到该信息,然后每个子站判断该信息的站号地址是否与本站站号一致。若一致则处理该信息并返回应答信息;若不一致则放弃该信息的处理,这样就保证了在网络上同时只有一个子站与主站交换信息。



三、软件设计


1、通讯协议
  FR—CU03规定计算机与变频器的通讯过程如图3 所示,



 


  该过程最多分5个阶段。?、计算机发出通讯请求;?、变频器处理等待;?、变频器作出应答;?、计算机处理等待;?、计算机作出应答。根据不同的通讯要求完成相应的过程,如写变频器启停控制命令时完成?~?三个过程;监视变频器运行频率时完成?~?五个过程。不论是写数据还是读数据,均有计算机发出请求,变频器只是被动接受请求并作出应答。每个阶段的数据格式均有差别。图4 分别为写变频器控制命令和变频器运行频率的数据格式。





2、PLC编程

  要实现对变频器的控制,必须对PLC进行编程,通过程序实现PLC与变频器信息交换的控制。PLC程序应完成FX0N—485ADP通讯适配器的初始化、控制命令字的组合、代码转换及变频器应答信息的处理等工作。PLC梯形图程序(部分程序)如图5 所示。



 


  程序中通讯发送缓冲区为D127~D149;接受缓冲区为D150~D160。电机1启动、停止分别由X0的上升、下降沿控制;电机2启动、停止分别由X1的上升、下降沿控制;电机3启动、停止分别由X2的上升、下降沿控制。程序由系统起始脉冲M8002初始化FX0N—485ADP的通讯协议;然后进行启动、停止信号的处理。以电机1启动为例,X0的上升沿M50吸合,变频器1的站号送入D130,运行命令字送入D135,ENQ、写运行命令的控制字和等待时间等由编程器事先写入D131、D132、D133;接着求校验和并送入D136、D137;最后置M8122允许RS指令发送控制信息到。变频器受到信号后立刻返回应答信息,此信息FX0N—485ADP收到后置M8132,PLC根据情况作出相应处理后结束程序。



四、结语


1、实际使用表明,该方案能够实现PLC通过网络对变频调速器的运行控制、参数设定和运行状态监控。
2、该系统最多可控制变频调速器32台,最大距离500m。
3、控制多台变频器,成本明显低于D/A控制方式。
4、随着变频器的增加,通讯延迟加大,系统响应速度低于D/A控制方式。



[引用]PLC在数控系统点位控制中的应用




一、 引言


  数控技术是综合应用了电子技术、计算技术、自动控制与自动检测等现代科学技术成就而发展起来的,目前在许多领域尤其是在机械加工行业中的应用日益广泛。


  数控系统按其控制方式划分有点位控制系统、直线控制系统、连续控制系统。在机械加工时,数控系统的点位控制一般用在孔加工机床上(例如钻孔、铰孔、镗孔的数控机床),其特点是,机床移动部件能实现由一个位置到另一个位置的精确移动,即准确控制移动部件的终点位置,但并不考虑其运动轨迹,在移动过程中刀具不切削工件。


  实现数控系统点位控制的通常方法可以有两种:一是采用全功能的数控装置,这种装置功能十分完善,但其价格却很昂贵,而且许多功能对点位控制来说是多余的;二是采用单板机或单片机控制,这种方法除了要进行软件开发外,还要设计硬件电路、接口电路、驱动电路,特别是要考虑工业现场中的抗干扰问题。



  由于可编程控制器(PLC)是专为在工业环境下应用而设计的一种工业控制计算机,具有抗干扰能力强、可靠性极高、体积小、是实现机电一体化的理想控制装置等显著优点,因此通过实践与深入研究,本文提出了利用PLC控制步进电机实现数控系统点位控制功能的有关见解与方法,介绍了控制系统研制中需要认识与解决的若干问题,给出了控制系统方案及软硬件结构的设计思路,对于工矿企业实现相关机床改造具有较高的应用与参考价值。



  

二、控制系统研制中需要认识与解决的若干问题


  1. 防止步进电机运行时出现失步和误差
  步进电机是一种性能良好的数字化执行元件,在数控系统的点位控制中,可利用步进电机作为驱动电机。在开环控制中,步进电机由一定频率的脉冲控制。由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。



  2. 保证定位精度与提高定位速度之间的矛盾
  步进电机的转速与其控制脉冲的频率成正比,当步进电机在极低频下运行时,其转速必然很低。而为了保证系统的定位精度,脉冲当量即步进电机转一个步距角时刀具或工作台移动的距离又不能太大,这两个因素合在一起带来了一个突出问题:定位时间太长。例如若步进电机的工作频率为20HZ,即50ms走一步,取脉冲当量为δ=0.01mm/步,则1秒钟刀具或工作台移动的距离为20x0.01=0.2mm,1分钟移动的距离为60x0.2=12mm,如果定位距离为120mm,则定位时间需要10分钟,如此慢的定位速度在实际运行中是难以忍受的。



  为了保证定位精度,脉冲当量不能太大,但却影响了定位速度。因此如何既能提高定位速度,同时又能保证定位精度是一项需要认真考虑并切实加以解决的问题。


  3. 可变控制参数的在线修改
  PLC应用于点位控制时,用户显然希望当现场条件发生变化时,系统的某些控制参数能作相应的修改,例如步进电机步数的改变,速度的调整等。为满足生产的连续性,要求对控制系统可变参数的修改应在线进行。尽管使用编程器可以方便快速地改变原设定参数,但编程器一般不能交现场操作人员使用;虽然利用PLC的输入按键并配合软件设计也能实现控制参数的在线修改,但由于PLC没有提供数码显示单元,因此需要为此单独设计数码输入显示电路,这又将极大地占用PLC的输入点,导致硬件成本增加,而且操作不便,数据输入速度慢。所以,应考虑开发其他简便有效的方法实现PLC的可变控制参数的在线修改。



  4. 其他问题
  为了实现点位控制过程中数字变化的显示及故障输出代码的显示等要求,另外还得单独设计PLC的数码输出显示电路。由于目前PLC I/O点的价格仍较高,因此应着重考虑选用能压缩显示输出点的合适方法。此外,为保证控制系统的安全与稳定运行,还应解决控制系统的安全保护问题,如系统的行程保护、故障元件的自动检测等。


三、控制系统方案


  1. 将定位过程划分为脉冲当量不同的两个阶段
  要获得高的定位速度,同时又要保证定位精度,可以把整个定位过程划分为两个阶段:粗定位阶段和精定位阶段。这两个阶段均采用相同频率的脉冲控制步进电机,但采用不同的脉冲当量。粗定位阶段:由于在点位过程中,刀具不切削工件,因此在这一阶段,可采用较大的脉冲当量,如0.1mm/步或1mm/步,甚至更高。例如步进电机控制脉冲频率为20HZ,脉冲当量为0.1mm/步,定位距离为120mm,则走完全程所需时间为1分钟,这样为速度显然已能满足要求。精定位阶段:当使用较大的脉冲当量使刀具或工作台快速移动至接近定位点时,(即完成粗定位阶段),为了保证定位精度,再换用较小的脉冲当量进入精定位阶段,让刀具或工作台慢慢趋近于定位点,例如取脉冲当量为0.01mm/步。尽管脉冲当量变小,但由于精定位行程很短(可定为全行程的五十分之一左右),因此并不会影响到定位速度。



  为了实现上述目的,在机械方面,应采用两套变速机构。在粗定位阶段,由步进电机直接驱动刀具或工作台传动,在精定位阶段,则采用降速传动。这两套变速机构使用哪一套,由电磁离合器控制。


  2. 应用功能指令实现BCD码拨盘数据输入
  目前较为先进的PLC不仅具有满足顺序控制要求的基本逻辑指令,而且还提供了丰富的功能指令。如果说基本逻辑指令是对继电器控制原理的一种抽象提高的话,那么功能指令就象是对汇编语言的一种抽象提高。BCD码数据拨盘是计算机控制系统中常用到的十进制拨盘数据输入装置。拨盘共有0~9+个位置,每一位置都有相应的数字指示。一个拨盘可代表一位十进制数据,若需输入多位数据,可以用多片BCD码拨盘并联使用。



  笔者选用BCD码拨盘装置应用于PLC控制的系统,这样无需再设计数码输入显示电路,有效地节省了PLC的输入点,简化了硬件电路,并利用先进的功能指令实现数据的存储和传输,因此能极方便地实现数据的在线输入或修改(如计数器设定值的修改等),若配合简单的硬件译码电路,就可显示有关参数的动态变化(如电机步数的递减变化等)。为避免在系统运行中拨动拨盘可能给系统造成的波动,最好设置一输入键,当确认各片拨盘都拨到位后再按该键,这时数据才被PLC读入并处理。



  3. “软件编码、硬件解码”
  为满足压缩输出点这一前提条件,采用“软件编码、硬件解码”的方法设计PLC的数码输出显示电路。例如,对于9种及其以下的故障状态显示,可采用8-4软件编码,4-8硬件解码,使显示故障的输出点压缩为4个,硬件电路包含74LS04、74LS48、共阴数码管等器件。


  4. PLC外部元件故障的自动检测
  由于PLC具有极高的可靠性,因此PLC控制系统中绝大部分的故障不是来自PLC本身,而是由于外部元件故障引起的,例如常见的按钮或行程开关触点的熔焊及氧化就分别对应着短路故障及开路故障。系统一旦自动检测到元件故障,应不仅具有声光报警功能,而且能立即显示故障代码,以便用户据此迅速判断出故障原因。为节省篇幅,此项内容的程序设计思路见参考文献。



四、控制系统的软硬件结构


  1. 软件结构
  软件结构根据控制要求而设计,主要划分为五大模块:即步进电机控制模块、定位控制模块、数据拨盘输入及数据传输模块、数码输出显示模块、元件故障的自动检测与报警模块。


  由于整个软件结构较为庞大,脉冲控制器产生0.1秒的控制脉冲,使移位寄存器移位,提供六拍时序脉冲,通过三相六拍环形分配器使三个输出继电器Y430、Y431、Y432按照单双六拍的通电方式控制步进电机。为实现定位控制,采用不同的计数器分别控制粗定位行程和精定位行程,计数器的设定值依据行程而定。例如,设刀具或工作台欲从A点移至C点,已知AC=200mm,把AC划分为AB与BC两段,AB=196mm,BC=4mm,AB段为粗定位行程,采用0.1mm/步的脉冲当量快速移动,利用了6位计数器(C660/C661),而BC段为精定位行程,采用0.01mm/步的脉冲当量精确定位,利用了3位计数器C460,在粗定位结束进入精定位的同时,PLC自动接通电磁离合器输出点Y433以实现变速机构的更换。



  2. 硬件结构


五、结束语


  系统试验表明,本文提出的应用PLC控制步进电机实现数控系统点位控制功能的方法能满足控制要求,在实际运行中是切实可行的。所研制的控制系统具有程序设计思路清晰、硬件电路简单实用、可靠性高、抗干扰能力强,具有良好的性能价格比等显著优点,其软硬件的设计思路可应用于工矿企业的相关机床改造。














Blogger第一帖,用你很辛苦!






Google的东西很全面,特别是Gmail以及和Firefox高度集成,使用起来很是方便,所以总是想把自己的东西统一到一个平台上。Blog是很有意义的东西,便于收藏,分享,以及随时随地浏览,所以选择了google的Blogger。很不幸运,最近国内刚好在封杀这东西好像,开通是在一个偶然的机会,不知道怎么就申请上了,好像是通话https访问。可是正常访问,写帖子却不行。



今天在网上看到可以通过Google DOcument在线发布,想试一下。算是我的Blogger第一帖吧。