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

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

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

使用SCL語(yǔ)言開發(fā)上升沿或下降沿指令

laidenongfhs ? 來(lái)源:中泰PLC自動(dòng)化教學(xué) ? 2023-07-20 14:20 ? 次閱讀

1.1沿指令概述

沿指令即在程序中用于檢測(cè)信號(hào)的上升沿或下降沿的指令。

SIMATIC S7-1500和S7-1200 PLC中,選擇編程語(yǔ)言為SCL時(shí),可以看到TIA Portal軟件自帶兩個(gè)指令分別用于檢測(cè)信號(hào)的上升沿和下降沿,如圖1所示:

32a6efee-26c3-11ee-962d-dac502259ad0.png

圖1

在程序中調(diào)用R_TRIG或F_TRIG時(shí),系統(tǒng)會(huì)自動(dòng)生成1個(gè)背景DB塊,用于存放檢測(cè)信號(hào)的邊沿存儲(chǔ)位,當(dāng)程序中有較多信號(hào)需要檢測(cè)上升沿或下降沿時(shí),就會(huì)產(chǎn)生多個(gè)背景DB塊,這樣一來(lái),過(guò)多的背景DB塊不僅僅不便于管理,且會(huì)過(guò)多占用CPU寶貴的存儲(chǔ)區(qū)。

以SIMATIC S7-1200 PLC為例,存儲(chǔ)區(qū)分為工作存儲(chǔ)區(qū),裝載存儲(chǔ)區(qū),保持性存儲(chǔ)區(qū),其中工作存儲(chǔ)區(qū)和保持性存儲(chǔ)區(qū)不可擴(kuò)展,不同的CPU具有不同大小的存儲(chǔ)區(qū),如圖2所示:

32c0a524-26c3-11ee-962d-dac502259ad0.png

圖2

假設(shè)選定S7-1211C進(jìn)行編程,如果在程序中應(yīng)用了很多R_TRIG或F_TRIG指令,則實(shí)際程序需要的工作存儲(chǔ)區(qū)有可能超過(guò)50kB,此時(shí)需要更換工作存儲(chǔ)區(qū)更大的PLC來(lái)加以解決,所以適當(dāng)優(yōu)化程序,占用較少的工作存儲(chǔ)區(qū),十分必要。

本文以S7-1200為例,皆在闡釋如何使用SCL語(yǔ)言開發(fā)沿指令以減少工作存儲(chǔ)區(qū)使用。

1.2開發(fā)檢測(cè)上升沿指令

為了不產(chǎn)生背景DB塊,我們?cè)贔C中使用SCL語(yǔ)言進(jìn)行開發(fā),并引入第三方變量作為檢測(cè)信號(hào)的邊沿存儲(chǔ)位。

新建FC

新建FC并選擇編程語(yǔ)言為SCL,F(xiàn)C塊命名為:RisingEdgeDetection,如圖3所示:

32d8c15e-26c3-11ee-962d-dac502259ad0.png

圖3

定義接口

根據(jù)編程需要定義接口變量,并寫明注釋,修改Return變量的數(shù)據(jù)類型為Bool,用于輸出上升沿信號(hào),持續(xù)一個(gè)周期,如圖4所示:

32eb1598-26c3-11ee-962d-dac502259ad0.png

圖4

編程

根據(jù)上升沿檢測(cè)原理進(jìn)行編程,編程思想如下:

當(dāng) #signal由0變成1時(shí),此時(shí)作為邊沿存儲(chǔ)位的 #thirdVariable仍保留 #singal信號(hào)上一周期的狀態(tài),#thirdVariable為False,此時(shí)滿足IF語(yǔ)句,RisingEdgeDetection被賦值為True。

當(dāng) #signal由0變成1后的下一周期,#thirdVariable上個(gè)周期已被 #signal賦值為相同狀態(tài),即 #thirdVariable和 #signal都為True,則不再滿足IF語(yǔ)言,RisingEdgeDetection被賦值為False。

RisingEdgeDetection輸出持續(xù)一個(gè)周期。

程序代碼如圖5所示:

331152a8-26c3-11ee-962d-dac502259ad0.png

圖5

1.3開發(fā)檢測(cè)下降沿指令

與開發(fā)檢測(cè)上升沿指令類似,新建FC并定義接口變量,這里不再一一贅述。在編程上兩者有所不同,其編程思想如下:

當(dāng)#signal由1變成0時(shí),此時(shí)作為邊沿存儲(chǔ)位的#thirdVariable仍保留#singal信號(hào)上一周期的狀態(tài),#thirdVariable為True,此時(shí)滿足IF語(yǔ)句,F(xiàn)allingEdgeDetection被賦值為True。

當(dāng)#signal由1變成0后的下一周期,#thirdVariable上個(gè)周期已被#signal賦值為相同狀態(tài),即#thirdVariable和#signal都為False,則不再滿足IF語(yǔ)言,F(xiàn)allingEdgeDetection被賦值為False。

FallingEdgeDetection輸出持續(xù)一個(gè)周期。

程序代碼如圖6所示:

33276f5c-26c3-11ee-962d-dac502259ad0.png

圖6

1.4功能測(cè)試

使用開發(fā)完成的功能塊,檢測(cè)Q0.0的上升沿和下降沿,編程代碼如圖7所示,Trace時(shí)序圖如圖8所示。

其中:

Data.thirdVariable1為檢測(cè)上升沿指令所用到的第三方變量;

RisingEdgeDetection為輸出上升沿;

Data.thirdVariable2為檢測(cè)下降沿指令所用到的第三方變量;

FallingEdgeDetection為輸出下降沿。

3359fa1c-26c3-11ee-962d-dac502259ad0.png

圖7

336a051a-26c3-11ee-962d-dac502259ad0.png

圖8

1.5效果比對(duì)

為了更好的說(shuō)明該自行開發(fā)沿指令的優(yōu)勢(shì),我們分別使用R_TRIG指令和RisingEdgeDetection指令編寫相同的工藝功能程序,通過(guò)對(duì)比兩者所占用工作存儲(chǔ)區(qū)大小的差異,加以說(shuō)明。

工藝功能要求:

利用S7-1214C,使用SCL編程語(yǔ)言編程,在FB1中實(shí)現(xiàn)1000個(gè)Bool信號(hào)的上升沿檢測(cè)。

1.5.1使用R_TRIG實(shí)現(xiàn)相關(guān)工藝功能

使用R_TRIG指令實(shí)現(xiàn)過(guò)程,如圖9所示。

R_TRIG在FB1中以多重背景形式調(diào)用,方便R_TRIG背景DB塊的管理。

3383fb64-26c3-11ee-962d-dac502259ad0.png

圖9

編譯完成后,在程序信息中查看存儲(chǔ)區(qū)使用情況,如圖10所示,工作存儲(chǔ)區(qū)已被占用10%。Test_IDB為FB1的背景DB塊。

33a0a98a-26c3-11ee-962d-dac502259ad0.png

圖10

1.5.2使用RisingEdgeDetection實(shí)現(xiàn)相關(guān)工藝功能

使用RisingEdgeDetection指令實(shí)現(xiàn)過(guò)程,如圖11所示。

33d0a20c-26c3-11ee-962d-dac502259ad0.png

圖11

編譯完成后,在程序信息中查看存儲(chǔ)區(qū)使用情況,如圖12所示,工作存儲(chǔ)區(qū)已被占用3%。

Test_IDB為FB1的背景DB塊。Data用于存儲(chǔ)第三方變量,變量類型為Array [0…999] of Bool。

33e6b25e-26c3-11ee-962d-dac502259ad0.png

圖12

1.6總結(jié)

從上述分析中,我們可以得出自行開發(fā)的沿指令RisingEdgeDetection、FallingEdgeDetection比R_TRIG、F_TRIG指令占用更少的工作存儲(chǔ)區(qū)空間,且適用于SIMATIC S7-1200及S7-1500 PLC。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5006

    文章

    13107

    瀏覽量

    461458
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    606

    瀏覽量

    35617
  • SIMATIC
    +關(guān)注

    關(guān)注

    1

    文章

    231

    瀏覽量

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

    關(guān)注

    1

    文章

    239

    瀏覽量

    17025
  • S7-1500
    +關(guān)注

    關(guān)注

    3

    文章

    300

    瀏覽量

    6299

原文標(biāo)題:1.1

文章出處:【微信號(hào):中泰PLC自動(dòng)化教學(xué),微信公眾號(hào):中泰PLC自動(dòng)化教學(xué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    方波上升沿下降沿問(wèn)題

    有一個(gè)方波信號(hào),如何得到它的上升沿時(shí)間和下降沿時(shí)間,最大值和最小值這幾個(gè)量,lv中前兩個(gè)有沒(méi)有直接的控件能夠得到結(jié)果,沒(méi)有控件該怎么樣才能得到方波的
    發(fā)表于 07-10 22:41

    按鍵上升沿下降沿的判斷

    按鍵上升沿下降沿的判斷:遇到判定感應(yīng)器從OFF->ON->OFF怎樣實(shí)現(xiàn),要有上升沿
    發(fā)表于 04-11 12:28

    計(jì)算波形圖中上升沿下降沿的個(gè)數(shù)及上升沿下降沿的時(shí)間。

    拋磚引玉,提供一個(gè)簡(jiǎn)易程序,這個(gè)程序如果數(shù)據(jù)最后是保持在下降沿,那么此程序沒(méi)有問(wèn)題。如果數(shù)據(jù)最后處于上升沿,則程序的下降
    發(fā)表于 11-23 09:36

    布爾量上升沿下降沿檢測(cè)

    布爾量上升沿下降沿檢測(cè)
    發(fā)表于 10-11 14:27

    KEA8 KBI下降沿上升沿問(wèn)題求解

    我正在FRDM - KEAZ128 上開發(fā)新代碼,我需要在下降沿上升沿攔截單個(gè)引腳上的中斷,但從文檔來(lái)看,似乎只能使用
    發(fā)表于 03-23 07:53

    上升沿下降沿什么意思?如何理解?

    字面理解上升沿下降沿,是一個(gè)變量變化的一瞬間,是一個(gè)無(wú)窮小的時(shí)間。但是在plc的程序里最小的時(shí)間單位就是掃描周期,所以所謂的沿就是一個(gè)掃描
    發(fā)表于 03-12 10:27 ?6.5w次閱讀

    PLC上升下降沿不工作的原因是什么

    上升下降沿不工作也是一種常見(jiàn)的錯(cuò)誤,盡管手冊(cè)中“P”“N”指令允許的數(shù)據(jù)類型為:I,Q,M ,L,D . 但如果沒(méi)有特殊目的,僅建議使
    的頭像 發(fā)表于 11-07 10:55 ?8899次閱讀
    PLC<b class='flag-5'>上升</b><b class='flag-5'>或</b><b class='flag-5'>下降</b><b class='flag-5'>沿</b>不工作的原因是什么

    上升沿觸發(fā)與下降沿觸發(fā)

    假設(shè)PA0為 低 電平開關(guān)按下后電平被拉 高,配置為上升沿 則按鍵按下為1,若 配置為下降沿 則 按鍵彈開為1上升
    發(fā)表于 11-19 19:06 ?23次下載
    <b class='flag-5'>上升</b><b class='flag-5'>沿</b>觸發(fā)與<b class='flag-5'>下降</b><b class='flag-5'>沿</b>觸發(fā)

    上升沿下降沿是什么意思?

    從字面上理解上升沿下降沿是一個(gè)變量變化的時(shí)刻和一個(gè)無(wú)窮小的時(shí)間。但是plc程序中最小的時(shí)間單位是掃描周期,所以所謂的邊沿就是一個(gè)掃描周期。 ? ?上例中使用的bTrig變量都是用來(lái)讓
    發(fā)表于 12-08 17:58 ?1w次閱讀

    西門子plc上升沿下降沿的理解

    西門子上升沿下降沿的理解:上升沿就是在信號(hào)從斷開到接通的那一瞬間接通,
    發(fā)表于 12-24 15:54 ?9105次閱讀

    安全PLC使用的上升沿下降沿

    使用“ 掃描 RLO 的信號(hào)上升沿指令,可查詢邏輯運(yùn)算結(jié)果的信號(hào)狀態(tài)是否從“0”變?yōu)椤?”。
    的頭像 發(fā)表于 02-20 17:01 ?4123次閱讀

    西門子1200上升沿下降沿的操作流程

    通過(guò)上面的這個(gè)程序,我們就得到了上升沿信號(hào)和下降沿信號(hào)。比如說(shuō),當(dāng)形參“I_請(qǐng)求1”的實(shí)參”I0.0”從0變1時(shí),那么形參“上升
    發(fā)表于 06-01 16:49 ?4330次閱讀
    西門子1200<b class='flag-5'>上升</b><b class='flag-5'>沿</b>和<b class='flag-5'>下降</b><b class='flag-5'>沿</b>的操作流程

    淺析PLC的上升沿下降沿

    有網(wǎng)友留言說(shuō):上升沿就是在信號(hào)從斷開到接通的那一瞬間接通,下降沿就是在信號(hào)從接通到斷開的那一瞬間接通。但是現(xiàn)在的問(wèn)題它的實(shí)際用處是用在哪一些情況。我身邊也有PLC可以做個(gè)什么實(shí)驗(yàn)來(lái)體驗(yàn)
    的頭像 發(fā)表于 07-26 09:24 ?3627次閱讀

    rs觸發(fā)器是上升沿還是下降沿 觸發(fā)器如何確定是上升沿

    在基本的RS觸發(fā)器中,觸發(fā)器的輸出將在時(shí)鐘信號(hào)的上升沿下降沿發(fā)生變化。當(dāng)時(shí)鐘信號(hào)的上升
    的頭像 發(fā)表于 09-12 12:52 ?8380次閱讀

    上升沿下降沿是什么意思 上升沿下降沿有何作用

    上升沿下降沿是什么意思 上升沿下降
    的頭像 發(fā)表于 02-06 14:50 ?1.5w次閱讀