国产精品久久久久久久久,四季AV一区二区夜夜嗨,日韩精品无码中文字幕电影,www.五月婷婷.com

資訊詳情
6SL3211-0KB12-5UA1
發(fā)布者:黃工  發(fā)布時間:2016-04-08 09:37:59
6SL3211-0KB12-5UA1,6SL3211-0KB12-5UA1

                                                               {心中有空間,夢想就有可能} 

德國制造: 現(xiàn)貨               聯(lián)   系   人: 黃勇《黃工》        24小時聯(lián)系手機(jī):  13701633515
全新原裝: 參數(shù)
質(zhì)量保證: 保修
價格優(yōu)勢: 特價
我公司大量現(xiàn)貨供應(yīng),價格優(yōu)勢,品質(zhì)保證,德國原裝進(jìn)口
 
 

6SL3211-0KB12-5UA1

怎樣學(xué)好PLC編程

看到很多網(wǎng)友問學(xué)習(xí)PLC的方法, 現(xiàn)將我個人學(xué)習(xí)PLC編程的心得總結(jié)如下,大家有更好的方法請補(bǔ)充:
1.有一定的電工基礎(chǔ)-----掌握傳感器、接近開關(guān)、編馬器、氣動元件等常用器件的使用及繼電器控制原理。
2.再學(xué)數(shù)制及數(shù)制轉(zhuǎn)換-----掌握二進(jìn)制、八進(jìn)制、十六進(jìn)制、BCD碼、ASCI碼的概念。
3.選擇你所在地區(qū)流型的PLC品牌做為學(xué)習(xí)的機(jī)種.---------學(xué)會后可以更好的與實(shí)際工作對接。
4.買臺手提電腦(配制不低于CPU最好是雙核或以上 ,1G內(nèi)存,硬盤80G,帶串口)----必備學(xué)習(xí)及外出干活的工具。
5. 學(xué)會電腦的基本操作,如開機(jī)關(guān)機(jī)、文件保存以及WORD、EXCEL辦公軟件的基本應(yīng)用(電腦使用者必會);常用軟件的安裝與卸載(如編程軟件的安裝和卸載);打字(用于程序起名及加注釋)。
6.尋找PLC編程軟件及仿真軟件、教學(xué)軟件(當(dāng)然還要學(xué)會使用它們)。-----必備學(xué)習(xí)用具。
7. 買相關(guān)書及視頻教材(電工論壇有歐姆龍,西門子,松下PLC視頻教程直播)。-----學(xué)習(xí)資料。
8. 找齊該PLC編程手冊、使用手冊、使用案例,可從網(wǎng)上收集或參加產(chǎn)品推廣會獲得。----工作中肯定會用到的資料.
9. 以上準(zhǔn)備好后,您可以自學(xué)PLC了,一般來說PLC梯形圖的基本指令好學(xué),其邏輯關(guān)系與繼電器控制原理圖相通。但功能指令就難很多了。
10.最好是到有實(shí)力口碑好的學(xué)校培訓(xùn).-----比起自學(xué)可縮短學(xué)習(xí)時間,學(xué)得更系統(tǒng),還可多交恩師、學(xué)友以利于今后發(fā)展。
11. 用一切辦法多結(jié)識周圍的同行、PLC廠家、代理商,以便于得到他們的幫助及有用的信息。
12. 堅持學(xué)習(xí),多與同行交流,多動手實(shí)踐.-----編程是理論與技能高度結(jié)合的,應(yīng)多看書多實(shí)踐才能提高編程技術(shù)。
13. 當(dāng)外出包工程時,還要準(zhǔn)備該類型PLC程序解密軟件------因為有時你會忘記自己程序中已加的密碼,還有時是別人加密的程序,客戶要你J將它再優(yōu)化、增加新功能、修改參數(shù)、將原來定時停機(jī)的程序刪除。這也是很多人找解碼軟件的原因。

WinCC中定時器使用方法介紹

1、定時器功能介紹
2、腳本中定時器介紹
3、使用腳本實(shí)現(xiàn)更多定時器功能
3.1 整點(diǎn)歸檔
3.2 WinCC 項目激活時避免腳本初次執(zhí)行及延遲執(zhí)行腳本1 定時器功能介紹
    WinCC 中定時器的使用可以使 WinCC按照指定的周期或者時間點(diǎn)去執(zhí)行任務(wù),比如周期執(zhí)行變量歸檔、在指定的時間點(diǎn)執(zhí)行全局腳本或條件滿足時打印報表。WinCC 已經(jīng)提供了一些簡單的定時器,可以滿足大部分定時功能。但是在有些情況下,WinCC 提供的定時器不能滿足我們需求,這時我們就可以通過 WinCC 提供的腳本接口通過編程的方式實(shí)現(xiàn)定時的功能,因為腳本本身既可以直接 調(diào)用 WinCC其他功能,比如報表打印,也可以通過中間變量來控制其他功能的執(zhí)行,比如通過置位/復(fù)位歸檔控制變量來觸發(fā)變量記錄的執(zhí)行。WinCC 提供了 C 腳本和 VBS 腳 本,本文主要以全局 C 腳本編程為例介紹定時功能的實(shí)現(xiàn)。
2 腳本中定時器介紹     既然在全局腳本中可以編程控制其他功能的執(zhí)行,那么首先看看全局腳本的觸發(fā):

1
                         圖1   腳本觸發(fā)器分類 如圖1所示: 腳本觸發(fā)器分為使用定時器和使用變量, 定時器又分為周期執(zhí)行和非周期執(zhí)行一次,比如每分鐘執(zhí)行一次腳本屬于周期執(zhí)行,指定2012年10月1日執(zhí)行一次屬于非周期執(zhí)行。 使用變量觸發(fā)腳本,即在變量發(fā)生變化時,腳本就執(zhí)行一次, 而變量的采集可以根據(jù)指定周期循環(huán)采集,或者根據(jù)變化采集,根據(jù)變化實(shí)際是1秒 鐘采集變量一次。
3使用腳本實(shí)現(xiàn)更多定時器功能
   利用腳本自身的定時器, 可以通過在腳本中編程的方式實(shí)現(xiàn)更多其它定時功能。

3.1整 點(diǎn)歸檔

    WinCC提供了變量歸檔,變量歸檔分為周期歸檔和非周期歸檔,不管是周期歸檔或非周期的歸檔,都又可以通過一些 變量或腳本返回值來控制歸檔, 比如:整點(diǎn)歸檔。下面的設(shè)置結(jié)合WinCC腳本,實(shí)現(xiàn)了在 整點(diǎn)開始?xì)w檔,歸檔五分種后停止歸檔,即每個小時僅歸檔前五分鐘的數(shù)據(jù)。
    軟件環(huán)境:Windows 7 Professional Service Pack1 , WinCC V7.0 SP3
    歸檔名稱:ProcessValueArchive
    歸檔變量:NewTag
    歸檔周期:1 分鐘
    歸檔控制變量  startarchive
    C腳本觸發(fā)周期:10秒
    腳本代碼:
#include "apdefap.h"
intgscAction( void )
{
    #pragma option(mbcs)
    #pragma code ("kernel32.dll"); 
    void GetLocalTime (SYSTEMTIME* lpst); 
    #pragma code(); 
      SYSTEMTIME time;
      int  t1; 
      GetLocalTime(&time); 
      t1=time.wMinute; 
if(t1==00) 
      { 
                  SetTagBit("startarchive",1);  
       } 
     if(t1==05) 
      { 
                  SetTagBit("startarchive",0);    
 } 
return0;
}
歸檔設(shè)置如圖2:

                     圖2   歸檔設(shè)置
    同理,在以上腳本的基礎(chǔ)上做修改,可以實(shí)現(xiàn)在某個指定的時間點(diǎn)打印報表,只要在滿足觸發(fā)條件時調(diào)用下列函數(shù):    
       RPTJobPrint(" Myprintjob");
      Myprintjob為 事先創(chuàng)建好的打印作業(yè)。 
       腳 本主要部分在于獲取系統(tǒng)當(dāng)前時間,下 面的腳本實(shí)現(xiàn)了獲取當(dāng)前時間并分別獲取年、月、日、時、分、秒、毫秒,星期幾的功能。
 
    Varname1 到 Varname8 為 WinCC 內(nèi)部變量。若在 WinCC畫面上顯示時,由于默認(rèn) I/O 域的 格式為999.99, 要把 Varname1 的顯示格式改為9999。 
  #include "apdefap.h"
intgscAction( void )
{
          #pragma option(mbcs)
 
          #pragma code ("kernel32.dll"); 
             void GetLocalTime (SYSTEMTIME* lpst); 
         #pragma code(); 
         SYSTEMTIME time;
            GetLocalTime(&time); 
             SetTagWord("Varname1",time.wYear);
           SetTagWord("Varname2",time.wMonth);
           SetTagWord("Varname3",time.wDayOfWeek);
           SetTagWord("Varname4",time.wDay);
           SetTagWord("Varname5",time.wHour);
           SetTagWord("Varname6",time.wMinute);
           SetTagWord("Varname7",time.wSecond);
           SetTagWord("Varname8",time.wMilliseconds);
  return 0;
}
    設(shè)置或讀取系統(tǒng)時間的函數(shù)如下: 
        SetSystemTime
        SetLocalTime
        GetSystemTime
        GetLocalTime 
    系統(tǒng)中本地計算機(jī)時間和格林威治時間是有區(qū)別的。函數(shù)“SetSystemTime / GetSystemTime”用于設(shè)置或讀取格林威治時間。
   函數(shù)“SetLocalTime / GetLocalTime”用于設(shè)置或讀取本地計算機(jī)時間。
  兩種時間會因地理的時區(qū)不同而改變。兩個函數(shù)使用方法相 同。
  3.2 WinCC 項目激活時避免腳本初次執(zhí)行及延遲執(zhí)行腳本
    全局腳本在項目激活時,是要執(zhí)行一次的,在有些情況下,需要避免腳本執(zhí)行,就采用在腳本中去判斷。比如 可以創(chuàng)建 WinCC 內(nèi)部布爾型變量 flag,腳本如下:
  #include "apdefap.h"
intgscAction( void )
{
      #pragma option(mbcs)
 
      if ( GetTagBit("flag")==1) 
              SetTagWord("NewTag",1);//根據(jù)自己的需求編寫對應(yīng)代碼.
     else
              SetTagBit("flag",1);    //Return-Type: BOOL
return0;
}
    除了避免項目運(yùn)行激活時觸發(fā)腳本執(zhí)行,我們 還可以通過 Sleep() 延遲腳步功能執(zhí)行,比如開機(jī)后五分鐘開始執(zhí)行腳本具體功能,代碼如下:
  #include "apdefap.h"
intgscAction( void )
{
        #pragma option(mbcs)

A+DPTR
       MOV P0,A   ; 輸出到P0
       INC R0      ;取碼指針加1,取下一個碼。
       MOV A,R0
       MOV DPTR,#TABLE ;取數(shù)據(jù)表下半部份的代碼
       MOVC A,

FB塊接口類型大不同

 對于工控新人來說,使用STEP7編程時,首先需了解OB/FC/FB/DB等塊的功能和作用,待掌握這些塊后再進(jìn)行編程就“輕而易舉”了。
    在熱線上經(jīng)常遇到用戶咨詢FB的接口變量類型IN_OUT、STAT、TEMP在使用上有何區(qū)別,以下通過一個簡單的例子進(jìn)行說明。運(yùn)用FB塊編程計算公式:(A+B) * C = D,在程序中需要通過一個中間變量(例如其變量名定義為“TEMP_value”)傳遞“A”和“B”相加的結(jié)果,然后再乘以“C”得到最終結(jié)果“D”;將中間變量“TEMP_value”分別定義為IN_OUT、STAT或TEMP類型后做如下測試。
    首先創(chuàng)建FB1,在IN接口類型中新建A、B、C 三個變量,數(shù)據(jù)類型INT;在OUT接口類型中新建D 變量,數(shù)據(jù)類型INT;在OB1中調(diào)用FB1,并生成對應(yīng)的背景DB塊DB1。
    情形一,將中間變量“TEMP_value”定義為IN_OUT類型時,接口定義及程序如圖1:

                                           圖1  中間變量“TEMP_value”定義為IN_OUT類型

    下載到CPU中執(zhí)行程序監(jiān)控,在調(diào)用FB1的接口參數(shù)處和背景DB塊中都可以監(jiān)控到變量“A”和“B”相加的中間結(jié)果“TEMP_value”,如圖2所示。

                                     圖2  中間變量“TEMP_value”定義為IN_OUT時的在線數(shù)據(jù)

    情形二,將中間變量“TEMP_value”定義為STAT類型時,接口定義及程序如圖3:

                                           圖3  中間變量“TEMP_value”定義為STAT類型

    下載到CPU中執(zhí)行程序監(jiān)控,僅能在其背景DB塊中監(jiān)控到變量“A”和“B”相加的中間結(jié)果“TEMP_value”的值,而在調(diào)用FB1的接口參數(shù)處無該中間變量,如圖4所示。

                                   圖4  中間變量“TEMP_value”定義為STAT時的在線數(shù)據(jù)

    情形三,將中間變量“TEMP_value”定義為TEMP類型時,接口定義及程序如圖5:

                                           圖5  中間變量“TEMP_value”定義為TEMP類型

    下載到CPU中執(zhí)行程序監(jiān)控,既不能在其背景DB塊中監(jiān)控到變量“A”和“B”相加的中間結(jié)果“TEMP_value”的值,也不能在調(diào)用FB1的接口參數(shù)處看到該中間變量,如圖6所示。
 
                                      圖6  中間變量“TEMP_value”定義為TEMP時的在線數(shù)據(jù)

    對于同一個中間變量,在FB中定義為不同的參數(shù)類型時,其接口參數(shù)和對應(yīng)的背景數(shù)據(jù)塊的顯示都不盡相同。所以在不同的需求下可自行定義中間變量的類型,以滿足不同的需求。西門子創(chuàng)新工業(yè)之道是“知其道,用其妙”,編程也不例外,知“FB接口類型”之道,用其妙。

西門子STL間接尋址常問問題集

1.1如何獲得指針或者間接尋址有關(guān)的信息?
指針的類型包括16位指針、32位指針、Pointer(6Byte)和Any(10Byte)。16位指針用于定時器、計數(shù)器、程序塊的尋址;32位指針用于I/Q/M/L/數(shù)據(jù)塊等存儲器中位、字節(jié)、字以及雙字的尋址,其中第0~2位表示位地址(0~7)、第3~18位為字節(jié)地址,其余位未定義;Pointer和Any一般應(yīng)用在復(fù)雜數(shù)據(jù)類型(比如Date_and_Time /Array/String等)在FB、FC之間的傳遞。而Any可以看做是對Pointer的延伸,因為由10Byte組成的Any中Byte4~Byte9就是一個Pointer。
了解指針的格式十分重要,為正確使用指針,應(yīng)閱讀如下內(nèi)容:
1、 "SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章 參數(shù)類型
2、文檔:1008用于S7-300 和S7-400 的語句表(STL)編程
3、文檔:F0215,S7-300和S7-400尋址 1.2為什么語句 LAR1 P##PointerInput 在一個函數(shù)(FC)中是無效的,然而,同樣的語句在一個功能塊(FB)中是有效的?
在FC被調(diào)用時,復(fù)雜數(shù)據(jù)類型例如指針是被復(fù)制到調(diào)用者的臨時變量區(qū)中,在FC內(nèi)部對此V區(qū)地址直接取址放入到地址寄存器AR1或AR2是不被編譯器規(guī)則接受的(導(dǎo)致MC7寄存器信息過長),也就是說在FC內(nèi)部通過P#進(jìn)行地址寄存器取址僅能支持Temp臨時變量。因此如果需要在FC中操作指針等復(fù)雜輸入輸出變量地址需要使用累加器進(jìn)行中轉(zhuǎn)。
考慮到程序的一致性、遵守編譯器規(guī)則和STL手冊中LAR1指令說明,建議用戶使用如下指令操作:
L P##PointerInput
LAR1 1.3 STEP 7 中哪些操作會覆蓋DB/DI寄存器或者地址寄存器AR1/AR2的內(nèi)容?
下面說明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2內(nèi)容改變的一些操作:


  • DB寄存器和AR1受到影響的操作
    1. 使用完整的DB路徑(如L DB20.Val)或者調(diào)用FC/FB時使用DB塊完整地址作為其參數(shù),則DB寄存器內(nèi)容被覆蓋。
    例如在OB1中調(diào)用FC1后,DB寄存器變成20。
    OPN DB1
    Call FC1
    Input(bit):DB20.DBX0.2
    因此在編程的時候,OPN 指令打開數(shù)據(jù)塊,通過DBX x.y的方式訪問其中內(nèi)容, 但是如果在打開數(shù)據(jù)塊后DB寄存器的內(nèi)容被修改了,則DBX x.y的方式訪問變量則 會訪問到錯誤的地址??梢酝ㄟ^使用符號尋址的方式或者使用完整路徑編程避免,當(dāng) 然重新使用 OPN指令也是可以的。
    2. 調(diào)用FC時使用string, array, structure ,UDT作為其形參或者調(diào)用FB時使用string, array, structure 或者UDT作為其in out形參,在FC/FB程序中訪問這些地址則AR1寄存器內(nèi)容被覆蓋,因此當(dāng)使用AR1進(jìn)行間接尋址時需要注意AR1內(nèi)容的正確性。
  • AR2地址寄存器和DI寄存器在FB中作為參數(shù)和靜態(tài)變量的基址尋址使用。AR2和DI如果被修改,會影響FB的參數(shù)訪問,如果希望在FB中使用DI寄存器或者地址寄存器AR2,必須預(yù)先保存它們中的內(nèi)容,并在使用后恢復(fù)它們,例如:
    TAR2 #AR2_SAVE; //AR2寄存器狀態(tài)保存到#AR2_SAVE
    L DINO;
    T #DB2_SAVE; //DI寄存器狀態(tài)保存到#DB2_SAVE
User Program
LAR2 #AR2_SAVE; //AR2寄存器恢復(fù)到使用前狀態(tài)
OPN DI [#DB2_SAVE]; //DI寄存器恢復(fù)到使用前狀態(tài)
1.4 如何得到多重背景FB中的變量在背景DB里的絕對偏移量呢?
可以用下面的方法處理:
TAR2 (得到多重背景FB在背景DB里的偏移地址)
AD DW#16#00FFFFFF (屏蔽掉存儲區(qū)ID,可參考32位指針格式)
L P##Variable (得到變量在多重背景FB里的地址)
+D (多重背景FB的偏移地址與變量在多重背景FB里地址相加,即得到實(shí)際絕對偏移量)
LAR1
上述語句就是就得到了變量在背景DB中的絕對偏移量,從而供后續(xù)程序處理。 1.5如何在程序中使用ANY 型指針? 簡要說明如下:
L P##Input //指向存儲地址指針I(yè)nput首地址
//這個參數(shù)是一個Any類型,P##Input指向參數(shù)Input的值所在地址,這就是指針的指針
LAR1 //裝載到地址寄存器AR1中。
L W [AR1,P#4.0] //打開DB塊
// 由Any類型結(jié)構(gòu)知道Any類型的Byte4、Byte5存放的數(shù)據(jù)塊號
T #BLOCK_NO
OPN DB [#BLOCK_NO] //如果是DB塊,打開指定的DB塊。
L W [AR1,P#2.0] //判斷ANY指針中數(shù)據(jù)長度
// Any類型的Byte2、Byte3是重復(fù)系數(shù),如P#DB1.DBX0.0 Byte 8后面的Byte 8
_001:T #DATA_LEN //通常此處做loop循環(huán)?。?/span>
L D [AR1,P#6.0] //找出需要計算數(shù)據(jù)區(qū)的開始地址
// Any類型Byte6~Byte9是32位區(qū)域地址
理解Pointer、Any的類型的數(shù)據(jù)結(jié)構(gòu),對于正確使用指針有很大幫助。
為正確使用指針,應(yīng)仔細(xì)閱讀如下內(nèi)容:
"SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章 參數(shù)類型 如下的程序?qū)崿F(xiàn)了SFC20的部分功能,可以作為Any使用的參考。
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
SRCBLK : ANY ;
END_VAR
VAR_OUTPUT
RETVAL : INT ;
DSTBLK : ANY ;
END_VAR
VAR_TEMP
LOOP : INT ;
BLOCK_NO_DB : WORD ;
BLOCK_NO_DI : WORD ;
SRC_ADD : DWORD ;
DST_ADD : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##SRCBLK; //讀取輸入any的首地址
LAR1 ; //裝載到ar1
L P##DSTBLK; //讀取輸出any的首地址
LAR2 ; //裝載到ar2
L W [AR1,P#4.0]; //打開DB塊
T #BLOCK_NO_DB;
L W [AR2,P#4.0]; //打開DI塊
T #BLOCK_NO_DI;
OPN DB [#BLOCK_NO_DB]; //打開DB塊
OPN DI [#BLOCK_NO_DI]; //打開DI塊
L D [AR1,P#6.0];
T #SRC_ADD; //讀取地址
L D [AR2,P#6.0];
T #DST_ADD; //讀取地址 L W [AR1,P#2.0]; //讀取循環(huán)次數(shù)
_001: T #LOOP;
L DBB [#SRC_ADD];
T DIB [#DST_ADD]; //賦值
//地址偏移1個字節(jié)
L P#1.0;
L #SRC_ADD;
+D ;
T #SRC_ADD;
L P#1.0;
L #DST_ADD;
+D ;
T #DST_ADD;
L #LOOP; //循環(huán)
LOOP _001;
END_FUNCTION 1.6 當(dāng)FC 或FB的輸入?yún)?shù)類型為:BLOCK_DB, TIMER或者 COUNTER,如何確定其編號?
例1 :FB 塊
FB1 變量聲明中定義了“ Timer” 類型的變量“ Time_1” ,在 FB2 中調(diào)用 FB1,將定時器“T5”傳遞給變量“ Time_1”。如圖 01 所示程序代碼中數(shù)值 5 表示“T5”。


圖 01 FB中確定定時器編號 在使用多重實(shí)例時,需要在圖 01 所示程序中增加以下代碼:
TAR2 //多重實(shí)例偏移地址
LAR1 P##Time_1
+AR1 //多重實(shí)例偏移地址與當(dāng)前地址相加
L W[AR1,P#0.0]
T MW0
例 2 FC
FC1 變量聲明中定義了“ Timer” 類型的變量“ Time_1” ,在 FC2 中調(diào)用 FC1,將定時器“T8”傳遞給變量“ Time_1”。如圖 02 所示程序代碼中數(shù)值 8 表示“T8”。


來源:上海贊國
版權(quán)聲明:工控網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
今日最新資訊
熱門資訊
0571-87774297