① 西門子 300plc怎麼上傳程序
西門子 300pl上傳程序
1、 設置通訊方式,採用簡單的mpi通訊,把和你的計算機用通訊線連接好後,在選擇開始-simatic-step7-設置pg-pc介面打開後,設置通訊參數,並進行通訊診斷,診斷通訊無誤。
2、打開step7項目編輯器manger後,新建一個空項目。
3、點擊plc--上傳到pg(uploadtopg)。
4、出現對話框,選擇你要上傳的站內內容,如是一個話,你就選擇你通訊診斷的地址相同就好了,要是多站的話要搞清楚對應的站地址在選擇上傳。
5、點擊上傳,就上用戶程序、系統程序和硬體組態,但是所有程序段都是沒有注釋的。
S7- 300 PL指令及編程軟體,對於西門子公司的SIMATICS7系列PLC,常用的編程軟體是STEP7, STEP7中有豐富的S7系列PLC的編程語言,通常使用的是梯形圖(LAD)、語句表(STL)和順控指令(GRAPH)等。
另外,還有功能塊圖(FDB)、標准控制語言(SCL)、狀態圖(HiGraph)、連續功能圖(CFC)和STEP 7的C語言等。
梯形圖具有直觀、簡單等優點,並且在STEP 7中, 梯形圖可以轉換成為語句表(STL)和功能塊圖(FDB)。在編程的過程中,用戶可以選擇上面所示的某- -種語言進行編程,也可以利用多種語言的優點來進行混合編程,使用戶的程序開發、輸入和調試等工作變得極為方便。
② 西門子PLC SCL編程指令講解
在SCL程序編寫中,在邏輯控制或者數據處理分析中,有一類指令我們用得最多,就是程序控制指令,常見的入IF ,Case ,For 和While 等。下面我仔細的講解,有疑問可以留言提出:
圖1 程序控制指令
IF .. THEN 指令
IF 指令含有含有三個分支,分別是Then ,Else 和ElsIF。
圖2 IF 語句
圖3 浮點數比較條件
IF語句應該是SCL裡面最常用的語句了,常用於條件判斷。判斷類型可以是BOOL類型,可以是浮點類型等等,基本上所有類型都可以判斷,只要比較的兩個變數類型是一樣。
在圖2中,AByte 是Byte 類型,因為1在0..255之間,所以1會自動轉化為Byte類型。如果比較的是Abyte類型是256,會是什麼樣子呢?讀者可以自己寫的程序,試驗一下,看看結果,會加深你對數據類型的理解。
上面程序中,首先比如AByte是否和1相等,如果相等則Outvalue的值為1,然後和2比較,如果和2相等,那麼OuValue值為2,如果都滿足條件OuValue 的輸出值則為5。
上述的IF條件語句,也可以用CASE語句來進行表示。CASE的比較類型沒有IF 范圍廣,只有整形才能做為比較條件。
CASE指令
圖4 IF語句的CASE表達方式
從CASE語句表述中,我們發現語句相對於IF表達式來說,更加清晰簡單明了,所以如果需要用到整形條件作為判斷,盡量用CASE來實現,會提高效率。
FOR 指令
FOR指令常用來對數組類型數據進行批量處理,在上一期講解中已經舉過一個例子,下面舉個稍微復雜點的例子。
圖5 FOR循環語句
在FOR程序,我們對數組的每一個索引值進行賦值,同時判斷索引值的奇偶性來進行賦值操作。
圖6 FOR循環語句2
在上面的程序裡面,我們發現有一個關鍵字Continue .當FOR循環執行到該語句的時候,Continue下面的程序都不會執行。所以,當iCout小於15的時候,AArray[iCount]:=iCount賦值語句不會執行。
還有一個地方有點區別,就是FOR 語句後面,多了一個關鍵字 BY 。BY的含義是For 執行的間隔按照BY的設定來執行。如果後面設定為1,則0..99全部執行;如果設定為2,則執行順序為0,2,4,6,8的順序來執行。
上述的FOR循環語句,我們同樣可以採用WHILE循環來實現。
WHILE 指令
圖7 WHILE指令
WHILE循環的表達方式和FOR循環基本類型,但是我們注意一點,這裡面對循環變數,手動進行進行遞進。如果沒有這一句,iCount的值一直為0,循環條件iCount<100將一直為True,WHILE循環會一直執行。所以切記一定執行該語句。
我們還注意到一個關鍵字EXIT,當執行到該指令的時候,WHILE循環會停止執行,FOR指令也是一樣。所以上面的程序,運行下來的情況是,數組的賦值只執行到AArray[81]結束。
GOTO指令
goto指令主要用來執行跳轉過程,可以帶來程序操作的便利性,一般不推薦使用。若操作不當,則會打亂整個程序的邏輯性。
在圖7 中,如果iCount 大於90,那麼,程序就會跳出WHILE 循環執行指定標簽lable13地方程序#iCount=0,繼續從頭開始執行WHILE循環。當然這個操作是毫無意義的,這里只是舉個例子而已。
③ 西門子PLC中的STL和SCL指令
STL有點類似匯編語言,和機器碼對應,無論哪種語言寫的PLC程序都可以轉換成STL查看,所以掌握基本的STL指令和語法是很有幫助的。另外STL直接操作寄存器,實現同樣功能時可以減少運算量和寄存器調用次數,並且只關心數據類型的長度(例如不區分int和word),減少了數據類型轉換,總的來說執行效率高,但實現復雜運算和邏輯時編程繁瑣。
SCL類似於高級語言Pascal、C之類野畢伍,可以通過簡單的語句實現復雜的功能,邏輯清晰,在復雜數據類型的處理上也非頌或常方便,雖然理論上執行效率比STL低,但實際一般不會有明顯的影響。
另外,在同一個FC或FB中,STL可以和梯形圖數含混合使用,而SCL編寫的FC或FB不能混合其他語言