0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

西門(mén)子SCL建立功能塊ACQUIRE的步驟

機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 來(lái)源:機(jī)器人及PLC自動(dòng)化應(yīng)用 ? 2023-04-15 09:52 ? 次閱讀

聲明部分的結(jié)構(gòu)(Structure of the Declaration Section)

塊中的聲明部分包含以下子域:

常量:在CONST和END_CONST之間。

輸入參數(shù):在VAR_INPUT和END_VAR之間。

輸出參數(shù):在VAR_OUTPUT和END_VAR之間。

靜態(tài)變量:在VAR和END_VAR之間。也包括對(duì)EVALUATE塊的本地實(shí)例的聲明。

CONST
LIMIT := 7;
QUANTITY := LIMIT + 1;
END_CONST
VAR_INPUT 輸入變量聲明
measval_in :INT ; // 新測(cè)量值
newval :BOOL; // 在環(huán)形緩沖區(qū)"measvals"中的測(cè)量值
resort :BOOL; // 對(duì)測(cè)量值進(jìn)行排序
funct_sel :BOOL; // Select calculation square root/square
newsel :BOOL; // 取得輸出地址
selection :WORD; // 輸出地址
END_VAR
VAR_OUTPUT 輸出變量聲明

result_out :INT; // 計(jì)算值
measval_out:INT; // 相應(yīng)的測(cè)量值
END_VAR
VAR 靜態(tài)變量聲明
measvals:ARRAY[0..LIMIT] OF INT := 8(0);
resultbuffer:ARRAY[0..LIMIT] OF
STRUCT
squareroot:INT;
square:INT;
END_STRUCT;
pointer:INT:= 0;
oldval:BOOL:= TRUE;
oldsort:BOOL:= TRUE;
oldsel:BOOL:= TRUE;
address:INT:= 0; // 轉(zhuǎn)換后的輸出地址
outvalues_instance: EVALUATE;// 定義本地實(shí)例
END_VAR

靜態(tài)變量(Static Variables)

因?yàn)槟承?shù)據(jù)要保留到下一個(gè)程序循環(huán),所以選擇FB塊類(lèi)型。有些靜態(tài)變量在聲明部分"VAR, END_VAR"中聲明。

靜態(tài)變量是本地變量,其值保留貫穿每個(gè)塊處理過(guò)程。他們用來(lái)保留功能塊的值,且存貯在實(shí)例數(shù)據(jù)塊中。

初始化變量(Initializing Variables)

記住當(dāng)塊被初始化時(shí)(下載CPU之后),在變量中鍵入初始值。功能塊EVALUATE的本地實(shí)例也在聲明子域"VAR, END_VAR"中聲明。其名字是以后調(diào)用和存取輸出參數(shù)使用的。共享的實(shí)例ACQUIRE_DATA用來(lái)存貯數(shù)據(jù)。

語(yǔ)句部分的結(jié)構(gòu)(Structure of the Statement Section)

ACQUIRE的語(yǔ)句部分分為三個(gè)子部分:

獲取測(cè)量值:
如果輸入?yún)?shù)"newval"與"oldval"不同,則讀入一個(gè)新測(cè)量值到環(huán)形緩沖區(qū)。

啟動(dòng)排序和計(jì)算:
比較輸入?yún)?shù)"resort"和"oldsort",發(fā)生改變時(shí),通過(guò)調(diào)用EVALUATE功能塊啟動(dòng)排充和計(jì)算。

求取代碼并準(zhǔn)備輸出:
按字讀取代碼。根據(jù)SIMATIC轉(zhuǎn)換規(guī)則,意思是上開(kāi)關(guān)組(字節(jié)0)包含輸入字的高8位,下開(kāi)關(guān)組(字節(jié)1)包含低8位。下圖顯示代碼開(kāi)關(guān)的位置。

計(jì)算地址(Calculating the Address)

下圖顯示如何計(jì)算地址:檢測(cè)取碼開(kāi)關(guān)(位15)一個(gè)邊沿,輸入字IW0的12至14位包含了讀入的代碼。用標(biāo)準(zhǔn)函數(shù)SHR右移并用AND屏蔽相應(yīng)的位得到“地址”。

地址用來(lái)將數(shù)組元素(計(jì)算結(jié)果和對(duì)應(yīng)測(cè)量值)寫(xiě)入輸出參數(shù)。是均方根據(jù),還是平方值決定于"funct_sel"。

檢測(cè)到取碼開(kāi)關(guān)的一個(gè)邊沿,是因?yàn)?newsel"和"oldsel"不同。

2dff77b6-dadf-11ed-bfe3-dac502259ad0.png

邏輯塊的語(yǔ)句部分如下:

BEGIN
(*****************************************************************
第1部分:獲取測(cè)量值。

如果"newval"值發(fā)生改變,則輸入了測(cè)量值。MOD運(yùn)算是用來(lái)實(shí)現(xiàn)測(cè)量值用的環(huán)形緩沖區(qū)。
******************************************************************)
IF newval <> oldval THEN
pointer := pointer MOD QUANTITY;
measvals[pointer] := measval_in;
pointer := pointer + 1;
END_IF;
oldval := newval;
(*****************************************************************
第2部分:?jiǎn)?dòng)排序和計(jì)算

如果"resort"發(fā)生改變,則啟動(dòng)對(duì)環(huán)形緩沖區(qū)的排序和運(yùn)行對(duì)測(cè)量值的計(jì)算。

結(jié)果存貯在一個(gè)新的叫"calcbuffer"的數(shù)組里。
******************************************************************)
IF resort <> oldsort THEN
pointer := 0; //復(fù)位緩沖區(qū)指針
eval_instance(sortbuffer := measvals); //調(diào)用EVALUATE
END_IF;
oldsort := resort;
resultbuffer := eval_instance.calcbuffer; //平方值和均方根

(*****************************************************************
第3部分:求代碼值和準(zhǔn)備輸出

如果"newsel"發(fā)生改變,則計(jì)算用來(lái)輸出的數(shù)組元素的尋址代碼:屏蔽"selection"

的相應(yīng)位并轉(zhuǎn)換為整數(shù)。依據(jù)"funct_sel"開(kāi)關(guān)的設(shè)置,選擇"squareroot"或

"square"用于輸出。
******************************************************************)
IF newsel <> oldsel THEN
address := WORD_TO_INT(SHR(IN := selection, N := 12) AND 16#0007);
END_IF;
oldsel := newsel;
IF funct_sel THEN
result_out := resultbuffer[address].square;
ELSE
result_out := resultbuffer[address].squareroot;
END_IF;
measval_out := measvals[address]; //Measured value display
END_FUNCTION_BLOCK






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 西門(mén)子
    +關(guān)注

    關(guān)注

    94

    文章

    3055

    瀏覽量

    116134
  • VaR
    VaR
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    11360
  • SCL
    SCL
    +關(guān)注

    關(guān)注

    1

    文章

    239

    瀏覽量

    17115

原文標(biāo)題:西門(mén)子SCL 建立功能塊ACQUIRE(獲得)

文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何去制作出完美的西門(mén)子的modbus Rtu/Tcp指令功能塊

    如何去制作出完美的西門(mén)子的modbus Rtu/Tcp指令功能塊?有哪些步驟可以分享一下嗎?
    發(fā)表于 07-02 06:44

    如何去使用西門(mén)子的modbus Rtu/Tcp通訊功能塊

    請(qǐng)問(wèn)一下怎樣去制作西門(mén)子的modbus Rtu/Tcp通訊功能塊呢?如何去使用西門(mén)子的modbus Rtu/Tcp通訊功能塊呢?
    發(fā)表于 09-08 06:32

    淺談西門(mén)子PLC的“SCL語(yǔ)言”編程

    介紹西門(mén)子PLC的“SCL語(yǔ)言”編程,相關(guān)編程代碼
    發(fā)表于 01-22 17:25 ?0次下載

    西門(mén)子PLC的功能功能塊

    本文檔的主要內(nèi)容詳細(xì)介紹的是西門(mén)子PLC的功能功能塊
    發(fā)表于 11-09 17:49 ?64次下載
    <b class='flag-5'>西門(mén)子</b>PLC的<b class='flag-5'>功能</b>和<b class='flag-5'>功能塊</b>

    西門(mén)子PLC系統(tǒng)功能塊和系統(tǒng)功能

    系統(tǒng)功能塊(SFB )和系統(tǒng)功能(SFC ) 已經(jīng)編好程序 用戶不需要每個(gè)功能都自己編程。S7 CPU為用戶提供了一些已經(jīng)編好程序,這些
    的頭像 發(fā)表于 12-23 17:55 ?1.2w次閱讀

    西門(mén)子TDC編程語(yǔ)言CFC功能塊詳細(xì)說(shuō)明

    西門(mén)子TDC編程語(yǔ)言CFC功能塊詳細(xì)說(shuō)明免費(fèi)下載。
    發(fā)表于 04-22 10:06 ?22次下載

    西門(mén)子PLC中使用SCL語(yǔ)言編程的技巧

    西門(mén)子PLC中使用SCL語(yǔ)言編程的技巧說(shuō)明。
    發(fā)表于 04-22 11:15 ?65次下載

    西門(mén)子PLC FB41中PID功能塊說(shuō)明和調(diào)整方法

    西門(mén)子PLC FB41中PID功能塊說(shuō)明和調(diào)整方法說(shuō)明。
    發(fā)表于 04-22 11:48 ?13次下載

    淺談西門(mén)子PLC的SCL語(yǔ)言編程

    西門(mén)子PLC的SCL語(yǔ)言編程說(shuō)明。
    發(fā)表于 04-22 14:39 ?47次下載

    淺談西門(mén)子SCL編程

    淺談西門(mén)子SCL編程資料免費(fèi)下載。
    發(fā)表于 04-23 10:44 ?27次下載

    西門(mén)子TDC編程語(yǔ)言CFC功能塊詳細(xì)說(shuō)明中文版

    西門(mén)子TDC編程語(yǔ)言CFC功能塊的詳細(xì)介紹說(shuō)明。
    發(fā)表于 04-30 14:15 ?0次下載

    西門(mén)子SCL語(yǔ)言編程系列-寫(xiě)立方根FB

    由于西門(mén)子PLC本身并沒(méi)有帶求立方根的指令,我們用SCL來(lái)寫(xiě)一個(gè)求立方根的FB
    的頭像 發(fā)表于 02-06 15:17 ?2002次閱讀
    <b class='flag-5'>西門(mén)子</b><b class='flag-5'>SCL</b>語(yǔ)言編程系列-寫(xiě)立方根FB<b class='flag-5'>塊</b>

    普通電機(jī)功能塊的封裝

    學(xué)過(guò)西門(mén)子TIA(博途)的朋友都知道它的FC/FB非常好用,深受開(kāi)發(fā)者的喜歡,今天我們簡(jiǎn)單的講一個(gè)普通電機(jī)功能塊的封裝。
    的頭像 發(fā)表于 03-13 17:46 ?1569次閱讀
    普通電機(jī)<b class='flag-5'>功能塊</b>的封裝

    西門(mén)子PLC中OB功能詳解

    西門(mén)子PLC(Programmable Logic Controller)作為工業(yè)自動(dòng)化領(lǐng)域的核心設(shè)備,其內(nèi)部功能強(qiáng)大、應(yīng)用廣泛。在西門(mén)子PLC中,OB(Organization B
    的頭像 發(fā)表于 06-15 11:27 ?5032次閱讀

    西門(mén)子流量累計(jì)FB介紹

    西門(mén)子流量累計(jì)FB(Function Block)是一種專(zhuān)門(mén)為處理和計(jì)算流量數(shù)據(jù)而設(shè)計(jì)的功能塊,它通常在博途(TIA Portal)軟件中被創(chuàng)建和使用。該功能塊的意義在于將復(fù)雜的流量
    的頭像 發(fā)表于 12-19 10:28 ?302次閱讀
    <b class='flag-5'>西門(mén)子</b>流量累計(jì)FB<b class='flag-5'>塊</b>介紹