ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:25.94KB ,
资源ID:6375302      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6375302.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(s7300SCL编程笔记.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

s7300SCL编程笔记.docx

1、s7300SCL编程笔记SCL编程一 数据类型:基本数据类型复杂数据类型用户自定义数据类型BOOL位DATE_AND_TIMEUDTBYTE字节日历:格式:Date1:DT:=DT#1990-01-01-00:00:00名称类型初始值UDT的面向源文件的输入和STRUCT变量的输入一样,都限定在关键字TYPE和END_TYPE这间。如:TYPE udtname STRUCTKomp1name:datatype:=pre-assignment;Komp1name:datatype:=pre-assignment;.END_STRUCTEND_TYPEWORD字DWORD双字CHAR字符STRIN

2、G字符串格式:M1:STRINGNO.:=初始值;INT整数DINT双整数REAL浮点数ARRAY数组格式:M1:ARRAYN.M OF INT;数组名:ARRAYN.M OF INT;在数组里寻址:数组NO.S5TIME时间:时,分,秒。如S5T#1h1m1sDATE日期:年,月,日。如;D#2012-4-26TIME表示:日期,时,分,秒,毫秒。如:TIME#24h20h31m23s648msSTRUCT结构TIME_OF_DAY如:TIME_OF_DAY#00:00:00TOD#00:00:00注:还有两种类型:P:POINTER(指针数据类型)。A:ANY(任何类型)数组的定义:M1:

3、ARRAYn0.m0,n1.m1 OF INT;二 寻址绝对寻址地址区域位字节字双字输入Iy.xIByIWyIDy输出Qy.xQByQWyQDy外围输入-PIByPIWyPIDy外围输出-PQByPQWyPQDy存储位MMByMWyMDy全局数据地址DB .DXy.xDB .Dy.xDB .DByDB .DWyDB .DDy 符号寻址如:DB10.setpoint “motor1data”.DW12 间接寻址 如:Ebyteindex,bitindex MBbyteindex DB10.DWbyteindex三SCL运算符和表达式结 合名 称运算符优先级圆括号(表达式)(,)1算术幂一元加,一

4、元减乘法,除法加法,减法*+,-*,/,DIV,MOD+,-2345比较小于,小于等于,大于,大于等于等于,不等于,=,67二进制结合非(一元)与逻辑运算异或或逻辑运算NOTAND,&XOROR38910赋值赋值:=11注:以上运算符的表达式基本大多和我们的数学表达式一样。这里只讲解一下AND,XOR,OR指令。如:a1:=a1 AND W#16#FFFF a1:=a1 XOR W#16#FFFF a1:=a1 OR MW10四控制语句控制语句:语句说明:IF依赖布尔值的程序分支CASE依赖INT值的程序分支FOR具有运行变量的程序循环WHILE具有执行条件的程序循环REPEAT具有删除条件的

5、程序循环CONTINUE当前循环通道的消除EXIT退出程序循环GOTO跳转到跳转标号RETURN退出块注意:当使用程序 循环时,请确保不超过循环监测时间。1. IF语句:IF 条件0THEN 语句0;ELSIF 条件1THEN 语句1;ELSIF 条件2THEN 语句2; ELSE 语句3; END_IF;2. CASE语句:“选择”内的值等于Const内的值就执行那个语句。其它语句不执行,就执行END_CASE;CASE 选择 OF Const1:语句1; Const2:语句2; Constn:语句n; END_CASE;3. FOR语句FOR 变量:=n0 TO n BY m DO.;.;

6、 END_FOR;注意:这里的n为整型变量或整数值。m为每循环加几。4. WHILE语句:只要条件满足,程序循环就重复。 WHILE 条件 DO 语句; END_WHILE;5. REPEAT语句:只要条件不满足,就重复程序循环。REPEAT语句; UNTIL 条件;END_REPEAT;6. CONTINUE语句:在FOR, WHILE, REPEAT循环中终止当前程序通道。7. EXIT语句:在FOR, WHILE, REPEAT循环中终止所有程序通道。8. RETURN语句:语句无条件地退出当前执行的块。9. GOTO语句:例:LABEL /定义标签M1,M2,M3,END;END_LA

7、BEL;.CASE Selection;1:GOTO M1;2:GOTO M2;3:GOTO M3;ELSE GOTO DND;END_CASE;M1:语句1;GOTO DND;M2:语句2;GOTO DND;M3:语句3;END: ;五常量:1. 位常量:值为TRUE或者FALSE.2. 字符常量:(这里是一个字符) Charac_1:=B Charac_2:=char#43; Charac_3:=char#B /字符B Charac_4:=$41 /字符A3. 字符串常量: M1:=ABCDEFJH4. 日期常量: T1:=DATE#1995-11-11; T2:=D#1995-11-11

8、5. 时间常量 N1:=TIME#10.2S; N2:=T#3D_2S_3MS;6. TIME_OF_DAY常量: TM1:=TIME_OF_DAY#12:11:10.1; TT2:=TOD#10:10:10;7. DATE_AND_TIME常量: TT:=DT#2012-4-26-18:12:00;六定时器和计数器:1.定时器有5种,依次为:S_PULSE S_PEXT S_ODT S_ODTS S_OFFDT VARCurrTime : S5time;BiVal : word;ActFlag : bool;END_VAR/在调用定时器时,部分参数可以省略,但左边的赋值变量一定不能省略。Cu

9、rrTime:=S_ODT(T_N=T10, /绝对调用,制定定时器号S:=TRUE, /置位条件TV:=T#1s, /设定定时器值R:=FALSE, /复位条件BI:=biVal,Q:=actFlag);FUNCTION_BLOCK TIMEVAR_INPUTMY_TIMER: ARRAY 1.4 of STRUCTT_N INT;TV : WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DOCurrTime:= S_ODT(T_N=MY_TIMER.T_NO, S:=true,MY_TIMER.TV);END_FOR;FUNCTION_BLOCK TIMERVA

10、R_INPUTmytimer:TIMER;END_VARCurrTime:=S_ODT(T_N=mytimer,.);2. 、计数器S_CU 增计数器S_CD 减计数器S_CUD 增/减计数器e.g.S_CUD (C_N=C12, /绝对调用定时器,指定计数器号CD:=I0.0,CU:=I0.1,S:=I0.2 & I0.3, /置位条件PV:=120, /设定计数器值R:=FALSE, /复位条件CV:=binVal, /输出参数,二进制计数值Q:=actFlag); /输出参数,计数器的状态FUNCTION_BLOCK COUNTVAR_INPUTCount: ARRAY 1.4 of S

11、TRUCTC_N INT;PV : WORD;END_STRUCT;END_VARFOR I:= 1 TO 4 DO /动态调用计数器S_CD(C_N=Count.C_NO, S:=true, PV:= Count.PV);END_FOR;FUNCTION_BLOCK COUNTERVAR_INPUTMYCounter:COUNTER;END_VARCurrVal:=S_CD(C_N=MyCounter,.); /动态调用计数器 七数学函数:三角函数对数功能SIN正弦EXP以e为底的指数功能COS余弦EXPD以10为底的指数功能TAN正切LN自然对数反三角函数LOG以10为底的对数ASIN反正

12、弦其它数学功能ACOS反余弦ABS求绝对值ATAN反正切SQR求平方SQRT求平方根 例子:RESULT := ABS (-5) ; /5RESULT := SQRT (81.0); /9RESULT := SQR (23); /529RESULT := EXP (4.1); /60.340 .RESULT := EXPD (3); /1_000PI := 3. 141 592 ;RESULT := SIN (PI / 6) ; /0.5 八移位函数: ROL、ROR、SHL、SHR例子:RESULT := ROL (IN:=CRC, N:=5); /CRC ,左移5位 ,移出的填充到右边空位

13、RESULT := ROR (IN:=BYTE#2#1101_0011, N:=2); /2#1111_0100 ,右移2位 ,移出的填充到左边空位RESULT := SHL (IN:=BYTE#2#1101_0011, N:=3); /2#1001_1000 ,左移3位,空余部分用0填充RESULT := SHR (IN:=BYTE#2#1101_0011, N:=2); /2#0011_0100 ,右移2位,空余部分用0填充九SCL块SCL所用的块结构与标准编程语言有完全相同的方式。注意:没有功能值返回的功能FC是VOID数据类型。十实例:1.排序FUNCTION FC4:VOID Kno

14、w_How_Protect VAR_TEMP / Temporary Variables loop_count:INT; index_1:INT; index_2:INT; Data_Store:ARRAY0.5 OF INT; T :INT; N :INT; END_VAR / Statement Section / Block Parameters VAR_INPUT / Input Parameters INT0:INT; INT1:INT; INT2:INT; INT3:INT; INT4:INT; INT5:INT; END_VAR VAR_IN_OUT / I/O Paramete

15、rs END_VAR VAR_OUTPUT / Output Parameters min_data:INT; l_0,l_1,l_2,l_3,l_4,l_5: INT; END_VAR Data_Store0:=INT0; Data_Store1:=INT1; Data_Store2:=INT2; Data_Store3:=INT3; Data_Store4:=INT4; Data_Store5:=INT5; min_data:=Data_Store0; N:=0; T:=0; FOR loop_count:=0 TO 5 BY 1 DO /查找最小值 IF min_data Data_St

16、oreloop_count THEN min_data:=Data_Storeloop_count; END_IF; END_FOR; FOR index_1:=0 TO 5 BY 1 DO FOR index_2:=index_1 TO 5 BY 1 DO IF Data_Storeindex_1 Data_Storeindex_2 THEN T:=Data_Storeindex_2; Data_Storeindex_2:=Data_Storeindex_1; Data_Storeindex_1:=T; END_IF; END_FOR; END_FOR; l_0:=Data_Store0;

17、l_1:=Data_Store1; l_2:=Data_Store2; l_3:=Data_Store3; l_4:=Data_Store4; l_5:=Data_Store5; END_FUNCTION2.求RTU效验:FUNCTION FC101 : VOID/RTU通信SCL程序/ Block ParametersVAR_INPUT / Input ParametersZH:BYTE;/站号GNM:BYTE;/功能码SZDZ1:BYTE;/数据地址1SZDZ2:BYTE;/数据地址2SZNR1:BYTE;/数据内容1SZNR2:BYTE;/数据内容2END_VARVAR_IN_OUT /

18、 I/O ParametersEND_VARVAR_OUTPUT / Output ParametersSCZH:BYTE;/站号SCGNM:BYTE;/功能码SCSZDZ1:BYTE;/数据地址1SCSZDZ2:BYTE;/数据地址2SCSZNR1:BYTE;/数据内容1SCSZNR2:BYTE;/数据内容2XYM1:BYTE;/效验1XYM2:BYTE;/效验2END_VARVAR_TEMP / Temporary VariablesCRC:WORD;SHUZU:ARRAY0.7OF BYTE;/数组N:INT;/外循环6次M:INT;/内循环8次ZZ:INT;/数组指针YCW:WORD;

19、/CRC右移位时,判断最后一位。TEM:WORD;/用做CRC最后结果的高8位和低8位的分别传送。END_VARBEGIN / Statement Section ZZ:=0;/对指针清零 TEM:=0;/清零 SHUZU0:=ZH;/将输入的站号送给数组的0位 SHUZU1:=GNM;/将输入的功能码送给数组的1位 SHUZU2:=SZDZ1;/将输入的数据地址1送给数组的2位 SHUZU3:=SZDZ2;/将输入的数据地址2送给数组的3位 SHUZU4:=SZNR1;/将输入的数据内容1送给数组的4位 SHUZU5:=SZNR2;/将输入的数据内容2送给数组的5位 CRC:=W#16#FF

20、FF;/将16#FFFF送给CRC寄存器 FOR N:=0 TO 5 BY 1 DO/外循环6次 CRC:=CRC XOR SHUZUZZ;/将CRC寄存器与各字节异或 FOR M:=0 TO 7 BY 1 DO/内循环8次 YCW:=CRC;/将CRC寄存器的内容送给YCW中 YCW:=YCW AND W#16#0001;/取CRC寄存器的最后一位,也就是下面移位的溢出位 CRC:=SHR(IN:=CRC,N:=1);/对CRC寄存器右移一位 IF YCW=W#16#0001 THEN CRC:=CRC XOR W#16#A001;/判断溢出位是否是1,是就将CRC寄存器与16A001异或。

21、 END_IF; END_FOR; ZZ:=ZZ+1; /一个字节处理好了,数组指针加。 END_FOR;TEM:=CRC;/将CRC内的内容送给TEMTEM:=TEM AND W#16#00FF;/取TEM(CRC)的低位 SHUZU6:=WORD_TO_BYTE(TEM);/将TEM低位送给数组的号位 TEM:=CRC;/再将CRC内的内容送给TEMTEM:=TEM AND W#16#FF00;/取TEM(CRC)的高位TEM:=SHR(IN:=TEM,N:=8);/再高位右移位 SHUZU7:=WORD_TO_BYTE(TEM);/将高位的内容送到数组的号位 SCZH:=SHUZU0;/输出站号 SCGNM:=SHUZU1;/输出功能码 SCSZDZ1:=SHUZU2;/输出数据地址 SCSZDZ2:=SHUZU3;/输出数据地址 SCSZNR1:=SHUZU4;/输出数据内容 SCSZNR2:=SHUZU5;/输出数据内容 XYM1:=SHUZU6;/输出效验码 XYM2:=SHUZU7;/输出效验码 END_FUNCTION

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1