《可编程控制器原理及应用》 第11章习题答案_第1页
《可编程控制器原理及应用》 第11章习题答案_第2页
《可编程控制器原理及应用》 第11章习题答案_第3页
《可编程控制器原理及应用》 第11章习题答案_第4页
《可编程控制器原理及应用》 第11章习题答案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11-1-参考答案:

新建函数FC101BubbleSort,参数声明:

FC101_BubbleSort

名称数据突叁默认值密控注修

句▼Input

<3■enableBool回使能

0■mode8ool排序方式-6•升序.1会席

­d▼Output

■帝熠〉

<2▼InOut

<1■►«rr«y$ortArrey(*joflot畏排序的数组

<S▼Temp

0•iDint僵环式复,

43■jDint值环变面

<2■tmplntInt忸忖费置mt

O■tmpLowBoundDim

49■tmpUboundOlnt

编写代码:

IF#enableTHEN

〃获取数组上限

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

〃获取数蛆下限

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参考答案:

新建“圆面积”全局数据块,并定义LReal类型的“圆面积”数组,用于存放计算结果:

国面积

名称效据受为起拍值保椁从

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圆面积"函数,接口区及SCL代码如下:

11-3参考答案:

11-4参考答案:(略)

11-5参考答案:(略)

11-6参考答案:

在实际中,我们经常需要设定一个时间去和PLC系统时间进行比较,从而触发我们需要的

定时事件。

首先添加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〃工者继时•【£发系就时傅.

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

名弥数据类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参考答案:

创建“温度控制”函数,接口参数如下:

温度控制

名称数据类加

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参考答案:

求平均侑

名梆数掘靠经3♦最大B0;

1<□▼Input46平均值0;

2■向fib

3<□▼Output6EF0R»11TO10DO

4•a■最大值Int

7♦双整数欠:-INT_TO_DINT("数据拱一广.震拈数据[”]);

5<2■平均值Dim

加僮:-双整数僮+累加”;

6Q,InOut8♦JR♦♦

7Q▼Temp97IF"数搪块」”.原始数捐>♦最大原THEN

♦最大足:-“数指会二”.原拈数据【”】;

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启用时钟存储器字节MBIOOOo

新建FC功能块,接口定义如下:

点疝金)三Lm目=臼w上启土物土国画屯9

名称效据克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的

脉冲,真正使用时可调整为秒脉冲:

▼程序窿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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论