《可編程控制器原理及應用》 第11章習題答案_第1頁
《可編程控制器原理及應用》 第11章習題答案_第2頁
《可編程控制器原理及應用》 第11章習題答案_第3頁
《可編程控制器原理及應用》 第11章習題答案_第4頁
《可編程控制器原理及應用》 第11章習題答案_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

11-1-參考答案:

新建函數(shù)FC101BubbleSort,參數(shù)聲明:

FC101_BubbleSort

名稱數(shù)據(jù)突叁默認值密控注修

句▼Input

<3■enableBool回使能

0■mode8ool排序方式-6?升序.1會席

-d▼Output

■帝熠〉

<2▼InOut

<1■??rr?y$ortArrey(*joflot畏排序的數(shù)組

<S▼Temp

0?iDint僵環(huán)式復,

43■jDint值環(huán)變面

<2■tmplntInt忸忖費置mt

O■tmpLowBoundDim

49■tmpUboundOlnt

編寫代碼:

IF#enableTHEN

〃獲取數(shù)組上限

#tmpLowBound:=LOWER_BOUND(ARR:=farraySort,DIM:=1);

〃獲取數(shù)蛆下限

ItmpUbound:=UPPER_BOUND(ARR:=larraySort,DIM:=1);

〃冒泡排序

FORli:=#tmpLowBoundTOftrnpUboundDO

FOR#j:=#tn^)LowBoundTO(#tmpUbound-#i)DO

IFNOT#modeTHEN

〃升序

IF#arraySort[#j]>tarraySort[#j+1]THEN

#tmplnt:=#arraySort(#j+1];

larraySort[#j+1]:=larraySort[#j];

tarraySort[#j]:=#tmplnt;

END_IF;

ELSE

〃降字

IF#arraySort[?j)<tarraySort[#j+1]THEN

itmplnt:=#arraySort[#j+1];

#arraySort[#j+1]:=farraySort[#j];

#arraySort[#j]:=#tn^)Int;

END_IF;

END_IF;

END_FOR;

END_FOR;

END_IF;|

11-2參考答案:

新建“圓面積”全局數(shù)據(jù)塊,并定義LReal類型的“圓面積”數(shù)組,用于存放計算結果:

國面積

名稱效據(jù)受為起拍值保槨從

4J▼Static0S

00□

3<3"QfilRlOlLReal0.000

4■LReal0.000

543■圓砌HILReal0.00M

6匈■圖硼⑶LReal0.000

7O■圖瑜4]LReal0.000

8■LReal0.000

9<0"圓硼⑹l艇50.00M

10■圜硼⑺LReal0.0

0回

11<3■圜瑜8]LReal0.000

12@aa°i9iLReal0.00

1390圓砌U011410.0

14■

新建“FC圓面積"函數(shù),接口區(qū)及SCL代碼如下:

11-3參考答案:

11-4參考答案:(略)

11-5參考答案:(略)

11-6參考答案:

在實際中,我們經(jīng)常需要設定一個時間去和PLC系統(tǒng)時間進行比較,從而觸發(fā)我們需要的

定時事件。

首先添加FC,建立如下變量:

1句▼Input

2包■yearUlnt

3<3■enableYearBool

4句■monthUSInt

5立2"enableMonthBool

6匈■dayUSInt

7<3"enableDayBool

8@■hourUSInt

9W3"enableHourBool

10&■minuteUSInt

11<3"enableMinuteBool

120?secondUSInt

13WJ■enableSecondBool

14包■weekUSInt

15O■enableWeekBool

16匈"localTimeBool

17■CJ?Output

18??InOut

19<3▼Temp

20@]"tmpRetValInt

2143■tmpOutRangeBool

22@?>tmpActuallimeDIL

23包>Constant

24奮▼Return

25■O■ClockAlarmBool

編寫SCL代碼:

3〃愴充箴入欠是否有效.

4?tspOutlUnge:?((2554<?i'earOR*y?ar<19701JtfDEnableYearICRicspHOMuUUnge

5<(12<tnonthOR*snnth<1)ANDtenableNoath)Oft3y

6<(31<MayOR?day<1)AND?cn&bleD?y>CR

<<23<tbourORIbour<0>AND?enableHour)OR*haour

8<<59<tslnuteORtsiinute<0)AMD?enableMinute)ORnuS

9(<S9<tsecoedOR?9BUOM<0)AKD?enableSecond}OR?3ieH

10(<7<4we?kOR<1)AJR>;

11

12〃我:果他入犍無效.復{ZPloukUg".

13]XF4tspCutJUr>ge-trueTHEN?謔果

14KlockAlanifalse;?ClockAlar?

15RETURN;

16ncp_xr;

17

18〃工者繼時?【£發(fā)系就時傅.

19E3IF<lacalTme-trueTMDC?9票TRUE

20?tnpftetValM>-L0C,T<*a<iActuain??):▼?tBjtfletVal0

RD_LOC_H0

ttspJlctuaniDe£TU2018-12-2?-i0:i0:49.iy73?3951

ELSE

?tBf*etVai:-RD-SYS.KiwpActuBlTiat);卜

rWD-TFy

25〃艙入僮二配?*±-CIO€?ltr?*.

26fClockXlara:-((tyear-iu^lctoeITine.YEAR)OR?>THtubleYear)JUTDTF.JE

27((tsoath-IttpActualTise.MOtfTH)ORNOTtenableMoith)AXD<aonth

28(<?day-4upAccualTxse.EAY)ORNOT#enableDay)AfiD?<Uy

29(<?bour-*txpAccualTlMt.BOUR)CRWOTHnableBounAXD?hour

90((tsinute■ttDpActualTisie.MIffiJTE)ORHOTtenable:4inute)AXDt&inute

31((?-nd?ttspActualTixe.SECOND)ORXOTlenableSecond)AXD?aecood

32(<?ve?k-*cxDAccualTXM.KWCDAY)ORHOTHnabKKwlr);

11-7參考答案:

添加FB塊,建立變量:

項目1?PLC_1[CPU1214CDaDaDC]?程序塊?stringDate_to_dateDate[FB1]

承■凈士AE出名2附小加物錮w專"有亙第''id

stringDate_to_dateDate

名彌數(shù)據(jù)類2J默認值保持

包▼Input

2<3■stringDatelnString昨保持

3■扇替

4包▼Output

5句"dateDateOutDateD#1990-01-01非保持

6■扁替

7O?InOut

8O▼Static

9<3-stringYearStnng章保持

10O■stringMonthString輩保持

11|O■stringDayString非保持

12包■uintYearUlnt0車保持

13<3■usintMonthUSInt0車保持

14O■usintDayUSInt0聿保持

15?ddDateD1LDTL#197001-01-00:00:00攣保持臼

編寫程序,如下:

1RKTUIUNapliz

2tstxingYear:-LEFT(IN:=tstringDateln,L:=4);>istringYear■2018,

IstringMonth:=MXD(XN:=IstringDateXn,L:=2,P:s5);,IstringMonth■12?

4fstringDay:=MID(IN:=fstringDateln,L:s2,P:=7);?tstringDay?20e

5[BND-REGION

6

7AR2GI0Nconvert

fuintYear:■STRIWG_TO_U!Wy(l?tringY?ar);>luintYear

9tusintMonth:=STRING-TO-USINT(tstringMonth);?tusintMonth—12—

10fusintDay:■STRXNG_TO_USXNT(IstringDay);>lusintDay20

ii[END_REGION

12

13早REGIONDTL

14IdtlDate.YEAR:=tuintYear;?IdtlDate.YEAR2018

15fdtlDate.MONTH:=fusintMonth;>fdtlDate.MONTS12

16IdtlDate.DAY:=tusintDay;>tdtlDate.DAY20

17ENDREGION

18~

191dateDateOutDTL_TO_DATE;>1dateDateOut“2018-12-20

20

21

11-8參考答案:

〃不使用R_TRIG生成上升沿

□IF"Triger2"ANDNOT-TrigerZOld-THEN?■IUSB■!

?Triger2Ris"TRUE;?Triger2Ris-IMO.4

£L3E

-Triger2Ris-FALSE;?Triger2Ris-?M0.4FALSE

EKD-IF;

〃遇到上升沿ResulxZlBl

?Triger201dw-TrigerZ";??Triger201d"?M0.3TRUE

□ir"TrigeraRis-THEN?FALSE

"ResultZ"wResult2"?1;▼.Result?-%MW12

Result2"

EHD_IF;

11-9參考答案:

創(chuàng)建“溫度控制”函數(shù),接口參數(shù)如下:

溫度控制

名稱數(shù)據(jù)類加

Q▼Input叵

:9-溫度設定值Real

:O-實際溫度值Real

二<2■允許誤差值Real

59▼Output

6?□?風扇Bool

7<2■加熱2sBool

S▼InOut

,0<3▼Temp

9?上螂值Real

120?下螂值Real

▼Constant

14?奇野

?5▼Return

'<2?溫度控制Void

編寫代碼如下:

3?上核艱宜?溫度設定也+0-1*?允許演費宜;

4?下極限僚:-,鴻度設定d-0.1?■允許謖差僚;

5

6E1IF?實際溪度值>?上極限值THEN

7?風.國:?true;

81ELSE

9SIIF?實際澧叟且<-?上核限篁THEN

10?風扇:?false;

11END_IF;

12[END_IF;

13

14niF?實際海曳也<?下怪雙也THEN

15?加熱器true;

161ELSE

17RIF?實際溫度道>>?下15泯宣THEN

18?加熱都:■false;

19END_IF;

20i

ENDIF;

11-10參考答案:

求平均侑

名梆數(shù)掘靠經(jīng)3?最大B0;

1<□▼Input46平均值0;

2■向fib

3<□▼Output6EF0R?11TO10DO

4?a■最大值Int

7?雙整數(shù)欠:-INT_TO_DINT("數(shù)據(jù)拱一廣.震拈數(shù)據(jù)[”]);

5<2■平均值Dim

加僮:-雙整數(shù)僮+累加”;

6Q,InOut8?JR??

7Q▼Temp97IF"數(shù)搪塊」”.原始數(shù)捐>?最大原THEN

?最大足:-“數(shù)指會二”.原拈數(shù)據(jù)【”】;

8?a■果演值Dint10

9?a?iInt11.ENt_IF;

10?a■雙整效值Dint12[l

ENDFOR;

11Q>Consunt

13

12O▼Return

13■a■求平均值void國14,平均僮:-?累加僚/10;

11-11參考答案:

新建工程,然后為PLC啟用時鐘存儲器字節(jié)MBIOOOo

新建FC功能塊,接口定義如下:

點疝金)三Lm目=臼w上啟土物土國畫屯9

名稱效據(jù)克a?SiAll

1O▼Input

2<3>RUNBool運行信號

3?▼Output

4■

S?▼InOut

64□?puk.tempBool上升3中同位

7?度SETBool時用|o

sg?單次運行,J明

9O?單次運行分料

'0<□"單次運行效

■Q?總運行d'M

:-Q?總運行分14國

13-a?eisfi?

14<2■intTemp按耳位枝揚的時間

:<3▼Temp

16O■BWBool中同位

FC代碼如下:

首先是一個程序段的梯形圖,程序如下,因方便查看,所以就沒有用秒脈沖,用的0.1S的

脈沖,真正使用時可調(diào)整為秒脈沖:

▼程序窿1:

接著插入一個SCL程序段,程序如下:為了防止操作員誤按下時間清零按鈕,所以加了一個

5秒長按才能清零程序

〃計秒

IF#TEMPTHEN

#單次運行秒:=#單次運行秒+1;

#總運行秒:=#總運行秒+1;

ENDJF;

〃計分鐘

IF#單次運行秒>二60THEN

力單次運行分鐘:=什單次運行分鐘+1;

#單次運行秒:=0;

ENDJF;

IF#總運行秒>=60THEN

#總運行分鐘:=#總運行分鐘十二

#總運行秒:=0;

ENDJF;

〃計小時

IF#單次運行分鐘>二60THEN

#單次運行小時:=#單次運行小時+1;

#單次運行分鐘:二0;

END」F;

IF#總運行分鐘>二60THEN

#總運行小時:=#總運行小時+:;

#總運行分鐘:二0;

ENDJF;

〃不運行,單次時間都為0

IF#RUN=FALSETHEN

#單次運行小時:=0;

#單次運行分鐘:=0;

#單次運行秒:=0;

ENDJF;

〃需要長按清零按鈕5秒,才可以清零,防止誤按。

IF#intTemp>=50THEN

#單次運行小時:=0;

#單次運行分鐘:二0;

#單次運行秒:=0;

#總運行小時:=0;

#總運行分鐘:二0;

#總運行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論