當前位置:首頁 » 編程軟體 » 分練站編程

分練站編程

發布時間: 2024-09-16 16:43:40

A. 想問問各位編程高手最開始的時候是怎麼下手的,也可以說是怎麼從什麼都不知道的時候到會匯編的過程!

一個IT人士的個人經歷,給迷失方向的朋友

這些日子我一直在寫一個實時操作系統內核,已有小成了,等寫完我會全部公開,希望能夠為國內IT的發展盡自己一份微薄的力量。最近看到很多學生朋友和我當年一樣沒有方向 ,所以把我的經歷寫出來與大家共勉,希望能給剛如行的朋友們一點點幫助。
一轉眼我在IT行業學習工作已經七年多了,這期間我做過網頁,寫過MIS、資料庫,應用程序,做過通信軟體、硬體驅動、協議棧,到現在做操作系統內核和IC相關開發,這中間走了很多彎路,也吃了不少苦。
我上的是一個三流的高校,就連同一個城市的人多數都不知道。因為學校不好也就沒有指望能靠學校名氣找一個好工作。所有的希望都寄託在自己的努力上了,大一開學前的假期我就開始了學習,記得我買的第一本書是《計算機基礎DOS3.0》,大家別嚇著了,其實當時已經普及了DOS6.22了,只是我在書店裡看到了DOS4.0,5.0,6.0的書,以為像英語那樣是第四、五、六冊,記得當時到處找DOS1.0,現在想想也幸好我沒有找到:)開學前我學完了PASCAL,那時既沒有計算機也沒有人可以請教,我連程序是什麼的概念都沒有,只好死記硬背代碼,然後拿紙寫,我一直到大三才有了一台486,在這之前用紙寫了多少程序我也記不清楚了,只知道最長的一個我拿A4大小的草稿紙寫了30多頁,我的C語言、C++、VC都是在這樣的條件下入門的。所以說條件是可以克服的,希望我的經歷多少給條件艱苦的同學們一點信心。第一次上機是在我姐夫的機房,我的心情激動的無與倫比,但是一上機我立刻傻了眼,他們用的是英文版的Win3.1,我的那點DOS知識都見了鬼,上機提心吊膽的一陣瞎摸,一不小心把Word弄成了全屏,怎麼都還不了原,當時真是心急如焚,我以機器被我弄壞了。第一個C語言程序,就是那個經典的HelloWorld,我調了幾個星期,上機機會非常少,也沒有書告訴我開發環境(TC2.0)需要設置,而且開始我都不知道有編譯器,我甚至自作聰明把寫好的程序擴展名從.c改成.exe,結果可想而知。
大一學完了C、X86的匯編、數據結構、C++。由於精力都花在自學上了,大一下四門課掛了彩,三類學校就是這點好,掛上一二十門也照樣畢業。不過扯遠點說,我那麼刻苦都及不了格,可見我們國家的計算機教育有多死板。
大二准備學VC和BC,當時難以取捨,後來選了VC,不為別的,只為書店裡兩本書,VC那本便宜6塊錢。我的努力在班上無人能及,學的日夜不分,大三有了計算機後更是如此,很多次父親半夜教訓我說我不要命了,我一直覺得自己基礎差,記憶又不行,條件也不好 ,所以覺得只有多花點時間才能趕上別人。居然後來有許多朋友說我有學計算機的天賦,讓我哭笑不得。我用的是486,16M內存,1G硬碟,當時同學們的配置都是P166MMX,我安裝一個Windows NT4.0需要一個通宵,編譯一個BC5.0向導生成的程序需要近兩個小時,我的顯示器是個二手的,輻射非常大,開機屏幕冒火花,看起來很酷的:),有一次程序寫的太久,覺得怎麼白色的編輯器背景變成了紫色,以為顯示器壞了,後來才發現眼睛不行了,不過說來也奇怪,到今天我的視力還能保持1.5,真是個奇跡。但是就是那台破機器陪伴我兩年,讓我學會了VC、Delphi、SQLServer等。後來那台機器給我阿姨打字用,據她說一天她正打的開心,一股青煙夾著火苗從顯示器鑽出來,之後它才壽終正寢。
大三假期找了個機會在一個計算機研究所實習,與其說實習不如說是做義工,工作了兩個月一分錢沒有拿。但是這兩個月對我的發展幫助很大,讓我早一步了解了社會,剛去的時候我當然是一竅不通,在那裡我熟悉了網路,學會了Delphi和Oracle。由於工作很認真,得到了比較好的評價,在一位長者的引薦下,我開始和他們一起做項目,這使我在大三大四就有了自己的收入,大四又找了兩家MIS公司兼職,雖然錢不多,但是在學生期間有1000多的收入我已經非常滿足了,我終於用自己賺的錢把計算機換了。大四下開始找工作,這時我的工作經驗已經比較多(當然現在想想非常幼稚),開始聽父母的想去那個研究所,實習過那個部門也希望我能去,但是不知道為什麼最後不了了之,這種單位就是比較官僚,我一氣之下就到了我兼職的一個公司做MIS的TeamLeader。在大三到畢業一年的時間,做過了各種MIS,從煤氣、煙廠、公安、鐵路、飲食到高校,什麼有錢做什麼,工作也很辛苦,經常加班和熬通宵,從跟客戶談需求到設計、編碼、測試、交付都要上。那時覺得很有成就感,覺得自己還不錯,現在想想真是很膚淺。
剛走上工作崗位的學生很容易被誤導,各種開發工具讓人眼花繚亂,同時也覺得很受公司器重,但這樣工作永遠是一個低層次的開發者。不要跟我說什麼系統分析有多麼多麼重要,多麼多麼難。你以為自己跟用戶談需求做設計就是系統分析和設計了嗎,國內又有幾個公司能夠做的很到位很規范?我是ISO9000內審員,也在Rational公司受過多次培訓,拿了4個證書,還有一個公司讓我去做CMM。這些我聽過很多,但是很多事情到內就變了性質,一個公司不是通過了ISO9000或者CMM就能規范了,我現在在一家有幾十年歷史的外企工作,裡面的管理不是一般國內企業能及的。作為一個畢業不久以前沒有步入過社會的學生,幾乎不可能在很短的時間掌握系統分析和設計,面向對象、UML只是一個工具,關鍵是人本身的思想,不是說你熟悉了C++、Rose就能夠做出好的設計,相反如果你具備了很高的素質,你可以用C寫出比別人用C++更加模塊化的程序。
話說遠一些,國內軟體開發行業有一個怪圈,很多人覺得VC > Delphi > VB,真是很搞笑。這幾個軟體我都做過開發,說白了他們都是工具,應該根據應用的需要選擇採用哪個,而不是覺得哪個上層次。如果你因為用某個開發工具很有面子而選擇的話,只能說明你很淺薄。如果說層次,那麼這些工具都不上層次,因為它們用來用去都是一些系統的API,微軟的朋友不會因為你記住他們多少個API或者多少個類就會覺得你很了不起,你永遠只是他們的客戶,他們看重的是你口袋裡的銀子。我也做過系統內核,我也封裝過很多API,同樣我也不會看重那些使用這些API做二次開發的客戶,除非他能夠作出自己獨到的設計。
至於有人認為C++ > C那更是讓人笑掉大牙,不妨你去打聽一下,現在有幾個操作系統內核是用C++寫的,又有幾個實時系統用的是C++,當然我也不是說C++不好,但是目前的內核和實時系統中C++還無法與C匹敵,至於說C++適合做應用系統的開發那是另外一回事。所以我的觀點是不在於你用什麼工具和語言,而在於你干什麼工作。你的設計體現了你的技術層次。
這樣幹了一年我覺得非常苦悶,做的大多數都是熟練工種的活,個人技術上沒有太多的提高也看不到方向。所以決定離開這個城市去上海,尋求更好的發展,並且打算放棄我以前的MIS轉到通信行業。
寫到這里不能不提到我女朋友,我們是在來上海前半年認識的,她大四在我公司實習,公司派她給我寫文檔,我們的感情發展的很快。她告訴我很多事情,她家原本是改革開放的第一批暴發戶,她母親愛打牌,輸掉了幾百萬,還欠了很多債,她有男朋友,但是她對他沒有感情,只因為他給了她母親兩萬多塊錢,後來還強迫她寫了四萬塊的借條,她男朋友背叛過她並且不止一次打她,現在逼她結婚不然就要她還錢。這人居然還是一個高校的老師!她母親把父親給她的學費花了,因為拖欠學費她沒有辦法拿到畢業證。她母親現在有病需要錢,我拿出了自己的一點積蓄並且跟朋友們接了一些,替她交了學費並給她母親看病(後來才知道看病的錢又不知所終,就連她母親是不是有病我都不知道,但她也是沒有辦法)。這個時候我家知道了一些事情,堅決反對我和她在一起,她原來的男朋友也極力破壞。無奈之下我們決定早一定離開這個傷心的城市,並且瞞著我們家。由於時間倉促,我只准備了4000塊錢,她僅有的幾百塊錢也被她母親要去了,我買了三張票,一張是中午的,兩張是晚上的,中午我的家人把我送上船,他們一離開我就下了船,我和她乘坐晚上的船離開了這個我和她生活了很多年的城市,帶走的只是一身債務。沒有來過上海的我們兩個性倔強,都不願意去麻煩同學和朋友。來到上海是傍晚6點半,我們都不知道該去哪裡,我們找了一個20塊錢的旅館,這個房間連窗戶都沒有,7月份的天氣酷熱難耐,房間里非常悶熱。第二天我們開始租房子,因為身上的錢不多,我們基本都是步行,花了一個星期時間,不知道在浦東轉了多少圈後找到了一個400塊的房子,但是我們都 不了解上海是付三壓一,還要付半個月的中介費,買了一些鍋碗瓢盆後,我們身上只有800塊錢了,工作都還沒有著落,這800塊錢要支持到我們拿到第一個月工資,為了省錢我們自己做飯,每天買菜只花兩塊錢,她非常喜歡吃(也可能她在大學經常挨餓的願意),看到她現在這樣省吃儉用我真的很不忍心。她以前的男朋友也沒有放過她,經常打電話來騷擾,並且來上海看她,還說了不少恐嚇她的話,她過於善良,說他以前畢竟幫助過她,叫我不要與他一般見識。以後的每天在家就是苦等面試通知,原本我想迅速找一家MIS公司解決眼前的困難,但是她堅持讓我不要放棄自己的理想,終於功夫不負有心人,我找到了一家通信公司,4000塊的工資雖然趕不上MIS公司給我開出的價位,但也夠在上海生存。她也找到了工作,第一天上班她哭了,這是她來上海第一次流淚,我心裡很難受也很感動。
由於是全新的行業,我把自己降到了零點,我學的VC、Delphi、資料庫派不上用場,擺在我面前的是嵌入式、協議、信令一些我從未接觸過的知識。我知道我沒有退路,於是拚命的學習,我把自己當做一個應屆畢業生一樣,一分努力一分收獲,半年過去我終於熟 悉了工作,並且得到了公司的表彰,薪水也加了一級。後面的日子裡我們省吃儉用,把欠朋友的1萬多塊錢還了,日子終於上了正軌。這時女朋友告訴我她想考研究生,我也很支持,於是她辭職在家備考。
另外,在這里我要感謝我的ProjectManager,他原來是一個大通信公司的產品經理,對人非常和善,我從他那裡學到了很多知識,而且他也給了我許許多多無私的幫助。在工作上他給我充分的空間和信任。記得公司安排我維護一個接入伺服器軟體,由於代碼量不算太小(5萬行),資料和文檔都不齊全,我維護起來非常吃力,所以想重新把它做一遍,公司領導不太支持,可能覺得工作量太大,但是他極力支持我,私下裡他讓我放手去做,我的維護工作他擠時間做。在他的支持下,我花了半年時間完成了接入伺服器的軟體,並 且實現了一個相對完整的TCP/IP協議棧。在這里我學會了嵌入式系統設計、驅動開發、TCP/IP和很多通信的知識,我花了一年時間終於使自己從MIS開發轉到了通信行業,並且站穩了腳跟。我的開發大量是對硬體的直接操作,不再受微軟的操作系統,VC、Delhpi這些開發工具的約束,我終於看到了另外一片天空。
我做事情喜歡追根問底,隨著開發的深入,軟體開發與硬體聯系越來越緊密,硬體知識的匱乏又對我的發展產生了障礙,而且晶元技術基本上掌握在國外公司的手裡,這對做系統級設計是一個非常大的制約,一個新產品出來,第一道利潤(也往往是最豐厚的利潤)常常都被IC公司如Intel、Motorola賺去了,國內的廠商只能喝點湯。所以我決心解決自己的硬體技術障礙,並打算離開通信行業,進入IC設計相關領域。
當然我明白如果我對硬體了解的非常少,沒有哪家IC公司會仁慈到招我這樣一個一竅不通的人來培訓。所以我必須努力打好基礎,學一些相關知識為以後做准備。就像我開始從MIS轉到通信一樣,我看過大量通信方面的書,並且給一個ISP做過RADIUS計費分揀台,在這樣的背景下這家通信公司才給了我這個機會。我在的通信公司是做系統設計的,有不少PCB Layout硬體人員,平常我就注意向他們學習,由於我做的是軟體,在公司看硬體資料不好意思,所以開始只好在家看,剛來上海工作我連續一年都在加班,後來不加了,因為我要擠出時間學習,通常我12點左右睡,第二天5點半起,我上班比較早,地鐵上如果人不多 我也用來看書。學習當然不會是一帆風順的,有些實在不懂的問題就積累起來問硬體人員,他們的幫助使我學習進度快了很多,因為在沒有人點撥的情況下自學,我的一半時間是 花在解決疑難問題上,但這種問題經常是別人的一句話就可以讓我豁然開朗,我非常慶幸我有這樣的學習環境。在後面的一年裡,我學會了看硬體原理圖,學會了簡單的硬體設計
(模擬電路方面還有不小的差距),事情就是這樣的,當你安安份份做軟體,別人永遠認為你是軟體開發人員,在你開始學習硬體時別人未必會認同,有位中興通訊的朋友還對我說過,一個人不可能把所有東西都學完。我也明白這一點,但我希望自己做的更好。但當你熟悉硬體後大家又會覺得你好像原本就是軟硬體都懂的,同事們也都習以為常了。這個時候我可以把硬體資料堂堂正正的拿到公司看,沒有人再大驚小怪了。讓我比較自豪的是我通過自己的努力做了一個IAD(軟交換的終端設備)系統方案,包含軟硬體的選型、設計等內容,這
個方案得到了公司和同事們的認同,讓我感到非常欣慰。

技術是相輔相成的,當我的硬體有了一定的進步後,我的軟體設計也有了很大的提高 ,我可以從更深層次理解問題,我做的接入伺服器CPU是Motorola PowerPC860,熟悉的朋 友都知道860 QMC與軟體的批量數據傳輸通常採用BD表的方式,硬體人員做驅動的時候習慣 採用固定BD表,每接收或發送數據都將數據從BD表拷貝到用戶Buffer,或從用戶Buffer拷 貝到BD表,由於理解的比較深入,我自己重新實現了這個過程,採用動態BD表的方式,驅動從一個網口接收數據,提交給我的軟體進行三層交換,直至從另外的介面發送出去,沒 有進行一次拷貝。這樣的設計大大提高了性能,使系統的指標接近理論值。軟硬體的結合使我的設計水平上了一個台階。我現在寫的這個操作系統,編譯後我把程序反編譯成匯編,找出其中不優化的代碼,然後在C程序中進行調整。舉個例子,很多CPU沒有專門的乘法指令,這個大家應該都知道,在這種CPU上進行一個乘法操作常常會花費大量的指令周期,有的朋友會說這個我知道,我會盡量避免採用×號,但是事情往往不是那麼簡單,你知道 C語言中數組的下標操作是怎麼實現的嗎?仔細看看反匯編的代碼你就會明白,同樣是通過下標的定位操作,C編譯器會有時候會產生位移指令,但有時候會用乘法實現,兩者效率往往是天壤之別,所以明白這些問題你才能將系統性能提升到極致。這些問題就不多說了,有興趣的話以後可以共同探討。

話說遠一點,我由衷的希望在軟體上做的比較深入的朋友們有機會學學硬體以及其它 相關知識,尤其是做底層開發和嵌入式設計的。這對軟體技術的提高有非常大的幫助,否 則很多事情你只知道該這樣但不會明白為什麼該這樣。我這個觀點在我現在的IC公司Proj ect Manager那裡也得到了驗證。他告訴我們公司現在802.11晶元產品的軟體經理原本是 做該晶元硬體設計的,某某某原本是做軟體的,現在在做IC,類似的例子還有很多,只是在國內這樣的風氣不是非常流行。

我有一些心得體會與大家分享,只有當我干好本職工作後,我才會學習與工作關系不 大的技術,這樣公司的上司才不至於反感,在入門階段的問題我通常不去問那些資深人士 ,而是問一些資歷比較淺的朋友,比如剛畢業不久的學生,因為他們往往會跟你詳細的講 解,而資深人士通常覺得你的問題太簡單,所以回答的也很簡單,我又不好意思多問。等 技術上了一定的層次後我才會問他們,他們也能給你比較深入的回答。另外,有些朋友說我機會比較好,他們也希望能從事新的工作可惜沒有機會,我聽了只有苦笑,我的機會了 解的人都應該知道,我沒有出生在什麼IT世家:)也沒有誰一路提拔我,所有的路都是自 己走出來的,我母親去世比較早,我的後母(我叫她阿姨)看著我努力過來的,一次她看我大年30還在寫程序,她說像我這樣努力木頭都能學出來。

我的最終目的是IC而不是PCB,所以我下一步的准備開始學習IC設計的知識。公司的同 事沒有懂IC設計的,後面的路又要靠自己了,我買了不少相關的書,在網上也查了很多的 資料,我花了大量的時間去學習VHDL,並且用軟體進行了一些簡單的設計和模擬(沒有設 計ASIC,只是針對FPGA),隨著學習的深入,我漸漸明白了IC設計的基本流程,同時也明 白了這條路的艱辛。這個時候我已經做好了跳槽的准備,我向一家業界又一定知名度的IC設計公司投了簡歷,並通過了漫長的面試(4個多小時)。其他的一切我都比較滿意,唯獨薪資差強人意,我也明白原因,因為我是這個行業的新人,我沒有經驗,我再一次將自清零了。公司老闆問我6000多一個月能不能接受,我知道他也是照章辦事。想想我通信行業的朋友們,基本上都是年薪10萬以上,月薪過萬的也比比皆是,朋友們也幫我介紹了不 少待遇不錯的公司,我該怎麼選擇,當時我很猶豫,我熱愛我的事業,我嚮往我的追求,但我也是一個普通的人,我也需要養家糊口,我也想早一點買房買車。生活給我出了一道難題。

愛因斯坦在63歲時說過一個人沒有在30歲以前達成科學上的最大成就,那他永遠也不會有。這句話給了我很大的壓力和震動,我馬上就26歲了,離30隻有四年時間,我必須抓緊這幾年寶貴的時間,努力達到我技術上的最高峰。為了這個理想,為了能離自己的夢更近一些,我選擇了這家IC公司,我明白自己的薪資和公司剛進來的碩士研究生相差無幾,但為了今後的發展只能忍受,一切又得重新開始。換行業是一個非常痛苦的過程,尤其從一個春風得意的位置換到一個陌生的崗位,感覺象從溫暖的被子里鑽出來跳進冰水中,讓人難以接受。在原來那家通信公司,我是唯一兩年時間漲了五次工資的員工,公司和同事 都給了我極大的認可,工作上也常常被委以重任。但現在這一切都成了過去,在新的公司 我只是一個新人,沒有人知道也沒有人在意我過去的成績。我決定重新開始,我把自己看作 新畢業的學生,我要用自己的努力得到公司的認可。進入新的行業是非常痛苦的,我告訴自己必須忍受這一切,雖然外面有很多誘惑,但是既然作出了選擇我就不允許自己輕易放
棄。

我現在已經在這家新公司上了一個多月的班,開始非常艱難,現在慢慢適應了。第一 個月結束時,Team Leader找我談話,說我是新進員工中最優秀的一個,我心裡很欣慰,這也算對我努力的一個肯定吧。在這里還要感謝我的女朋友,她給了我很大的支持和鼓舞, 每次在我動搖的時候她都在鼓勵我,讓我堅持自己的理想,剛來上海是她讓我不要勉強去 做MIS,這次也是她讓我頂住了月薪過萬的誘惑,沒有她我可能不會有今天的成績。現在的公司有自己的操作系統,自己的CPU、DSP和其它晶元,在這里我能學到世界上 最先進的技術,我們的設計開發不再完全依賴別人的硬體和系統,這讓我很開心。我打算等工作步入正軌後,全力學習新的知識,實現我的理想。

在後面的兩年裡我給自己定下了幾個目標:

一.努力做好本職工作,在工作上得到公司和同事們的認同;
二.努力學習IC硬體設計知識,多向同事請教,並利用一切機會多實踐;
三.實現我的實時操作系統的主要部分,完成TCP/IP協議棧模塊,並免費發布源代碼;
四.和我女朋友結婚並買一套小房子,這是最重要的,因為我明白事業是可以重來的,但是珍貴的感情很難失而復得。

在這里提一下我現在開發的操作系統,它是一個實時嵌入式系統,目前支持以下特性:

a.支持時間片輪轉調度和基於優先順序調度,最多64個優先順序;
b.搶占式實時內核;
c.為了便於移植,主體用標准C實現;
d.匯編代碼非常少,不到100行;
e.支持任務管理,各任務有獨立的堆棧;
f.進程同步和通信目前完成了Semaphore,Message Queue正在調試;
g.實現了定時系統調用;
h.可以在windows上模擬調試

我還打算下一步實現優先順序反轉保護,Event Flag,Data Pipe,內存管理(以前實現過) 、驅動介面等。在這之後我還會努力完善它,比如加入文件系統,協議棧、調試介面等。希望朋友們提出自己的意見和建議,在此不勝感激!

後記:

就像有的朋友說的,我的經歷或許會給一些朋友產生誤導,在這里我必須說明一下。我來上海以前學習過於拚命,常常晚上只睡3個多小時,我身高1米71,那時只有108斤(我 現在130多),家人也說我這樣拚命活不過60歲,但是當時的我太固執,我對他們說只要能 實現理想活50歲我就夠了。那時的拚命使我的身體受到了影響,有一次早上突然腰肌劇痛難忍,痛的我倒在床上站不起來。雖然我現在已經比較注意,但有時候還會隱隱作痛。後來在女朋友說服了我,來上海以後我不再如此。我經常引用父親的一句話身體是革命的本錢。

而且我也發現拚命不是辦法,我可以熬一兩個通宵,最多的一次我連續工作了三天三夜, 但是我半個月都沒有恢復過來,這樣是不是得不償失?學習工作應該是一個長期的過程, 像馬拉松而不是百米沖刺。我現在非常注意調整學習和工作的強度,我要保證每天盡量有 相對充沛的精力,一些年輕的朋友覺得自己也應該拚命努力,這讓我多少有些擔心,如果我的故事能讓你在學習工作上多一點興趣,我會感到很開心,但如果誤導了某些朋友,讓你做一些不值得的付出,我會感到很內疚。

技術沒有貴賤只分,我以前換行業是因為自己的興趣所致,而不是對哪個行業有什麼偏見。我希望我的經歷不要給朋友一個錯誤的導向,覺得我始終向更高的技術發展。其實各行各業做到頂尖都是很困難的。話又說回來雖然技術沒有貴賤,但是門檻是有高低的,無論如何,做IC的門檻要比做網頁的高,這一點無可否認。國家各種人才都是需要的,但是作為個人奮發向上的想法還是應該有的,努力在自己喜歡的行業上做的更好,而不應該停留在比較膚淺的層次上。

我是一個自己覺得比較有自知之明的人,或許我最大的優點就是知道自己有很多缺點 :)。我的故事中很多的曲折和錯誤都是由我的缺點造成的,希望大家用審慎的眼光看待 我的經歷,不要被我的花言巧語所迷惑。我學習有些隨心所欲,這給我帶來了無盡的麻煩,也大大阻礙的我的發展。記得我小時候成績比較出色,但是後來學習嚴重偏科,導 致我中學成績一再滑坡,也沒有考上什麼好的學校,小時候的一個朋友,當時的成績和我相仿,但是沒有我這個缺點,她上了清華,後來在去了美國深造,在一個著名導師手下研究理論科學,這未嘗不是一條更好的出路。另外我的學習方法也是在不斷改善中的,過去的學習過於講究數量和時間,那樣學習既苦而已效率不高,現在我非常注意學習的效率和技巧,這樣才是學習的捷徑(當然不是指投機取巧),比如說學一相對陌生的技術,如果有條件,不妨問一問有經驗的人,不需要問很多,往往他不經意的幾句話會給你非常大的幫助,甚至超過你看一個星期的書。帶著這樣的思想再去學習你會節省很多時間,這樣何樂不為呢?這些年中我學了不少的東西,由於開始非常盲目,所以學的東西雜亂無章,現在回想起來讓我啼笑皆非,我把大量的時間浪費在一些沒有必要深入了解的知識上,畢竟一個人的精力是有限度的。很多朋友很我一樣都背過五筆字形,的確它是個不錯的輸入法,但是對一個研發人員它絕對不值得你去背,你的時間應該花在有價值的地方。我這樣的事情還做過很多,我背過CCED、WPS的命令和快捷鍵,在dBase基本退出歷史舞台後我還花了很多時間去學習它的使用。所以我的學習在前期缺乏規劃,沒有明確的短期目的、中期目標,只有一個虛無飄渺的長期的理想。這就像做設計一樣,好的設計是從需求抽象到代碼有很多過程,而不能得到了需求就立刻開始開始編碼。

當然這么些年的學習和工作多多少少有些收獲,下面我說說我的一些學習的心得,這些方法未必正確,我也在不斷探索和改進中。我的學習和工作有相對明確的目標,我不會一時心動而去學習某一技術,在下決定之前我會考慮很多,包括長期的發展,個人路線的規劃,需要付出的代價、可能遇到的困難及解決的辦法等等,在決定後還會制定更加明確 的計劃,包括短期、中期和長期的,身邊可以利用到的資源(包括好的書籍、資料、軟硬體環境,也包括有經驗的朋友或者師長),以及每一個階段是怎麼過渡到高一階段的計劃 ,往往在一個學習階段一旦上路後會走的相對順利,但是跨階段通常比較麻煩,比如從學 習基礎知識轉到實踐。另外我買書也有自己的方法,現在世面上高質量的書遠不如低質量書多,對於一個陌生的技術,往往在第一次買書會選擇錯誤,即使買到一本好書但是它的方向也未必適合你,所以我通常會先在網上查找一些該技術的介紹,有了一點點概念後再去買一本比較薄、相對便宜並且內容相對泛泛而談的書,這是國內作者最善於寫的書:) ,再把它瀏覽一遍後我就會基本明白這門技術的要點,後面買書和制定計劃就會明確的多 。否則一開始就想找本好書往往比較困難,而且買回來後努力學習,有時候學了一半才發現是本低質量的書或者是相對過時技術,讓人非常懊惱。另外讓有經驗的人幫你介紹,通常也是一個不錯的選擇。

B. 西門子PLC問題

對於西門子的PLC 通信非常重要的 對於大型的系統 西門子的優越性事顯而易見的 但是你要想學好PLC 就得有現場匯流排的基礎 也就是通信的基礎 包括通信方面的編程基礎 《西門子工業通訊及現場設備》這個手冊你可以在上可以下載到 這是很早的 但是對於你了解西門子通信很有幫助 有一本書你可以看看
書 名:西門子工業通信網路組態編程與故障診斷
叢書名:西門子工業自動化系列教材
主 編 廖常初
副主編 祖正容
機械工業出版社
責任編輯 李馨馨
書 號 ISBN 978-7-111-28256-3
盤 號 ISBN 978-7-89451-204-8
光碟使用說明
本光碟為《西門子工業通信網路組態編程與故障診斷》一書的配套DVD光碟。
本光碟提供了經西門子公司授權本書配套使用的通信軟體、資料與手冊,和本書中的常式。
光碟中後綴為pdf的用戶手冊需要用Adobe Reader(Adobe閱讀器)閱讀。

隨書光碟內容簡介

通信軟體
CP_PtP_CD:點對點通信處理器的光碟
Drivemonitor V5.4
iMap V3.0
PC Adapter USB Drive:USB/MPI適配器的驅動程序
PDM V6.0.1
PDM V6.0.3
S7-PDIAG V5.3
SIMATIC NET 2007
串口通信調試軟體
\資料與手冊\300_400軟體手冊
PLCSIM使用入門.pdf
S7-PLCSIM V5.4 User Manual.pdf
System Software and Standard Functions Reference Manual.pdf
使用STEP 7編程.pdf
梯形圖(LAD)編程參考手冊.pdf
用於S7的系統軟體和標准功能參考手冊.pdf
語句表(STL)編程參考手冊.pdf
\資料與手冊\300_400硬體手冊
CPU 31xC和CPU 31x技術規范設備手冊.pdf
CPU 31xC和CPU 31x安裝操作說明.pdf
S7-300 CPU 31xC技術功能操作說明.pdf
S7-300 模塊數據設備手冊.pdf
S7-400 CPU Specifications Manual.pdf
S7-400 CPU規格設備手冊.pdf
S7-400 Mole Data Reference Manual.pdf
S7-400模塊規范參考手冊.pdf
S7-400硬體與安裝手冊.pdf
S7-400H容錯系統手冊.pdf
自動化系統S7-300.pdf
組態硬體和通訊連接手冊.pdf
Configuring Hardware and Communication Connection Manual.pdf
\資料與手冊\ AS_i
Addressing and Diagnosis Instrument for AS-i.pdf
AS-i Introction and basics Manual.pdf
CP 243-2 AS-i Master Manual.pdf
CP 343-2_343-2P AS-i Master Manual.pdf
DP_AS-i Link 20E Manual.pdf
如何配置CP 343-2P.pdf
\資料與手冊\ET 200
\ET 200S模塊中文設備手冊
ET 200產品目錄2008.pdf
ET 200B Manual.pdf
ET 200eco PN操作指導.pdf
ET 200eco操作指導.pdf
ET 200iS Manual.pdf
ET 200iSP操作說明.pdf
ET 200M Operating Instructions.pdf
ET 200M操作說明.pdf
ET 200pro Operating Instructions.pdf
ET 200pro故障安全模塊操作說明.pdf
ET 200pro操作說明.pdf
ET 200R Manual.pdf
ET 200S操作說明.pdf
ET 200X BM 147 CPU Manual.pdf
ET 200X Manual.pdf
\資料與手冊\PA
DP_PA耦合器連接器和Y型連接器操作說明.pdf
PA匯流排閥門定位器與S7建立通訊.pdf
PROFIBUS-PA應用技術手冊.pdf
SITRANS T3K PA.pdf
如何配置PA匯流排儀表方案.pdf
智能電器閥門定位器操作說明.pdf
\資料與手冊\ PROFIBUS
CP 342-5 / CP 342-5 FO Manual.pdf
CP 443-5 BASIC Manual.pdf
CP 443-5 Ext Manual.pdf
CP 5511 Manual.pdf
DP-DP Coupler User Description.pdf
PROFIBUS CP組態和調試手冊.pdf
Profibus Technology and Application.pdf
S7-CPs for PROFIBUS Configuring and Commissioning Manual.pdf
\資料與手冊\產品樣本
Instrial Communication Catalog 2009.pdf
ET 200產品目錄.pdf
PROFINET產品樣本2005.pdf
S7-300產品目錄.pdf
S7-400產品樣本.pdf
Scalance X交換機選型樣本.pdf
SIMATIC控制器產品手冊.pdf
SIMATIC工業軟體.pdf
工業通訊及現場設備產品目錄2004.pdf
工業乙太網產品樣本2005.pdf
人機界面系統產品手冊.pdf
西門子工廠自動化產品系列.pdf
\資料與手冊\第15章的手冊
CP 340 PtP列印機驅動程序入門指南.pdf
CP 340安裝與組態手冊.pdf
CP 341設備手冊.pdf
CP 440 Manual.pdf
CP 441 Manual.pdf
S7-300_400路由功能.pdf
\資料與手冊\工業乙太網與PROFINET
Configuring Plants in iMap.pdf
CP 343-1 lean手冊.pdf
CP 343-1 PN Manual.pdf
CP 343-1手冊.pdf
From DP to PROFINET IO Programming Manual.pdf
PROFINET CBA通信入門.pdf
PROFINET CBA用戶程序介面入門.pdf
PROFINET IO Configuration and Diagnostics.pdf
PROFINET技術和應用系統描述.pdf
Profinet系統手冊.pdf
SCALANCE X-200操作說明.pdf
SCALANCE X-400 SNMP管理入門.pdf
SCALANCE X-400路由指導手冊.pdf
從PROFIBUS DP到PROFINET IO編程手冊.pdf
工業乙太網CP組態與調試手冊.pdf
使用CP 343-1 IT_CP 443-1 IT的信息技術手冊.pdf
\資料與手冊\驅動
CBP_CBP2通信板使用說明書.pdf
MM 420變頻器使用大全.pdf
MM 440變頻器使用大全.pdf
SIMOREG DC Master使用說明書.pdf
SIMOVERT_MASTERDRIVES使用大全_上.pdf
SIMOVERT_MASTERDRIVES使用大全_下.pdf
VLT5000 PROFIBUS Manual.pdf
VLT5000手冊.pdf
\資料與手冊\診斷
BT200 Physical Bus Test Device for PROFIBUS-DP.pdf
CPU 31xC和CPU 31x安裝操作說明.pdf
Diagnostic Repeater for PROFIBUS-DP Manual.pdf
FB125 HELP.chm
PDIAG使用入門.pdf
PROFINET IO Diagnostics.pdf
S7-PDIAG Configuring Process Diagnostics Manual.pdf

常式說明
\Project\PB_MS:第3章的常式
\Convert:DP主站與SIMOVERT MASTERDRIVES變頻器通信。
\Danfoss:DP主站與丹佛斯變頻器通信。
\DCMaster:DP主站與DC MASTERDRIVES通信。
\FC4_CTRL:DP主站用FC 4控制DP網路和DP從站。
\MM440:DP主站與變頻器MM 440通信。
\PB_EM277:DP主站與EM 277通信。
\PB_MS_1:DP主站與ET 200通信。
\PB_MS_2:DP主站與智能從站通信。
\PB_MS_3:DP主站調用SFC 14、15與智能從站通信。
\PB_MS_4:CPU 413-2DP與作為從站的CP 342-5通信。
\PB_MS_5,CP 443-5 Ext與作為從站的CP 342-5通信。
\PB_MS_6:CP 342-5作主站與ET 200通信。
\Project \PB_S7:第4章的S7連接常式
\PB_CTRL:CPU 413-2DP遠程監控另一台CPU 413-2DP。
\PB_CTRL2:CPU 413-2DP遠程監控CPU 313C-2DP。
\PB_S7_1:CPU 413-2DP和CP 342-5之間的S7單向通信。
\PB_S7_2:CP 443-5 Ext和CP 342-5之間的S7單向通信。
\PB_S7_A:CPU 413-2DP和CPU 313C-2DP之間的S7單向通信。
\PB_S7_B:CPU 413-2DP之間調用USEND/URCV的S7雙向通信。
\PB_S7_C:CPU 413-2DP之間調用BSEND/BRCV的S7雙向通信。
\PB_S7_D:CPU 413-2DP調用GET/PUT與CP 443-5的S7單向通信。
\PB_S7_E:CPU 413-2DP與CP 443-5之間調用USEND/URCV的S7雙向通信。
\Project \PB_FDL:第4章的FDL連接常式
\FDL_1:CPU 413-2DP和CPU 315-2DP之間的FDL通信。
\FDL_2:兩台CPU 315-2DP之間的FDL通信。
\FDL_2Net:兩個PROFIBUS子網上的CPU 315-2DP的FDL通信。
\FDL_mul:CPU 315-2DP之間的FDL多點傳送方式通信。
\FDL_Pro1:兩個項目中的CPU 315-2DP之間的FDL通信,項目之一。
\FDL_Pro2:兩個項目中的CPU 315-2DP之間的FDL通信,項目之二。
\FDLbroad:CPU 315-2DP之間的FDL廣播方式通信。
\FDLfree2:CPU 315-2DP之間的FDL自由第二層通信。
\Project \PB_Others:第5章的常式
\DX_1:智能從站之間的DX通信。
\DX_2:DX通信,智能從站接收ET 200M發送的數據。
\DX_3:DX通信,智能從站發送數據給網路上的另一個主站。
\Intrrupt:智能從站調用SFC 7觸發主站的硬體中斷。
\Isochron:ET 200M和ET 200S作從站的恆定匯流排周期通信。
\SFC_12:DP主站用SFC 12激活和禁止DP從站。
\Syncfrez:一組從站的輸出同步與輸入凍結。
\Project \PB_DIAG:第6、7章的常式
\443_Diag:CP 443-5作主站,診斷3個DP從站的實例。
\FB_125:調用FB 125和FC 125診斷DP從站。
\FC3_Diag:調用FC 3診斷CP 342-5的DP從站。
\HW_Diag:CPU 313C-2DP和3個DP從站的故障診斷實例。
\MS_Diag:DP主站和智能從站的相互診斷。
\OB_Diag1:CPU 413-2DP作主站,用OB的局部變數診斷DP從站的故障。
\OB1SFC13:在OB1和OB82中調用SFC 13診斷ET 200M和ET 200B的故障。
\PB_MS_7:CPU 313C-2DP作主站,ET 200作從站,用於錯誤OB應用實驗。
\Repeater:診斷中繼器應用常式。
\SFC_13:在OB82和OB86中調用SFC 13診斷ET 200M和ET 200B的故障。
\SFC_51:調用SFC 51讀取局部系統狀態表,診斷DP從站的故障。
\SFC13_S:調用SFC 13診斷ET 200S的故障。
\Project \Alarm Display:第8章的常式
\Alarm_D:調用SFC 107/108生成消息,用WinCC flexible和PLCSIM模擬。
\Alarm_S:調用SFC 17/18生成消息,用WinCC flexible和PLCSIM模擬。
\ReportEr:報告系統錯誤,用WinCC flexible和PLCSIM模擬。
\ReptErPC:報告系統錯誤,用WinCC和PLCSIM模擬。
\ReptPC1:報告系統錯誤,WinCC用DP網路監控硬體PLC,未生成PC站點。
\ReptPC2:報告系統錯誤,HMI和WinCC用DP網路監控硬體PLC,生成PC站點。
\S7PDIAG:用S7_DIAG生成地址監控的消息。
\SFC_52:生成用戶自定義的診斷消息。
\Project \PA:第9章的常式
\PA:使用PDM組態PROFIBUS-PA設備。
\PB_PA1:僅使用DP/PA耦合器的PROFIBUS-PA通信組態。
\PB_PA2:使用DP/PA鏈接器的PROFIBUS-PA通信組態。
\PA_GSD:PA設備的GSD文件。
\Project \Ethernet:第10章的常式
\IE_ISO:CP 343-1 IT和CP 343-1的ISO連接通信。
\IE_S7_1:CP 343-1 IT和CP 343-1調用PUT/GET 的S7通信。
\IE_S7_2:CP 343-1 IT和CP 343-1調用USEND/URCV的S7通信。
\IE_S7_3:CP 343-1 IT和CP 343-1調用BSEND/BRCV的S7通信。
\IE_TCP:CP 343-1 IT和CP 343-1的TCP連接通信。
\IE_UDP:CP 343-1 IT和CP 343-1指定通信夥伴的UDP連接通信。
\ISOonTCP:CP 343-1 IT和CP 343-1的ISO-on-TCP連接通信。
\UDP_MUL:3個站點之間多點傳送的UDP連接通信。
\UDPfree:3個站點之間組態時未指定通信夥伴的UDP連接通信。
\Project \PROFINET:第11章的常式
\315_2PN:CPU 315-2PN/DP作控制器的PROFINET網路通信。
\CP343_1:CP 343-1作控制器的PROFINET網路通信。
\CP443_1:CP 443-1作控制器的PROFINET網路通信。
\New Plant:iMap的項目。
\PN_CBA1:用於生成CBA組件的項目。
\PN_CBA2:用於生成CBA組件的項目。
\Project \ASI:第12章的常式
\ASI_Link:基於DP/AS-i Link 20E的AS-i網路通信。
\ASI343_2:基於CP 343-2的AS-i網路通信。
ASI243_2.mwp:基於CP 243-2的AS-i網路通信,S7-200的項目。
\Project \OPC:第13章的常式
\DP_OPC:基於DP網路的OPC通信的STEP 7項目。
\IE_OPC:基於乙太網的OPC通信的STEP 7項目。
\MPI_OPC:基於MPI網路的OPC通信的STEP 7項目。
\組態王OPC:OPC通信的組態王項目。
DP_OPC.opp:基於DP網路的OPC Scout項目文件。
IE_OPC.opp:基於乙太網的OPC Scout項目文件。
MPI_OPC.opp:基於MPI網路的OPC Scout項目文件。
\Project \MPI_GD:第14章MPI全局數據通信常式
\MPI_GD_1:CPU 413-2DP和CPU 315-2DP之間的全局數據通信。
\MPI_GD_2:CPU 315-2DP之間的全局數據通信。
\MPI_GD_3:CPU 413-2DP和兩台CPU 315-2DP之間的全局數據通信。
\MPI_GD_A:CPU 413-2DP之間的全局數據通信。
\MPI_GD_B:CPU 413-2DP之間事件驅動的全局數據通信。
\Project \MPI_UC:第14章S7基本通信常式
\MPI_224A:CPU 315-2DP與CPU 224的MPI通信。用IW0控制對方的輸出點。
\MPI_224B:CPU 315-2DP通過MPI讀寫CPU 224的V數據區。
\MPI_UC_1:CPU 413-2DP和CPU 315-2DP調用X_RCV/X_SEND的通信。
\MPI_UC_2:CPU 413-2DP和CPU 315-2DP調用X_PUT/X_GET的通信。
\MPI_UC_3:CPU 315-2DP之間調用X_RCV/X_SEND的通信。
\MPI_UC_4:CPU 315-2DP之間調用X_PUT/X_GET的通信。
\MPI_UC_5:3台PLC之間S7基本通信綜合應用常式。
MPI_224.mwp:CPU 224與CPU 315-2DP通信的程序。
\Project \MPI_S7:第14章MPI S7連接常式
\MPI_CTRL:CPU 413-2DP遠程監控另一台CPU 413-2DP。
\MPI_S7_1:CPU 413-2DP和CPU 313C-2DP之間的S7單向通信。
\MPI_S7_A:CPU 413-2DP之間調用PUT/GET的S7單向通信。
\MPI_S7_B:CPU 413-2DP之間調用USEND/URCV的S7雙向通信。
\MPI_S7_C:CPU 413-2DP之間調用BSEND/BRCV的S7雙向通信。
\MpiCtrl2:CPU 413-2DP遠程監控CPU 315-2DP。
\MpiS7Mul:CPU 413-2DP之間S7通信SFB綜合應用常式。
\Project \Chapter15:第15章的常式
\ASCII:CP 340使用ASCII協議通信。
\HMI_Rout:用於HMI的S7路由功能。
\IE_MPI:用於PG/PC的S7 路由功能。

希望對你有幫助
其實要學好還是看大量的技術手冊 但是這本書可以給你一個基本的認識
有事 發郵件給我 [email protected]

熱點內容
獲取ftp文件 發布:2024-11-24 21:54:20 瀏覽:520
資源平滑演算法 發布:2024-11-24 21:54:18 瀏覽:57
vs和vc編譯器哪個好使 發布:2024-11-24 21:54:07 瀏覽:804
愛課程適用於什麼安卓系統 發布:2024-11-24 21:54:02 瀏覽:38
51單片機編譯 發布:2024-11-24 21:50:05 瀏覽:366
android常用的工具類 發布:2024-11-24 21:42:25 瀏覽:48
用戶管理源碼 發布:2024-11-24 21:29:36 瀏覽:677
監控怎麼配置路由器 發布:2024-11-24 21:29:27 瀏覽:455
小型編譯器的實現 發布:2024-11-24 21:27:48 瀏覽:999
安卓手機為什麼下巴不掉 發布:2024-11-24 21:26:37 瀏覽:214