第一篇:編程經驗
1.當性能遇到問題時,如果能在應用層進行計算和處理,那就把它從數據庫層拿出來。排
序和分組就是典型的例子。在應用層做性能提升總是要比在數據庫層容易的多。就像對于MySQL,sqlite更容易掌控。
2.關于并行計算,如果能避免就盡量避免。如果無法避免,記住,能力越大,責任越大。
如果有可能,盡量避免直接對線程操作。盡可能在更高的抽象層上操作。例如,在iOS中,GCD,分發和隊列操作是你的好朋友。人類的大腦沒有被設計成用來分析那些無窮臨時狀態——這是我的慘痛教訓所得。
3.盡可能簡化狀態,盡可能局部本地化,適用至上。
4.短小可組合的方法是你的好朋友。
5.代碼注釋是危險的,因為它們很容易更新不及時或給人誤導,但這不能成為不寫注釋的理由。不要注釋雞毛蒜皮的事情,但如果需要,在某些特殊地方,戰略性的長篇注釋是需要的。你的記憶會背叛你,也許會在明天早上,也許會在一杯咖啡后。
6.如果你認為一個用例場景也許“不會有問題吧”,它也許就是一個月后讓你在發布的產品
中遭受慘痛失敗的地方。做一個懷疑主義者,測試,驗證。
7.有疑問時,和團隊中所有相關人交流。
8.做正確的事情——你通常會知道這指的是什么。
9.你的用戶并不傻,他們只是沒有耐心理解你的捷徑。
10.如果一個開發人員沒有被安排長期的維護你們開發的系統,對他保持警惕。80%的血、汗、淚水都是在軟件發布后的時間里流的——那時你會變成一個厭世者,但也是更聰明的“行家”。
11.任務清單是你的好朋友。
12.主動讓你的工作更有樂趣,有時這需要你付出努力。
13.悄無聲息的崩潰,我仍然會為此從噩夢中驚醒。監控,日志,警報。清楚各種的假警報
和不可避免的感覺鈍化。保持你的系統對故障的敏感和及時警報。
14.復雜是大敵。
第二篇:PLC編程經驗詳談
PLC編程經驗詳談
(晴天)2009-3-17 13:31:00
------------------
PLC程序調試步驟
人的腦力是有限的,并且記事情也有時間性。過了N天就會忘記每次修改的原因,為什么要加這條指令,為什么要刪除這個網絡,讓自己以后看自己以前編寫的程序時都會很困惑。做到以下步驟,對所有程序理解與修改會有很大幫助的。
1、把原有程序另存一個, 在另存的程序上作修改。文件命名一個主要的程序名稱,標注第幾次修改,并加上修改的日期,最好是在文件名外加上簡要的修改標題。例如: 《 捆扎程序5(06.10.23翻板步進電機加條件)》
2、用.doc文件記錄修改的年月日。
3、在日期下面記錄修改程序的步驟,增加或是刪除了哪些指令等。并在程序的編輯條注釋中做記錄,以備下次修改。
4、在.doc文件中詳細記錄修改程序的原因,所出現的故障現象是什么,故障是如何排除的。
5、在.doc文件中標注修改后所現用的程序全名,包括日期與簡要的修改標題。
6、把過時與現用的程序用,過時文件夾與現用文件夾分開整理,按日期排列。
這樣每次所作的修改就有了詳細的檔案,便于以后的程序修改。現用的程序是標有最近日期的程序。
這樣的工作步驟同時也適用于電氣圖紙的修改
PLC編程經驗
弄通有關PLC程序設計理論是重要的。沒有這方面的理論準備或指導,僅靠在實踐中摸索,簡單的問題還好辦。復雜的就不好辦了。不僅無從下手,而且花了很多時間與精力,也難編出效率較高、質量也較高的程序,常常是事倍功半。
但是,編程的具體實踐,以及在這個實踐中得來的知識或技能,即經驗,也是重要的。沒有經驗,僅有理論,既無法深刻理解理論,又無法靈活應用理論。這正如學數學,如僅了解一些定理或記住一些公式,沒有作相應的練習,肯定是學不好的。更不用說,任何理論也都只是經驗的總結,歸根到底也都有是來自實踐。
1、經驗積累
經驗有別人的,也有自己的,都很重要。前者要靠細心學習,后者要靠用心積累,都要在一定的時間與必要的精力。
別人的經驗有上了書的或登載在雜志上的。有的是細心學習別人的,但多數是我自己的經驗。所有的例子都經我測試過,都經實踐證明是可行的。我想,別的書本或雜志上介紹的也會是這樣的。所以學習這樣楊功的經驗是必要的。
還有就是你同事的經驗,也是值得學習。這種經驗離你很“近”,很易借鑒。
自己的經驗則是最重要的。要在自己的實踐中,積累自己的經驗。同時,最好在學別人的經驗時,也能親自作些測試,能使自己也有類似的經歷,進而把這些經驗變成自己的。這也是自己經驗的重要積累。
還有一些失敗的經驗,這往往是不會公開的,但這些經驗也要學習,也要積累。
經驗的積累要用自己的腦記,更要用電腦記。最好作些分類,建立一個自用的程序庫,以便于隨時引用。
2、經驗升華
經驗還有待升華。升華有三個層次:
最低的層次就是建立一個典型的程序庫,供今后再用。若程序復雜,還可建一些功能塊,或子程序,以便以后引用。
其次,要總結出有效算法。如單按鈕起停程序庫等。
最高層次的升華是把經驗上升到理論的高度,為豐富PLC程序設計理論作貢獻。我想,隨著PLC使用的普及與提高,是會有越來越多從經驗中升華出來的,而又能用以指導實踐的PLC編程理論的。
3、經驗應用
經驗積累、經驗升華都是為了應用。經驗應用有三方面:
1)用作工程設計模板。設計新系統時,選用一個或幾個與現設計工程類似的,已取得成功的工程,作樣板進行設計。這既可減輕設計的工作量,又增加設計的成功率。這也是信息可重用的一大好處。
2)用作程序設計參考。在無成功的工程可作樣板時,在新設計的邏輯中,仍有相當一部分控制邏輯,可采用或借用已有典型邏輯,這也可減少設計的工作量,增加設計的成功率。
3)用作算法設計參考。在既無樣板可參照,又無典型可采用時,還可運用過去的一些成功的算法。
經驗是寶貴的,但是經驗特別是個人經驗,總是有限的。所以,經驗的應用也還要與編程理論相結合PLC現場工程師工作指南
一、出發前的準備
從事PLC的技術支持的人,如果是要到現場開始進行系統調試,無論是對OEM客戶,還是對一個過程控制的系統集成,都要在事先做好一些準備工作。就像一個“驢友”出行前,要更換自己的服裝尤其是鞋子,帶好水、食品,還要準備在野外的一些防身用品,如果是過夜的話,還要有帳篷、手電筒等一樣,作為一個職業的PLC技術支持工程師,也有不少的東西是要準備的。
首先要安排自己的行程計劃和衣食住行。如果是需要住宿的話,那么如何定機票、酒店(旅館、招待所),這里就不多說了。如果時間很長(如超過一個月),為了省錢,就要考慮在當地租房子了,尤其是出發的是一個小組,而不是一個人的時候。衣食住行,這些問題與普通的旅行是一樣的,雖然這些問題對你完成任務的影響力并不亞于你的專業水平。想
象一下,你到了現場,因為食物中毒導致一個星期拉痢疾的情況會對工作造成什么樣的影響,就知道該準備那些東西了。通常,有經驗的自動化公司的行政部門會為工程師考慮好這些情況,但是,作為工程師自己一定要進行確認,看看是否所有的事情都已經安排好了。
安頓好了衣食住行的后,要準備自己的工具。作為PLC的現場調試工程師,并不需要很多的調試工具。但是,一個螺絲刀、一臺萬用表,還是必備的。另外,如果要與現場的儀表傳感器進行系統聯調的時候,還要有一臺信號發生器來模擬現場儀表的信號,以確定當發生問題時,現場的信號是完好的。還有,一臺結實的手提電腦,是你編程和調試的必需的工具。雖然這些工具你可以要求用戶準備好,但是,作為一個職業的PLC工程師,如果連這幾樣工具都沒有,會被用戶懷疑你的職業水平的。其它的一些儀器儀表,如果需要的話,你可以向公司或者客戶提出來,讓他們提前準備,比如,示波器、穩壓電源等等。畢竟這些不那么通用的儀器,通常是不可能隨身攜帶或備用的。
有一些常被忽視的小東西,你準備了之后一定有用的。如,電氣膠帶、熱縮套管、打火機(你吸煙的話自然會有,沒有別人也會有),束線帶、還有,如果現場接線已經完成了,要準備好一些與信號線相同的電纜,和一些固定基座的螺絲。你可能懷疑要這些做什么用,相信我,帶上這些,雖然有些只值幾分錢,但到了現場后,可能會節約你一天甚至幾天的時間,尤其是你去的地方是在一個偏遠的山區的時候。雖然在發貨的時候廠家都有螺絲釘,但是到了現場什么都有可能發生,如果螺絲釘不夠(而這是每次都必然發生的),會引起許多問題。
除了以上的東西,就是這次調試所要帶的備品備件了。雖然現場的貨物清單可能會已經考慮了備品備件的問題,但為了應付萬一的情況,有些備件你最好還是自己要隨身攜帶。首先是PLC的基板(有的成為機架)、電源、CPU模塊,因為這些是一臺PLC能夠工作的基礎,如果現場只有一套系統,那么這些模塊就只有一個,假如沒有備分的話,一旦出現故障,你的所有的工作都必須停下來。因此最好帶上一套。
其它的I/O模塊和通訊模塊,如果現場只有一個的,你都要考慮在多帶一個。對于那些現場已經有兩塊以上的模塊,你就不用考慮自己帶了。
二、設計交底工作
如果系統設計不是你自己做的,那么在出發前,就要與系統的設計人員進行充分的溝通,對于不清楚和不明白的地方,一定要弄清楚,確保自己清晰地理解了要完成的工作目標,和設計者的意圖。不要輕易否定設計者的方案,也不要輕易地說別人那里設計得不行。
但是,因為你是從事現場的工程師,因此,也不必過于迷信設計者。你可以提出自己的建議。比如,PLC的機架和CPU模塊和I/O模塊的搭配原則,可能有時候,設計師不知道你所用的 PLC的機架有4槽、6槽和8槽,甚至12槽的,因此,也許全部都選了8槽的,而導致了幾個槽的空缺,你可以建議它修改為4槽或6槽的。
方案設計中,最容易出問題的地方是通訊,現場調試最麻煩的地方也是通訊,所以對于通訊的部分,你必須清晰了解系統的框架結構,并且對需要進行通訊的東西在出發前就要全部進行一遍調試,而且要確認其中的所有需要通訊的模塊是可以通訊的。比如,操作臺電腦、觸摸屏、PLC、變頻器、其它的PLC、一些智能儀表和儀器,如果這些東西需要通訊的話,你必須要確認它們相互之間是可以通訊的,如果你不確認的話,就要與廠家聯絡,并親自再試一次。如果PLC的節點數較多,要考慮距離和廠家CPU的限制。
如果系統較大,遠程單元、本地機架數量、每個機架的模塊數量的限制,并非出于系統功能和技術上的限制,而是由于使用規范性的限制。在系統硬件組態時,要考慮這些模塊的搭配作用。
對于電源模塊的配置,一個資深的工程師應該能夠做出比較合理的搭配。例如,電源模塊通常有5A和10A的分別,如果模塊較少,可以選用功率小的電源模塊,如果模塊較多,則應該選用大功率的電源模塊。而一般,如果現場儀表需要PLC也供應24V直流電源而不是采用外部電源供電(如RTU)的情景,通常CPU所在的機架上選用大功率的電源比較合理。
此外,在I/O模塊的安裝時,根據不同的系統,通常同型號的模塊放置在一起。但是,如果對于輸出模塊與輸入模塊形成回路的,則可以將一個回路的參量所涉及的模塊放置在一個機架上(或一個CPU所控制的機架上)比較合理。有的設計師在設計的時候不會考慮這一點,你可以調整過來。
在選型的時候,因為各種PLC都有大型、中型、小型的分別,這些分別主要是由CPU模塊的性能不同造成的。在實際上,并非一定大型的功能就是合適的。除了價格方面的考量之外,主要是,如果控制點數不多,小型的CPU模塊完全可以勝任,則小型的CPU反而比大型的CPU模塊工作還要可靠一些。因為,小型的CPU所涉及的資源少,而大型CPU的資源多,在程序執行中,為處理那些程序不需用到的資源時,也要分配時間去處理,這樣不僅造成資源的浪費,可能在程序處理上不及小型CPU可以更單純和穩定地工作。
在設計交底的過程中要指出的是,對于設計中的任何變更,你只能提建議,而不是擅自做修改。因為,你的職責是按照設計施工,而不是設計,因此,對于任何你發現的不合理的東西,你可以提出意見,但必須要等到設計變更確認書下到你手里后,你才能按照變更后的設計工作,盡管這個變更可能是你的意見。還有,即使最初的設計也是你做的,你在變更后,也要通知客戶,并取得客戶的書面同意。
三、裝機步驟
到了現場后,進行系統安裝前,需要考慮安裝環境是否滿足PLC的使用環境要求,這一點可以參考各類產品的使用手冊。但無論什么PLC,不都能裝設在下列場所:含有腐蝕性氣體之場所,陽光直接照射到的地方,溫度上下值在短時間內變化急遽的地方,油、水、化學物質容易侵入的地方,有大量灰塵的地方,振動大且會造成安裝件移位的地方。
如果必須要在上面的環境使用,則要為PLC制作合適的控制箱,采用規范和必要的防護措施。如果需要在野外極低溫度下使用,可以使用有加熱功能的控制箱。如何做這些防護箱或控制箱,各制造商和和資格的系統集成商將會為客戶提供相應的供應和設計。
在使用控制箱時,在控制箱內OpenPLC安裝的位置要注意如下事項:控制箱內空氣流通是否順暢(各裝置間須保持適當的距離),變壓器、馬達控制器、變頻器等是否與PLC保持適當距離,動力線與信號控制線是否分離配置,組件裝設之位置是否利于日后之檢修,是否需預留空間,供日后系統擴充使用。
除了上述注意事項之外,還有其它注意事項要留意。
首先比較重要的是靜電的隔離。靜電是無形的殺手,但可能因為不會對人造成生命危險,所以許多人常常忽視它。在中國的北方、干燥的場所,人體身上的靜電都是造成靜電損壞電子組件的因素。雖然你被靜電打到的話,只不過是輕微的酥麻,但這對PLC和其它任何電子器件就足以致命了。
要避免靜電的沖擊有下列三種方式:在進行維修或更換組件時,請先碰觸接地的金屬,以去除身上的靜電;不要碰觸電路板上的接頭或是IC接腳;電子組件不使用時,請用有隔離靜電的包裝物,將組件放置在里面。想象PLC里的元器件是一個嬌嫩的嬰兒,而那些靜電會導致這個嬰兒死亡,你就會更容易以正確的態度對待這個問題了。
基座安裝(RACK)時,在決定控制箱內各種控制組件及線槽位置后,要依照圖紙所示尺寸,標定孔位,鉆孔后將固定螺絲旋緊到基座牢固為止。在裝上電源供應模塊前,必須同時注意電源線上的接地端有無與金屬機殼連結,若無則須接上。接地不好的話,會導致一系列的問題,靜電、浪涌、外干擾,等等。由于不接地,往往PLC也能夠工作,因此,不少經驗不足的工程師就誤以為接地不那么重要了。這就像登山的時候,沒有系上保護纜繩一樣,雖然你正常前進的時候,保護纜繩沒有任何作用,但一旦你失足的時候,沒有那根繩子,你的生命就完結了。PLC的接地,就相當于給PLC系上保護纜繩。
在I/O模塊安裝時,須注意如下事項:I/O模塊插入機架上的槽位前,要先確認模塊是否為自己所預先設計的模塊;I/O模塊在插入機架上的導槽時,務必插到底,以確保各接觸點是緊密結合的;模塊固定螺絲務必鎖緊;接線端子排插入后,其上下螺絲必須旋緊。由于現場的變壓器、電機等影響,多少會有振動,如果這些螺絲釘松動了,會導致模塊從機架中松開
第三篇:ASP+SQLServer2000編程經驗積累總結
ASP+SQLServer2000編程經驗積累總結
http://www.tmdps.cn 更新日期:2007-04-21 22:13 出處:網頁教學網 作者: 收藏本文
前幾天幫人調試一個ASP+SQL2000+IIS5.1/6.0的網站程序,調試過程中遇到的問題如下:
一、SQLServer登錄
原先存在備份數據庫,通過附加數據庫導入到SQL Server,原網站數據庫不能正常登陸。并且已在安全中添加用戶角色。賦予管理員權限以及數據庫所有者權限。發現角色添加有問題,檢查原因,原導入數據庫中包含一個用戶角色,去掉后再添加即可。
嘗試登陸,仍然報錯:未與信任的SQL連接。選擇屬性—〉安全性,修改身份驗證為:windows和SQL Server。或修改注冊表:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerMSSQLServerLoginMode的值決定了SQL Server將采取何種身份驗證模式。
1、表示使用“Windows 身份驗證”模式
2、表示使用混合模式(Windows 身份驗證和 SQL Server 身份驗證).后正常登陸。
二、IIS5的http 500內部服務器錯誤
主要錯誤表現就是asp程序不能瀏覽但html靜態網頁不受影響,查詢網絡屬于“IWAM賬號在ActiveDirectory、IIS metabase數據庫和COM+應用程序三處的密碼無法同步”問題,解決方法參考網絡嘗試(括號內為嘗試結果和處理):
手動修改:(我按照步驟但是手動修改并沒有成功,郁悶)
1、重新設置IIS的IWAM賬號密碼。右鍵單擊 我的電腦->管理,打開計算機管理界面打開 本地用戶和組->用戶 右鍵單擊 啟動IIS進程帳號 IWAM_****(注:****一般是計算機名)點擊設置密碼,設置為一個你想要的密碼。
2、同步IIS metabase中IWAM_MYSERVER的密碼,在CMD中:c:inetpubadminscripts>adsutil set w3svc/wamuserpass “yourpassword”也可:選擇“站點 屬性”->目錄安全性標簽->編輯“匿名訪問和驗證控制”->在彈出的框中選中匿名訪問,單擊編輯按鈕->用戶名瀏覽,選擇IWAM_MACHINE,密碼框中輸入同一的密碼,選中“允許IIS控制密碼”->確定。
注意:
在WIN2000中,查看到的密碼為星號,若要不為星號,必須要先修改adsutil.vbs文件。
a.到c盤 inetpubadminscripts找到adsutil.vbs(根據裝系統時設定的不同,有的路徑可能不一樣)
b.右鍵單擊,用記事本打開
c.查找 IsSecureProperty = True注意=前后各有一個空格
d.將 IsSecureProperty = True 改為 IsSecureProperty = False 獲取 IWAM 帳戶密碼命令: cscript.exe adsutil.vbs get w3svc/wamuserpass 獲取 IUSR 帳戶密碼命令: cscript.exe adsutil.vbs get w3svc/anonymoususerpass
輸入以上命令,按回車可分別查看IWAM和IUSR的密碼。
修改密碼命令:
修改 IWAM 帳戶密碼 cscript.exe adsutil.vbs set w3svc/wamuserpass “password” 修改 IUSR 帳戶密碼 cscript.exe adsutil.vbs set w3svc/anonymoususerpass “password”
password 設置為你想修改的密碼,即與第一步中你設置的用戶IWAM_****的相同,按回車即可修改完成。
修改密碼前請一定停止所有的Internet信息服務,否則后面可能會出錯,并且IWAM帳戶可能會被鎖定。
3、同步COM+應用程序所用的IWAM_MYSERVER密碼,在CMD中:
c:inetpubadminscripts>cscript synciwam.vbs –v。不成功。也可:
(1)啟動組件服務管理單元: “運行”->“mmc”,啟動管理控制臺,打開“添加/刪除管理單元”對話框,將“組件服務”管理單元添加上。
(2)找到“組件服務”->“計算機”->“我的電腦”->“com+應用程序”->“out-of-process pooled applications”,右擊“out-of-process pooled applications”->“屬性”。
(3)切換到“out-of-process pooled applications”屬性對話框的“標識”選項卡。選擇“此用戶”,瀏覽,選擇用戶名“IWAM_MACHINE”。這些都是缺省的。在下面的“密碼”和“確認密碼”文本框內輸入正確的密碼,確定退出。
(4)系統如果提示“應用程序被一個以上的外部產品創建。你確定要被這些產品支持嗎?”時確定即可。
(5)如果在iis中將其它一些web的“應用程序保護”設置為“高(獨立的)”,那么這個web所使用的com+應用程序的iwam賬號密碼也需要同步。
但是在進行第三步操作時總是報8004e00f錯誤。進入組件服務,查看組件服務/計算機/我的電腦/COM+應用程序,結果報錯“COM+ 無法與 Microsoft 分布式事務協調程序交談”,無法查看里面的對象。在事件查看器中msdtc服務沒有正常啟動。解決方法:運行 msdtc-resetlog 最后解決:“COM+ 無法與 Microsoft 分布式事務協調程序交談”在安裝了Windows組件中的消息隊列后,就不會出現這個錯誤了,同時“消息隊列”組件又對服務中的“Distributed Transaction Coordinator”(即msdtc服務)有依存關系,這個服務必須啟用,才可以安裝消息隊列組件!消息隊列裝好后,COM+應用程序菜單就可以打開了,表示其已正常工作!如果在這個時候再裝IIS或者把IIS卸載重裝,就正常了!實際上,手工同步密碼太過麻煩,成功率不高!
三、數據庫中的存儲內容在ASP頁面不解析
問題表現:網頁原來使用正常,但是在使用了一段時間之后很多內容不能正常顯示。
問題分析:開始以為是連接池問題,后來發現沒什么關系,在頁面上察看源碼已經將數據庫中的內容讀了出來,卻沒有在頁面上展現。發現是出現了"\"符號。這個符號在ASP中被認為是轉義字符的特殊字符,無法解析,故無法正常顯示。
第四篇:FPGA編程經驗
整個verilog中是以module為編寫基本單元的,module不宜過大,目標是實現一些基本功能即可,module的層次不宜太深,一般3-5層即可,給module劃分層次原則:實現最基本功能的為底層module,然后中層是調用這些基本module,實現大的功能,最高層是系統級模塊,統籌各大塊之間端口連接,時序關系等。
在module內部編寫中,最基本塊是initial,always,以及assign塊(此外還有一些UDP原語,在行為級暫且不談),其他語句都要包含在這些塊里面。這其中,initial塊是不可綜合語句,可以用來編寫testbench,這里面的內容在程序運行時只執行一次;assign語句是在不用寄存器的情況下直接編寫組合邏輯;always塊是最常用的塊,其語法格式是always @(*);其中括號里稱為敏感列表,即對于組合邏輯而言,必須是所實現邏輯的所有輸入變量,意思是當組合邏輯的每一個變量發生變化,結果立刻發生變化(這與實際情況一致,對于任何組合邏輯,輸入變化,輸出立刻變化)。對于時序邏輯,常為
always@(posedge/negedge clk),指在時鐘上升沿/下降沿到來時,輸出才根據那一時刻的輸入來決定輸出結果。
編程思想:
這一部分是我的心得體會,一般講verilog的書肯定不會講這個,因為這部分感覺的東西比較多,完全靠理解應用,沒什么固定模式,呵呵,玄了點。不廢話了,開始切入正題。Verilog歸根到底還是編程,同時它是對電路的編程,所以就可以利用這兩個特點,充分利用高級語言編程(例如C)的思想和數字電路的知識,就會很大程度上幫助你。首先牢記,編寫verilog依據的是時間軸,根據時間順序確定各種信號何時進入你的電路,可以在編寫時先把幾個主流信號(即貫穿于整個系統的信號,比如數據流信號)用always寫出來,這些信號就是你的基準,其他控制信號根據所處的位置在介入這些主流信號,分別用 always
模塊寫入。這樣,這種時間軸順序跟C的編程思想就一致,在編寫這種順序性信號時,帶著C的思想,基本就容易的多。同時,verilog有個很重要的電路特點,就是在每一時刻,同時會有多個電路有信號(即在運行),這樣就必須從傳統的順序語言中跳出來(跳出C的思想),然后進入數字電路的思想,即你的編程要時刻跟實際電路模型聯系到一起,比如A<=B,C<=A,即可以想象成兩個D觸發器,其中C的輸入就是A的輸出,這樣當時鐘沿到來時,兩個D觸發器同時運行,B的值就給了A,而A的輸出就給了C,不考慮電路延時,就可以認為二者在時間軸的同一時刻運行成功,A在此時刻的值為B,C 在此時刻的值就是A前一時刻的值。這里只是舉了簡單的例子,但是時間軸的思路、高級語言編程思想和數字電路模型化思想以及這幾個思想的轉換對于編程來說幫助很大,幫你在編程時頭腦時刻冷靜,即使有很多信號,也會讓你從全局把握整個電路,避免頭腦一團糟。
關于復用:
復用對于硬件設計來說,尤為重要,在實現功能的前提下,電路比的就是主頻和資源,而資源的減少思路就是復用。比如多次調用一個子函數A,如果直接寫,在結構上就是這個子函數電路塊A的復制,電路完成后就會看到你調用了幾次A函數,你的結構中就有幾個一模一樣的A電路,當你的A電路本身資源很大,而且你調用的次數很多時,就很少有FPGA能裝的下了。這當然跟我們的思想不符,我們只是想讓整個電路中只有一塊電路A,只不過把A電路在不同時刻用了幾次而已,這時就要用到電路復用的思想。電路復用并不神秘,簡單來講,就是把控制端放在A電路兩邊,用計數器之類的東西,控制在時間軸的不同時刻把值寫入A和從A輸出端讀取值。補充一點,對于電路的同步,計數器是一個很好的東西,因為本身計數器資源并不很大,用它來對于相差多個周期的信號進行同步,非常實用。但是,當信號相差的時間過于大,計數器的計數規模
就變的不可接受,這時就要用到狀態機劃分狀態的方法進行同步了。有了同步,復用就變得簡單的多。
關于task:
這是前段時間論壇里討論比較熱的東西。語法上說,task是比always低個等級,即task必須在always里面調用,task本身可以調用 task,但不能調用module(module的調用是與always,initial,assign語句并列的,所以在這些語句中均不能直接調用 module,只能采用給module端口送值的方法達到調用的目的)。Task有什么用呢,個人覺得,用task來封裝大的邏輯語句不錯,使代碼顯得簡單明了,這個對于testbench尤為有用,但在實際電路中用處不大,因為順序調用task對于電路來說就是電路塊的復制,順序多次調用就是多次復制電路,資源會成倍增加,不能達到電路復用的目的,同時用task封裝的純邏輯代碼會使得電路的周期變大,主頻降低,不利于為了提高主頻而采用的大邏輯切分的方法!
第五篇:mastercam編程經驗分享
mastercam編程經驗分享
在寫刀路之前,將立體圖畫好后,要將圖形中心移到坐標原點,最高點移到Z=0,加縮水率后,方可以加工,銅
公火花位可加工負預留量。
在加工前還要檢查工件的裝夾方向是否同電腦中的圖形方向相同,在模具中的排位是否正確,裝夾具是否妨礙加
工,前后模的方向是否相配。還要檢查你所用的刀具是否齊全,校表分中的基準等。加工銅公要注意的事項:
火花位的確定,一般幼公(即精公)預留量為0.05~0.15,粗公0.2~0.5,具體火花位的大小可由做模師父定。
銅公有沒有加工不到的死角,是否需要拆多一個散公來。
加工銅工的刀路按排一般是:大刀(平刀)開粗-小刀(平刀)清角[$#0]光刀用球刀光曲面。開粗一般教師用平刀不用球刀,大刀后用小刀開粗,然后將外形光到數,接著用大的球刀光曲面,再用小球刀光
曲面不要圖省事,為了些小的角位而用小刀去加工大刀過不了的死角可心限定小刀的走刀范圍,以免直播太多的空刀。
銅公,特別是幼公,是精度要求比較高的,公差一般選0.005~0.02,步距0.05~0.3。銅公開粗時要留球刀位的過
刀位,即要將銅公外形開粗深一個刀半徑。
D)銅公還要加工分中位,校表基準,火花放電時要校正銅工,一般校三個面(上,下,左,右)加工出的銅工必
須有三個基準面。
E)銅料是比較容易加工的材料,走刀速度,轉速都可以快一點,開粗時,留加工余量0.2~0.5,視工件大小而定,加工余量大,開粗時走刀就可以快,提高效率。加工銅料的有關經驗參數:刀具大小
1~2
3~5
6~10
12~20
進給率(FEED rate)
50~200
(50~100)
200~500
(50~300)
500~1000
(200~600)
1000~2000
(600~1000)
主軸轉速(SPINDLE)
3000
3000~2500
(2400~1200)
2500~2000
(1200~700)
1500~2000
(600~250)
注:括號內為高速鋼刀對鋼料開粗時的參數,以上走刀速度是指開粗時,要光外形F=300~500,鋼料光刀F為
50~200。
前模開粗的問題,首先將銅公圖在前視圖或邊視圖內旋轉180o即變成了前模圖,當然還要加上枕位,PL面;原身要前模留的地方,不要用鏡身的方法將銅工圖變成前模圖,有時會錯(當銅公圖X方向Y方向都不對稱時)。前模加工時有二個難點
:材料比較硬;前模不可輕易燒焊,錯不得。
前模開粗時用刀原則同銅工相似,大刀開粗→小刀工粗→大刀光刀→小刀光刀,但前模應盡量用大刀,不要用太
小的刀,容易彈刀,開粗通常先用刀把()開粗,光刀時也盡量用圓鼻刀,因這種刀夠大,有力,有分型面的前模
加工時,通常會碰到一個問題,當光刀時分型面因碰穿機要準婁數,而型腔要留0.2~0.5的加工余量(留出來打
火花)。這是可以將模具型腔表面朝正向補正0.2~0.5,面在寫刀路時將加工余量設為0。
前模開粗或光刀時通常要限定走刀范圍,要記住你所設的范圍是刀具中心的范圍,不是刀具邊界的范圍,不是刀
所加工到的范圍,而大一個刀具半徑。
前模開粗常用的刀路方法是曲面挖槽,平行式光刀。前模加工時分型面,枕位面一般要加工到準數,而碰穿面可
以留0.1余量,以備配模。
加工后模常碰到的問題:
后模有原身科或鑲科二種,后模同前模一樣是鋼料,材料較硬,應盡量用刀把加工,常用刀路是曲面挖槽外形,平行銑光刀,選刀的原則是大刀開粗→小刀開粗→大刀光刀→小刀光刀。
后模圖通常是銅公圖縮小料位加上PL面,枕位,原身留出的東西而成,如果料位比較均勻,可以直接在加工信息
量里留負料位即可,但是PL(分型面),枕位,碰穿面不能縮料位。這時可以先把這些面正向補正一個料位或者
把科畫出來。
原身科常碰到的一個問題是球刀清不到利角,這時可以用平刀走曲面陡斜面加工清角,如鑲科,則后模分為藏框
和科芯,加藏科時,要注意多走幾遍空刀,不然框會有斜度,上邊準數,下邊小,很難配模,特別是較深的框,一定要注意這個問題,光框的刀也要新好,并且選用大一點的刀。科芯如果太高,可以先翻過來加工框位,然后裝配進框后,再加工形狀,有時有支口,要注意,不要過切用球刀
光形狀時一定要保護支口臺階。
為了方便配模式,框尺寸可以比科芯外形尺寸小-0.02/s
科芯光刀時公差和步距可以稍大一點,公差0.01~0.03進給0.2~0.5。
散銅公加工中的問題:
有時整體銅公加工有困難,有加工不到的死角,或者是不好加工,所需刀具太長或太小,就可以考慮分多一個銅
公,有時局部需要清角銅公,這種銅公的加工并不困難,但一定要搞清楚的確良火花時的偏數,校表基準。
薄盤位銅公的加工:
這種銅公加工時很容易變開,加工時要用新刀,刀要小點,進刀也不能太大,加工時可以先將長度a做準,但d留
大點余量(如1.0mm)再二邊走,每次深度h=0.2~1,深度進刀不要太多,也不要一周繞著走刀,而要分成二邊分別
走。
左、右件和一出二的方向:
有時一套模會出二個零件,對于分左右件的,圖形能過
鏡射來制作。如果是出二個相同的零件,則圖形一定要在XY內平稱或旋轉,一定不可以鏡射,務必小心,不要搞
反方向,模具的方向:
模胚的四個導栓孔,不是完全對稱,有一個是不對稱的,所以加工前后模時這末搞清楚,每一塊模板上都有基準,加工完的前后模合起來一定要基準對基準,特別是對原身模胚成形的模具一定要注意。畫圖時也注意方向,銅
公的方向和正視圖(俯視圖)的方向一致,科芯,藏科框的方向和銅公一致,前模則相反。曲面上的槽或凸臺等一些裝飾線條,因為比較窄,所以不好加工。對于凹槽,我們一般將槽避空,即銑深一些,然后再補一個散公做出沉面,凸臺一般只能分開做一個散公,大銅公不做,這樣才能保證質量。
模具,產品的配合公差:
一套產品通常有幾個及十幾個零件,這些零件的主要配合尺寸都是電腦鑼加工保證的,選擇合理的公差就很重要,尤其是有些產品設計圖沒有考慮配合問題。
底,面殼的配合,外形無疑是0對0配合,定位是靠支口保證的,凹支口和凸支口的公差一般0.1MM,單邊。
大身上的配件如透明鏡,一般配件外形要比大身上的尺寸小單邊0.1~0.2.大身上的活動配件,如按鈕,配件外形要比大身上的外形比單邊小0.1~0.5。大身上的配件表面形狀一般要和大身上的表面形狀一致,可以從大身表面修剪下來。
出模斜度(拔模角)
朔膠模都要做出模斜度,不然會擦花,如果圖紙沒有標明,可以同做模師傅商量,出模斜度一般0.5o~3o如果蝕
紋的模具,出模角要做大一點,2o~5o,視蝕紋粗細而定。
下刀問題
很多時候,鳘刀剛銑時,吃刀量都比較大,容易引起斷刀,彈刀,這時可以先將下刀位開粗
或者鳘刀抬刀走,或
者晝在料外邊下刀,總之要充分考慮這個問題。
搶刀,彈刀,掉刀
當加工量比較大時,刀夾得太長,刀太小時常會發生這種情況。
加工量比較大,特別是濃度進刀較多時,容易發生,如光側面深度H=50mm直徑3/4刀,我們可以分25mm二次加工,就不容易發生。
刀具夾得太長,刀具裝得長短對加工很重要,應盡量裝夾短一些,初學者都很容易忽略這個問題,程序紙上一定
要標明刀具的裝夾長度。
轉角時很容易搶刀,解決的辦法是先用小一點的刀分層將角清過,再換大的刀光側面。
象如圖直徑8的半圓槽,如直接用R4的刀加工,下刀位置,就很容易搶刀,解決的辦法是
(1)用R3走掃描刀路(2)先用R3開粗,最后用R4的刀清角光刀。
磨小刀
電腦鑼要加工的形狀各異經常需要磨各種小刀,各種成形刀磨損了,也需磨,要達到以下幾占才可以磨出一
把能用的刀1。刀具的四個角要一樣高2。A點要比D點高3刀具的前鋒(刀面)要比后而高,即有一定后角。
過切檢查
過切是masterCAM經常會發生的問題,千萬要小心。過切可能出現在多曲面開粗,光刀,刀路修剪,外形,挖槽
時,即使胸的參數設定、立體圖都正確,也有可能發生,有些是軟件本身的失誤,最主要的檢查方法是將刀路模
似一遍,在頂視圖,邊視圖反復檢查,沒有檢查的刀路不允許上機。外形銑削時,下刀位置選擇不當,也會過切,可以改變下刀位,即可避免。
銑削方向:
電腦鑼一般都是順銑,不象銑床逆銑,原因是電腦鑼的剛性比較好,不易讓刀,背隙小,銑外形或者內槽都是左
補償。當加工左右對稱的形狀時,外形刀路不能鏡射,否則鏡射過的那邊加工效果就不好。程序紙的寫法為了和操作機床的人員溝通,程序紙應包括1)程序名2刀具大小及長度3加工刀路方法4加工余量
5開粗或光刀6圖檔名稱
.圖形管理
電腦圖應妥善分檔管理,最好是一個產品建一個目錄,一個零件起一個別名字,如銅公圖名為A10,后模圖可為
A10C,前模圖名為A10CAV,散銅公圖名為A10S1,這樣就比較清楚。不同軟件間格式轉換:
和AutoCAD的溝通,MastCAM7以上版本的可以直接讀DWG文件,低于7版本可以先在autocad轉成DXF格式。其它CAM軟件如(cimtron,pro/e,UG)等可以先轉成IGES.STEP等等格式。
DNC用法:
程序完成后,經過檢查,沒有問題就可以抄到DNC電腦里實際加工了,抄程序有二種方法1用磁盤抄2通過局域網
傳送。然后啟動DNC軟件,找到要運行的程序,按ENTER鍵就行了。坐標系:
有三種,機械坐標系,加工坐標系,臨時坐標系三種。機械坐標系,機械零點是機械上一個基準點,每次開電后,原點歸零后就被確定下來,機械零點的位置由機械廠定,不要改變。加工坐標系是用于工件加工的,是機械坐
標系的子坐標系,取機械坐標系中的一個點(一般是工件中心點)作為坐標原點,將這個點的機械坐標值記錄下
來,作為加工坐標系列的原點,即可設加工坐標系。臨時坐標系:隨時以每一個點清零作坐標原點。對應于坐標
值也有三種坐標值:機械坐標值,加工坐標值,臨時坐標值(也稱相對坐標值)常用過濾值:
常用過濾值0.001~0.02,過濾半徑R=0.1~0.5。開粗刀路取大值,光曲面刀路取小值,曲面半徑較小取大值,曲
面半徑較大取小值。
過濾可有效地減小程序容量,走刀更加暢,但過大則影響加工精度。