在S 型PLC中使用高级语言编程_第1页
在S 型PLC中使用高级语言编程_第2页
在S 型PLC中使用高级语言编程_第3页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

S7300/400PLCS7-SCLPasical、DeliphiIEC61131-3PLCS7STLSCL,STLSCLSCLSTL,同时SCLSTLPLCPCC/C++等高级语言。总体来说,SCLSTLLadS7-SCLSCL最后给出了示例。S7-300/400程语言。一、软件的使用1、创建一个新的S7-SCLSource文件àCPUàS7ProgramàSourcesInsertNewObjectàSCLSCLSourceSCL2、块保护SCLSourceKNOW_HOW_PROTECT,块时,只能显示参数,而看不到内容。3、主菜单”Insert”下的”BlockTemplate”可用于插入如OB,FB等各种块的结构。”ControlStructure”菜单可插入各种流程控制结构,这些都可以简化编程。4SourceFile>CompileSelectedBlocks。也可以把几SourceS7-SCLcompilationcontrolfileSCLSource二、语法规则1、编写SCLSource文件的一般规则FB,FC,OB,DBUDT,Source每种块类型都有它自己的结构。每段落或者每个变量的声明以符号”;”标志结束。不区分大小写。注释仅存在于程序文档中,它不影响程序运行。DB0DB0.2、编写块的先后次序被调用的块必须位于调用块之前。UDT共享数据块必须位于那些使用它的所有块之前。三、数据类型1、数据类型预览Ⅰ、基本数据类型2、补充<1>、DATE_AND_TIMEDataType其值的范围:DT#1990-01-01-0:0:#2089-12-31-23:59:该类型以BCD码形式存储。20/Oct./199512:20:30and10millisecondsDATE_AND_TIME#1995-10-20-12:20:DT#1995-10-20-12:20:<2>STRING.声明VARText1:String[123];VARCONTROLLER1:3,1..4]OFINT:=-54,736,-83,77,-1289,10362,385,2,60,-37,-7,103;CONTROLLER2:ARRAY[1..10]OFREAL;声明一个结构MOTOR中包含另一个结DATAVARMOTOR:STRUCTDATA:STRUCTLOADCURR:REAL;VOLTAGE:INT:=5;END_STRUCT;END_STRUCT;END_VAR结构以WORD的形式结尾,否则系统自动把丢失的字节补到结构中去。<5UDT(TYPE.ret:=SFC79(N:=N_out,SA:=out);END_FUNCTION1000]OFREAL;END_VARBEGIN.FC100(N_out:=ii,out:=aa);.END_FUNCTION_BLOCK<7>ANY类型.VAR_INPUT5:..:INT;声明时可以初始化:VALUE:REAL:=;数组的初始化有两种方式:CONTROLLER1:ARRAY[1..2,1..2]OFINT:=-54,736,-83,77;A3[2A3[11]A3:ARRAY[1..12]OFREAL:=,10,;2、块参数输入参数:用于接收当块被调用时的输入值,他们是只读的。输出参数:传输当前值到这个调用块,在被调用块中应该对该参数赋值输入/3、使用多重背景声明方式如下:Supply1:FB10;CONSTNumber:=10;10M3f1995-11-111995-05-051995-01-011995-02-02W10;LadSTLSCL”B”七、表达式、操作符和地址1、操作符预览八、控制流程1、IF选择语句IFconditionTHEN…ELSIFconditionTHENIFARRAY[INDEX]=INDEXTHENCONTINUE;END_IF;2、CASE选择语句CASEintVariantOF:DISPLAY:=OVEN_TEMP;:DISPLAY:=MOTOR_SPEED;3..10:DISPLAY:=INT_TO_DINT(TW);50]OFSTRING;END_VARBEGINFORINDEX:=1TO50BY2DO..LAB1:INDEX:=1;GOTOLAB3;LAB2:INDEX:=2;…7、调用块绝对地址调用,例如:(X1:=5,X2:=78,......); DISTANCE(X1:=5,Q1=:Checksum);EN,ENO,BOOL..ELSE..END_IF;九、定时器和计数器1、计数器S_CU增计数器S_CD减计数器S_CUD增/减计数器.S_CUD(C_N=C12,4]ofSTRUCTC_NINT;PV:WORD;END_STRUCT;…END_VAR…FORI:=1TO4DO_NO,S:=true,PV:=END_FOR;FUNCTION_BLOCKVAR_INPUTMYCounter:COUNTER;END_VAR…CurrVal:=S_CD(C_N=MyCounter,.....);4]ofT_NINT;TV:WORD;END_STRUCT;…END_VAR…FORI:=1TO4DOCurrTime:=S_ODT(T_N=MY_TIMER[I].T_NO,S:=true,MY_TIMER[I].TV);END_FOR;FUNCTION_BLOCKTIMERVAR_INPUTmytimer:TIMER;END_VAR…CurrTime:=S_ODT(T_N=mytimer,.....);十、S7-SCL中的标准功能1、数据类型转换函数隐式转换,其依照的顺序为:BOOL>BYTE>WORD>DWORDINT>DINT>REAL.VARIF(PID_CTRLLER_1<>PID_CTRLLER_2)THEN....IF(PID_CTRLLER_1<>PID_CTRLLER_2)THEN....RESULT:=EXPD(3);141592;RESULT:=SIN(PI/6);.);<2>最小值函数//32以外,任意其他数//子类型均可以,但所有的参数数据类型必须一致。A:=MIN(IN1:=a,IN1:=b,IN1:=c,IN1:=d);<3>极限值函数A:=LIMIT(MN:=5,IN:=Executionsteps,MX:=10);<4>MUX函数A:=MUX(K:=SELECT,IN0:=Steps,IN1:=Number,IN2:=Total);9、系统功能/功能块、标准库SCL像其他语言一样,可以调用各种功能块,包括系统功能、功能块SFC/SFB十一、示例(均在PLC-SIM上测试通过)1、编写位偏移程序MM1,2,6,则为//根据偏移量来设定字节和位FUNCTIONFC200:voidVAR_INPUT//输入变量byteNINT;//MbitNINT;//指定起始位号bitNum:INT;//指定位数END_VARVAR_OUTPUT//输出变量currBit:INT;//当前位currByte:INT;//END_VARVAR_TEMPtmp:INT;END_VARBEGINtmp:=(bitNo+bitNum-1)DIV8;currByte:=byteNo+tmp;currBit:=bitNo+bitNum-(8*tmp+1);END_FUNCTION2、功能选择程序假设某个机床有若干过手动功能,使用两个按钮”+”和”-“,按一次”+”,34灯亮,而与功能31,重新开始循环,按钮”-“与”+”正好相反,用1s200ms钟加一或者减一。/////////////////////////////////////////////主要控制功能FC10////////////////////////////////////////FUNCTIONFC10:VOIDVAR_INPUT//输入变量fnAdd:BOOL;//接收"+"按钮fnSub:BOOL;//接收"-"按钮byteNINT;//MMbitNINT;//指定起始位号bitNum:INT;//指定总的位数END_VARVAR//静态变量pus1:BOOL;//记录按钮"+"的脉冲pus2:BOOL;//记录按钮"-"的脉冲button:BOOL;//确定按钮"+"或者按钮"-"被按下currNINT;//记录当前的功能号currBit:INT;//当前位currByte:INT;//当前字节//定时器输出p1:BOOL;p2:BOOL;p11:BOOL;//p111:BOOL;p22:BOOL;//p222:BOOL;CurrTime:S5TIME;END_VARVAR_TEMPi:INT;END_VARBEGIN////IFfnAdd&fnSubTHENRETURN;END_IF;/////////////////////////////////////////获取按钮"+"的脉冲///////////////////////////////////////////IFfnAdd&(button=false)THENpus1:=true;ELSEpus1:=false;END_IF;//////////////////////////////////////////按钮"-"的脉冲/////////////////////////////////IFfnSub&(button=false)THENpus2:=true;ELSEpus2:=false;END_IF;IF(fnSub&(fnAdd=false))OR(fnAdd&(fnSub=false))THENbutton:=true;ELSEbutton:=false;END_IF;//////////////////////////添加定时器监测////////////////////////////////////////////////////CurrTime:=S_ODT(T_N=T10,S:=fnAdd,TV:=T#800ms,Q:=p1);//按钮按下的时间CurrTime:=S_ODT(T_N=T11,S:=p1&p111,TV:=T#200ms,Q:=p11);IFp11=trueTHENp111:=false;//当定时器有输出后,断开信号,使其在下一扫瞄周期中无输出ELSEp111:=true;//在按钮按下的情况下重启定时器计时END_IF;CurrTime:=S_ODT(T_N=T20,S:=fnSub,TV:=T#1s,Q:=p2);CurrTime:=S_ODT(T_N=T21,S:=fnSub&p222,TV:=T#200ms,Q:=p22);IFp22=trueTHENp222:=false;//当定时器有输出后,断开信号,使其在下一扫瞄周期中无输出ELSEp222:=true;//在按钮按下的情况下重启定时器计时END_IF;/////////////////////////////////////////////////////////////////////////////////////////////////////////1IFpus1=trueORp11THEN//按钮"+"的脉冲IFcurrNocurrN=currNo+1;ELSEcurrN=1;END_IF;ELSIFpus2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论