粗大浓稠硕大噗嗤噗嗤h,精品人妻码一区二区三区,国产av无码专区亚洲精品,日韩a片无码毛片免费看小说

PLC企業(yè)資訊
    6SL32110KB137UA1
    發(fā)布者:黃工  發(fā)布時間:2016-04-10 13:44:22
    6SL32110KB137UA1,6SL32110KB137UA1

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

                     {西門子與客戶攜手,讓關(guān)鍵所在,逐一實現(xiàn)}

    聯(lián)   系   人: 黃勇《黃工》   24小時聯(lián)系手機:  13701633515
    直線銷售 電 話: 021-31660605    在 線 商 務(wù) QQ:  77956468 
    單位:臺                                                                                  產(chǎn)品單價:電議

    供貨數(shù)量:不限                                                                      最小定量:1

    包裝說明:齊全                                                                      產(chǎn)品規(guī)格:全新原裝

    WinCC中定時器使用方法介紹

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

    3.1整 點歸檔

        WinCC提供了變量歸檔,變量歸檔分為周期歸檔和非周期歸檔,不管是周期歸檔或非周期的歸檔,都又可以通過一些 變量或腳本返回值來控制歸檔, 比如:整點歸檔。下面的設(shè)置結(jié)合WinCC腳本,實現(xiàn)了在 整點開始歸檔,歸檔五分種后停止歸檔,即每個小時僅歸檔前五分鐘的數(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ǔ)上做修改,可以實現(xiàn)在某個指定的時間點打印報表,只要在滿足觸發(fā)條件時調(diào)用下列函數(shù):    
           RPTJobPrint(" Myprintjob");
          Myprintjob為 事先創(chuàng)建好的打印作業(yè)。 
           腳 本主要部分在于獲取系統(tǒng)當(dāng)前時間,下 面的腳本實現(xiàn)了獲取當(dāng)前時間并分別獲取年、月、日、時、分、秒、毫秒,星期幾的功能。
     
        Varname1 到 Varname8 為 WinCC 內(nèi)部變量。若在 WinCC畫面上顯示時,由于默認 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)中本地計算機時間和格林威治時間是有區(qū)別的。函數(shù)“SetSystemTime / GetSystemTime”用于設(shè)置或讀取格林威治時間。
       函數(shù)“SetLocalTime / GetLocalTime”用于設(shè)置或讀取本地計算機時間。
      兩種時間會因地理的時區(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;
    }
        除了避免項目運行激活時觸發(fā)腳本執(zhí)行,我們 還可以通過 Sleep() 延遲腳步功能執(zhí)行,比如開機后五分鐘開始執(zhí)行腳本具體功能,代碼如下:
      #include "apdefap.h"
    intgscAction( void )
    {
            #pragma option(mbcs)

    西門子S7-200PLC的RS485通信口易損壞的原因分析和解決辦法

    一、 S7-200PLC內(nèi)部RS485接口電路圖:電路圖見附件
    圖中R1、R2是阻值為10歐的普通電阻,其作用是防止RS485信號D+和D-短路時產(chǎn)生過電流燒壞芯片,Z1、Z2是鉗制電壓為6V,最大電流為10A的齊納二極管,24V電源和5V電源共地未經(jīng)隔離,當(dāng)D+或D-線上有共模干擾電壓灌入時,由橋式整流電路和Z1、Z2可將共模電壓鉗制在±6.7V,從而保護RS485芯片SN75176(RS485芯片的允許共模輸入電壓范圍為:-7V~+12V)。該保護電路能承受共模干擾電壓功率為60W,保護電路和芯片內(nèi)部沒有防靜電措施。
    西門子S7-200PLC內(nèi)部RS485接口電路圖


    二、常發(fā)生的故障現(xiàn)象分析:
    當(dāng)PLC的RS485口經(jīng)非隔離的PC/PPI電纜與電腦連接、PLC與PLC之間連接或PLC與變頻器、觸摸屏等通信時時有通信口損壞現(xiàn)象發(fā)生,較常見的損壞情況如下:
    ●R1或R2被燒斷,Z1、Z1和SN75176完好。這是由于有較大的瞬態(tài)干擾電流經(jīng)R1或R2、橋式整流、Z1或Z1到地,Z1、Z2能承受最大10A電流的沖擊,而該電流在R1或R2上產(chǎn)生的瞬態(tài)功率為:102×10=1000W,當(dāng)然會將其燒斷。
    ●SN75176損壞,R1、R2和Z1、Z2完好。這主要可能是受到靜電沖擊或瞬態(tài)過電壓速度快于Z1、Z2的動作速度造成的,靜電無處不在,僅人體模式也會產(chǎn)生±15kV的靜電。
    ●Z1或Z2、SN75176損壞,R1和R2完好。這可能是受到高電壓低電流的瞬態(tài)干擾電壓將Z1或Z2和SN75176擊穿,由于電流較小和發(fā)生時間較短因而R1、R2不至于發(fā)熱燒斷。
    由以上分析得知PLC接口損壞的主要原因是由于瞬態(tài)過電壓和靜電造成,產(chǎn)生瞬態(tài)過電壓和靜電的原因很多也較復(fù)雜,如由于PLC內(nèi)部24V電源和5V電源共地,24V電源的輸出端子L+、M為其它設(shè)備混合供電可能導(dǎo)致地電位變化,從而造成共模電壓超出允許范圍。所以EIA-485標(biāo)準(zhǔn)要求將各個RS485接口的信號地用一條低阻值導(dǎo)線連接在一起以保證各節(jié)點的地電位相等,消除地線環(huán)流!
    當(dāng)帶電插拔未隔離的連接電纜時,由于兩端電位不相等電路中又存在諸多電感、電容之類的器件,插拔瞬間必然產(chǎn)生瞬態(tài)過電壓或過電流。
    連接在RS485總線上的其它設(shè)備產(chǎn)生的瞬態(tài)過電壓或過電流同樣會流入到PLC,總線上連接的設(shè)備站點數(shù)越多,產(chǎn)生瞬態(tài)過電壓的因素也越多。
    當(dāng)通信線路較長或有室外架空線時,雷電必然會在線路上造成過電壓,其能量往往是巨大的,常有用戶沮喪地說:“聯(lián)網(wǎng)的幾十臺PLC全部遭打壞了!”。
    三、 解決辦法:
    1、從PLC內(nèi)部考慮:
    ●采用隔離的DC/DC將24V電源和5V電源隔離,分析了三菱、歐姆龍、施耐德PLC以及西門子的PROFIBUS接口均是如此。
    ●選用帶靜電保護、過熱保護、輸入失效保護等保護措施完善的高擋次RS485芯片,如:SN65HVD1176D、MAX3468ESA等,這些芯片價格一般在十幾元至幾十元,而SN75176的價格僅為1.5元。
    ●采用響應(yīng)速度更快、承受瞬態(tài)功率更大的新型保護器件TVS或BL浪涌吸收器,如P6KE6.8CA的鉗制電壓為6.8V,承受瞬態(tài)功率為500W,BL器件則可抗擊4000A以上大電流沖擊。
    ●R1和R2采用正溫度系數(shù)的自恢復(fù)保險PTC,如JK60-010,正常情況下的電阻值為5歐,并不影響正常通信,當(dāng)受到浪涌沖擊時,大電流流過PTC和保護器件TVS(或BL),PTC的電阻值將驟然增大,使浪涌電流迅速減小。
    2、從PLC外部考慮:
    ● 使用隔離的PC/PPI電纜,盡量不用廉價的非隔離電纜(特別是在工業(yè)現(xiàn)場)。西門子公司早期出產(chǎn)的PC/PPI電纜(6ES7 901-3BF00-0XA0)是不隔離的,現(xiàn)在也改成隔離的電纜了!
    ● PLC的RS485口聯(lián)網(wǎng)時采用隔離的總線連接器.
    ● 與PLC聯(lián)網(wǎng)的第三方設(shè)備,如變頻器、觸摸屏等的RS485口均使用RS485隔離器BH-485G進行隔離,這樣各RS485節(jié)點之間就無“電”的聯(lián)系,也無地線環(huán)流產(chǎn)生,即使某個節(jié)點損壞也不會連帶其它節(jié)點損壞。
    ● RS485通信線采用PROFIBUS總線專用屏蔽電纜,保證屏蔽層接到每臺設(shè)備的外殼并最后接大地。
    ● 對于有架空線的系統(tǒng),總線上最好設(shè)置專門的防雷擊設(shè)施。 

    找到了解決S7-200通訊口損壞的辦法了

    在我們單位眾多的S7-200PLC中,不時有通訊口損壞,致使不能連接PC或不能進行通訊,在對PLC解體時發(fā)現(xiàn),在PLC通訊口出有一芯片--75176,這就是通訊接口芯片,在芯片周圍有5個FB,標(biāo)識FB1~FB5,這其實就是5個保險,在通訊連不上時,一般就是這5個保險中的某個燒毀了,可用同等型號的保險代替,也可用導(dǎo)線直接短路。一般就能解決問題。不過更換時要注意,由于元件時貼片的,十分小,空間也小,所以焊接時注意不要短路。

    西門子PLC網(wǎng)絡(luò)讀寫指令向?qū)褂弥改?/h1>

    PPI協(xié)議是專門為S7-200開發(fā)的通信協(xié)議。S7-200 CPU的通信口(Port 0、Port 1)均支持PPI通信協(xié)議。S7-200 CPU的PPI網(wǎng)絡(luò)通信是建立在RS-485網(wǎng)絡(luò)的硬件基礎(chǔ)上,因此其連接屬性和需要的網(wǎng)絡(luò)硬件設(shè)備與其他RS-485網(wǎng)絡(luò)一致。

    1  網(wǎng)絡(luò)讀寫(NETR/NETW)指令介紹

    網(wǎng)絡(luò)讀寫指令一般用于S7-200 CPU之間的PPI網(wǎng)絡(luò)通信。PPI通信前要保證PPI網(wǎng)絡(luò)上的所有站點都應(yīng)當(dāng)有各自不同的網(wǎng)絡(luò)地址,否則通信不會正常進行。另外,網(wǎng)絡(luò)讀寫指令進行編程和應(yīng)用時要注意以下幾點:
    1)    在程序中可以使用任意條網(wǎng)絡(luò)讀寫指令,但是在同一時刻,最多只能有8條網(wǎng)絡(luò)讀寫指令被激活;
    2)    每條網(wǎng)絡(luò)讀寫指令可以從遠程站點讀取/寫入最多16個字節(jié)的信息;
    3)    使用NETR/NETW指令向?qū)Э梢跃庉嬜疃?4條網(wǎng)絡(luò)讀寫指令,其核心是使用順序控制指令,這樣在任一時刻只有一條NETR/NETW指令有效;
    4)    每個CPU的端口只能配置一個網(wǎng)絡(luò)讀寫指令向?qū)А?/span>

    2  網(wǎng)絡(luò)讀寫指令向?qū)ЫM態(tài)

    2.1 硬件連接

           下面通過一個實例(兩臺S7-200 PLC之間的通信)來介紹如何使用網(wǎng)絡(luò)讀寫指令向?qū)。首先,兩個S7-200之間的硬件連接需要一根標(biāo)準(zhǔn)DP電纜加兩個DP總線插頭。兩臺S7-200的RS485通信端口連接方式,可參考以下圖片中的連接方式(如果PLC有兩個通信端口,則任意端口都可進行配置,本例中兩個PLC均以Port 0口做PPI通信使用),如圖1所示。

     

    圖1   兩臺PLC的網(wǎng)絡(luò)連接

    2.2 NETR/NETW向?qū)ЫM態(tài)過程

    2.2.1設(shè)定通信站地址

           首先,用PC/PPI編程電纜將兩臺PLC的網(wǎng)絡(luò)站地址分別設(shè)置為2和3,波特率都為9.6Kbps。這時,將編程電纜連接到任一個CPU帶可編程插口的DP插頭上,查找兩臺PLC的站地址,如圖2所示。

      
    圖2   設(shè)定兩臺CPU的網(wǎng)絡(luò)地址

           在本例中,選定通信地址為3的PLC為網(wǎng)絡(luò)主站,并對其進行向?qū)渲。選定要做為通信主站的CPU地址,點擊確認后即可進入該CPU的編程界面。另外,網(wǎng)絡(luò)讀寫指令向?qū)詣訉PU設(shè)置成主站模式,不必另行編程設(shè)置,只需為主站編寫通信程序,從站直接使用通信緩沖區(qū)中的數(shù)據(jù),或?qū)?shù)據(jù)整理到通信區(qū)即可。

    2.2.2 向?qū)渲貌襟E

           進入到編程畫面后,點擊工具菜單欄,找到指令向?qū)нx項,準(zhǔn)備進入網(wǎng)絡(luò)讀/寫功能的向?qū)渲媚J,如圖3所示。 

     
    圖3 進入指令向?qū)Ь幊探缑?/span>

    打開指令向?qū)Ы缑,選擇NETR/NETW指令功能,如圖4所示。 

    HMI
    6AV6 640-0BA11-0AX0 OP 73 micro s7-200系列用
    6AV6 640-0CA11-0AX0 TP177 micro 觸摸式 s7-200系列用
    6AV6 640-0DA11-0AX0 K-TP 178 micro s7-200系列用
    6AV6 641-0AA11-0AX0 OP 73  單色  3英寸  
    6AV6 641-0BA11-0AX0 OP 77A  單色 4.5英寸  
    6AV6 641-0CA01-0AX0 OP 77B  單色 4.5英寸  
    6AV6 642-0AA11-0AX0 TP 177A  單色 5.7英寸  
    6AV6 642-0BC01-1AX1 TP 177B DP 單色 5.7英寸
    6AV6 642-0BA01-1AX0 TP 177B PN/DP 彩色 5.7英寸
    6AV6 642-0DC01-1AX0 OP 177B DP 單色 5.7英寸
    6AV6 642-0DA01-1AX0 OP 177B PN/DP 彩色 5.7英寸
    6AV6 643-0BA01-1AX0 OP 277-6操作員面板,5.7寸彩色中文顯示
    6AV6 643-0AA01-1AX0 TP277-6 觸摸式面板,5.7寸彩色中文顯示
    6AV6 643-0CB01-1AX1 MP277-8 觸摸式面板,8寸64K色中文
    6AV6 643-0DB01-1AX1 MP277-8 按鍵式面板,8寸64K色中文顯示
    6AV6 643-0CD01-1AX1 MP277-10 觸摸式面板,10寸64K色中文
    6AV6 643-0DD01-1AX1 MP277-10 按鍵式面板,10寸64K色中文顯示
    6AV6671-1CB00-0AX0  MMC 存儲卡 128 MB 用于 OP77B, OP/TP 177B, MOBILE PANEL 177 
    6AV6671-1CB00-0AX1  MMC 存儲卡 64 MB 用于 OP77B, OP/TP 177B, MOBILE PANEL 177 
    6AV6644-0AA01-2AX0 SIMATIC  MP 377 12" TOUCH      
    6AV6644-0AB01-2AX0 SIMATIC  MP 377 15" TOUCH      
    6AV6644-0AC01-2AX0 SIMATIC  MP 377 19" TOUCH
    6AV6644-0BA01-2AX0 SIMATIC  MP 377 12" KEY
    6AV6647-0AA11-3AX0  SIMATIC KTP400 Basic mono PN 3.8" mono STN 顯示屏,以太網(wǎng)接口
    6AV6647-0AB11-3AX0  SIMATIC KTP600 Basic mono PN 5.7" mono STN 顯示屏,以太網(wǎng)接口,
    6AV6647-0AC11-3AX0  SIMATIC KTP600 Basic color DP 5,7" TFT 顯示屏,256 色 MPI/PROFIBUS DP 接口
    6AV6647-0AD11-3AX0  SIMATIC KTP600 Basic color PN 5,7" TFT 顯示屏,256 色以太網(wǎng)接口
    6AV6647-0AE11-3AX0  SIMATIC KTP1000 基本色 DP 10.4" TFT 顯示器,256 色 MPI/PROFIBUS DP 接口
    6AV6647-0AF11-3AX0  SIMATIC KTP1000 基本色 PN 10,4" TFT 顯示器,256 色,以太網(wǎng)接口,
    6AV6647-0AG11-3AX0  SIMATIC TP1500 基本色 PN 15.0" TFT 顯示器,256 色,以太網(wǎng)接口,
    6AV6647-0AH11-3AX0  SIMATIC HMI kp300基本單PN,基本面板,按鍵操作,3寸”
    6AV2124-0GC01-0AX0  SIMATIC HMI TP700 7.0 英寸寬屏 TFT 顯示屏,分辨率 800 x 480,1600 萬色 
    6AV2124-0JC01-0AX0  SIMATIC HMI TP900,?9.0 英寸寬屏 TFT 顯示屏,分辨率 800 x 480,1599 萬色
    6AV2124-0MC01-0AX0  SIMATIC HMI TP1200 ?12.1 英寸寬屏 TFT 顯示屏,分辨率 1280 x 800,1600 萬色 
    6AV2124-0QC02-0AX0  SIMATIC HMI TP1500 ?15.4 英寸寬屏 TFT 顯示屏,分辨率 1280 x 800,1600 萬色
    ?2 個PROFINET 接口(2 個端口帶有集成開關(guān) + 支持千兆位的附加接口)和 1 個 PROFIBUS 接口
    6AV2124-0UC02-0AX0  SIMATIC HMI TP1900 ?18.5 英寸寬屏 TFT 顯示屏,分辨率 1366 x 768,1600 萬色 
    6AV2124-0XC02-0AX0  SIMATIC HMI TP2200,?21.5 英寸寬屏 TFT 顯示屏,分辨率 1920 x 1080,1600 萬色 
    6AV2124-1DC01-0AX0  SIMATIC HMI KP400 ?4.3 英寸寬屏 TFT 顯示屏,分辨率 480 x 272,1600 萬色 
    6AV2124-1GC01-0AX0 SIMATIC HMI KP700 ?7.0 英寸寬屏 TFT 顯示屏,分辨率 800 x 480,1600 萬色 
    6AV2124-1JC01-0AX0  SIMATIC HMI KP900 ?9.0 英寸寬屏 TFT 顯示屏,分辨率 800 x 480,1600 萬色 
    6AV2124-1MC01-0AX0  SIMATIC HMI KP1200 ,?12.1 英寸寬屏 TFT 顯示屏,分辨率 1280 x 800,1600 萬色 
    6AV2124-1QC02-0AX0  SIMATIC HMI KP1500 ?15.4 英寸寬屏 TFT 顯示屏,分辨率 1280 x 800,1600 萬色 
    6AV2124-2DC01-0AX0  SIMATIC HMI KTP400 ?4.3 英寸寬屏 TFT 顯示屏,分辨率 480 x 272,1600 萬色 
    6AV6645-0AA01-0AX0  SIMATIC 移動式面板177 DP,帶集成啟動按鈕,使用WINCC FLEXIBLE緊湊型2005或以上進行組態(tài) 
    6AV6645-0AB01-0AX0  SIMATIC 移動式面板177 DP,帶集成啟動按鈕和急停按鈕,使用WINCC FLEXIBLE緊湊型2005或以上進行組態(tài)
    6AV6645-0AC01-0AX0  SIMATIC 移動式面板177 DP,帶集成啟動按鈕和急停按鈕、手輪、鑰匙開關(guān)和亮光按鈕, 
    6AV6645-0BA01-0AX0  SIMATIC 移動式面板177 PN,帶集成啟動按鈕,使用WINCC FLEXIBLE緊湊型2005或以上進行組態(tài) 
    6AV6645-0BB01-0AX0  SIMATIC 移動式面板177 PN,帶集成啟動按鈕和急停按鈕,使用WINCC FLEXIBLE緊湊型2005或以上進行組態(tài) 
    6AV6645-0BC01-0AX0  SIMATIC 移動式面板177 PN,帶集成啟動按鈕和急停按鈕、手輪、鑰匙開關(guān)和亮光按鈕, 
    6AV6645-0BE02-0AX0  SIMATIC 移動式面板 277 10" W,集成使能按鈕、停止按鈕和觸控按鈕,
    6AV6645-0CA01-0AX0  SIMATIC 移動式面板277,帶集成啟動按鈕,
    6AV6645-0CB01-0AX0  SIMATIC 移動式面板277,帶集成啟動按鈕和急停按鈕,
    6AV6645-0CC01-0AX0  SIMATIC 移動式面板277,帶集成啟動按鈕和急停按鈕、手輪、鑰匙開關(guān)和兩個亮光按鈕 

    西門子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#進行地址寄存器取址僅能支持Temp臨時變量。因此如果需要在FC中操作指針等復(fù)雜輸入輸出變量地址需要使用累加器進行中轉(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進行間接尋址時需要注意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里地址相加,即得到實際絕對偏移量)
    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)!
    L D [AR1,P#6.0] //找出需要計算數(shù)據(jù)區(qū)的開始地址
    // Any類型Byte6~Byte9是32位區(qū)域地址
    理解Pointer、Any的類型的數(shù)據(jù)結(jié)構(gòu),對于正確使用指針有很大幫助。
    為正確使用指針,應(yīng)仔細閱讀如下內(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中確定定時器編號 在使用多重實例時,需要在圖 01 所示程序中增加以下代碼:
    TAR2 //多重實例偏移地址
    LAR1 P##Time_1
    +AR1 //多重實例偏移地址與當(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)聲明PLC信息網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內(nèi)容的真實性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
最新資訊