数据类型和变量学习教案.pptx
数据类型和变量数据类型和变量(binling)第一页,共28页。数据类型描述了数据基本特性连续区域:例如(lr):实际速度“是/非”特性:例如(lr):扰动 数据类型建立:允许范围(INT:-32 768.+32 767,等等。)允许使用的指令(算术指令:+,-等。)存储器中位的表示方法抽象出的数据类型变量可以保存并在以后继续处理数值 Actual_speed:REAL扰动(rodng):BOOLSet_speed:REAL使能:BOOL变量(binling)及数据类型含义第1页/共28页第二页,共28页。变量声明确定变量的如下特性:符号名数据类型有效范围 声明类型变量可以:在全局(qunj)符号表中声明(基本数据类型)在全局(qunj)数据块的声明表中进行声明(所有数据类型)在逻辑块的声明表中进行声明(OB,FB和FC)变量特性(txng)及变量的声明Meas_point1:RealMeas_point2:RealMeas_point3:RealMeas_point10:RealMeas_point:ARRAY1.10第2页/共28页第三页,共28页。STEP 7数据类型概述(i sh)基本(jbn)数据类型(最长32位)复杂(fz)数据类型(长度大于32位)用户自定义数据类型(长度大于32位)位(Bit)数据类型(BOOL,BYTE,WORD,DWORD,CHAR)算术数据类型(INT,DINT,REAL)时间数据类型(S5TIME,TIME,DATE,TIME_OF_DAY)时间型(DATE_AND_TIME)数组型(ARRAY)结构型(STRUCT)字符串型(STRING)UDT数据类型 (用户自定义型)第3页/共28页第四页,共28页。STEP 7中的基本(jbn)数据类型长度(chngd)(单位:位)BOOLBYTEWORDDWORDCHARINTDINTREALS5TIMETIMEDATETIME-OF-DAY181632816323216321632关键字 类型(lixng)常数示例1或0B#16#A9W#16#12AFDW#16#ADAC1EF5w12365539或L#-11.2或34.5E-12S5T#5s_200msT#2D_1H_3M_45S_12MSD#1999-06-14TOD#12:23:45.12第4页/共28页第五页,共28页。复杂(fz)数据类型的重要性Set_speed:REALActual_speed:REALEnable:BOOLDisturbance:BOOLMotor:STRUCTEND_STRUCT“更好地”构造数据(shj):适合于任务具有“适当的”数据(shj)类型在块调用中 数据(shj)传输的精简形式:一个参数传送“多个”数据(shj)项使结构化编程成为可能仅通过参数便实现 块间“通信”软件可重用性5.CALL#Controller Motor:=Hall_1.M5 .A#Motor.Enable.inDriveUDT1out.statControl.FB1in Motor UDT1out.第5页/共28页第六页,共28页。STEP 7中的复杂(fz)数据类型长度(chngd)(位)DATE_AND_TIME(日期(rq)和时间)STRING(字符串,最多254个字符)ARRAY(相同数据类型一组元素的集合)STRUCT(结构,不同数据类型一组元素的集合)UDT(用户自定义类型=由基本数据类型和/或复杂数据类型组成的“模板”)648*(字符数+2)用户自己定义用户自己定义用户自己定义关键字示例DT#99-06-14-12:14:55.0This is a stringSIEMENSMeas_vals:ARRAY1.20 INTMotor:STRUCTSpeed:INTCurrent:REALEND_STRUCTUDT 作为块UDT 作为数组元素STRUCTDrive:ARRAY1.4Speed:INTUDT1Current:REALEND_STRUCT第6页/共28页第七页,共28页。STEP 7参数(cnsh)类型长度(chngd)(位)TIMERCOUNTERBLOCK_FBBLOCK_FCBLOCK_DBBLOCK_SDBPointerANY1616164880关键字示例(shl)Contact time:TIMER.SI#Contact_timeNoCompParts:COUNTER.LC#No_Comp_PartsRecall:BLOCK_FB.UC#RecallMeasure:POINTER.L P#Measure.Measured Values:ANY.L P#Meas_Values.第7页/共28页第八页,共28页。变量建立(jinl)的区域数据块DBxDByDBz.位(Bit)存储器PIQPIII/O 区域(P)本地(bnd)数据堆栈“传统(chuntng)“PLC区域第8页/共28页第九页,共28页。本地数据堆栈(duzhn)工作方式为组织(zzh)块OB1分配L Stack 如:256个字节(z ji)5OB1FB1FC5FC10.CALL FB1.12345.CALL FC10.CALL FC5.6LD for OB1LD for OB11LD for FB1LD for OB12LD for FB1LD for FC5循环开始LD for OB13LD for FB1LD for OB14LD for OB15LD for FC10freefreefreefreefreefreeLD for OB16freeLD=本地数据第9页/共28页第十页,共28页。示例(shl):暂存器的替换LAD中的分支(fnzh)来自本地(bnd)数据堆栈的帮助变量STL表示分支位置第10页/共28页第十一页,共28页。数据(shj)块(DB)功能(gngnng)FC10功能(gngnng)FC20功能块FB1OB1全局数据块 DB20可以被所有块访问背景数据 DB5 FB1的背景DB第11页/共28页第十二页,共28页。数据类型:ARRAYARRAY(域):数组是相同(xin tn)数据类型元素的组合 数组的声明:一维数组:域名:ARRAY最小索引.最大索引 OF 数据类型;多维数组:域名:ARRAY最小索引1.最大索引1,最小索引2.最大索引2,.OF数据类型;索引:数据类型INT(-32768.32767)示例:数组变量的声明:一维:Meas_value:ARRAY1.10 OF REAL;多维:Position:ARRAY1.5,2.8,.OF INT;数组变量的访问:L#Meas_value5 /装载数组的第5个元素 /将Meas_value装载到ACCU1中去T#Result10,5Meas_value1:RealMeas_value2:RealMeas_value3:RealMeas_value10:RealMeas_value:ARRAY1.10.第12页/共28页第十三页,共28页。ARRAY的声明(shngmng)和初始化DB5 Declaration viewDB5 Data view第13页/共28页第十四页,共28页。存储器中ARRAY变量(binling)的存储Byte n1)lBYTE,CHAR数据类型 一维数组 多维数组l lBOOL数据类型876543217 6 5 4 3 2 1 01211109Byte n+1Byte n1)Byte n+1Byte n+2Byte 1Byte 2Byte 3lWORD,DWORD,.数据类型Byte n1)Byte n+1Byte n+2Byte 3.Word 2Byte n+2.l示例(shl)ARRAY1.2,1.3,1.2 OF BYTEByte n1)Byte n+1Byte n+2Byte 1.1.1Byte 1.1.2Byte 1.2.1.Byte 1.2.2Byte 1.3.1Byte 1.3.2Byte 2.1.1Byte 2.1.2Byte 2.2.1Byte 2.2.2Byte 2.3.1Byte 2.3.21)n=偶数(u sh)Word 1等第14页/共28页第十五页,共28页。STRUCT(结构):结构是不同数据类型元素的组合结构的声明:结构名称:STRUCT元素1名称:数据类型;元素2名称:数据类型;.END_STRUCT 示例(shl):结构变量的声明:访问结构变量:MotorControl:STRUCTS#MotorControl.ONON:BOOL;L#MotorControl.ActualSpeed OFF:BOOL;T#MotorControl.SetSpeedSetSpeed:INT;.ActualSpeed:INT;END_STRUCT;数据类型:STRUCTSet_Speed:REALActual_Speed:REALEnable:BOOLDisturbance:BOOLMotor:STRUCTEND_STRUCT第15页/共28页第十六页,共28页。结构(jigu)(STRUCT)的声明示例:数组 结构(jigu)数组的声明DB6 Declaration viewDB6 Data view第16页/共28页第十七页,共28页。存储器中STRUCT变量(binling)的存储Byte n1)基本数据类型结构基本数据类型结构(jigu)(jigu)复杂数据类型结构复杂数据类型结构(jigu)(jigu)6543217 6 5 4 3 2 1 0Byte n+1Byte n+2Byte 1Byte 2Byte 3Byte n+8Byte n+9Byte 3Word 1Word 2.1)n=evenFiller byteFiller byteByte n+3Byte n+4Byte n+5654321Filler byteByte n+6Byte n+7.基本(jbn)数据类型元素Word limit ARRAY类型元素 STRUCT类型元素Word limit.Word limit第17页/共28页第十八页,共28页。用户(yngh)自定义数据类型:UDTUDT用户自定义数据类型:在声明部分创建了一个数据模板供以后使用对程序文件夹的所有(suyu)块来说,是全局有效的示例:新数据类型(结构)的定义:UDT1 STRUCTSetSpeed:REAL;.ActualSpeed:REAL;Enable:BOOL;Disturbance:BOOL;END_STRUCT;变量的声明:Motor_1:UDT1;Motor_2:UDT1;对变量的访问:L#Motor_1.ActualSpeedSet_Speed:REALActual_Speed:REALEnable:BOOLDisturbance:BOOLUDT1:STRUCTEND_STRUCT第18页/共28页第十九页,共28页。UDT的使用(shyng)UDT5FC23第19页/共28页第二十页,共28页。数据类型:DATE_AND_TIMEByte n1)Byte n+2Byte n+4Byte n+1Byte n+3Byte n+5年(90.89)结构(jigu):月(01.12)日(01.31)小时(xiosh)(00.23)分钟(00.59)秒(00.59)Byte n+6Byte n+7毫秒(000.999)星期(xngq)(1.7)l所有数值都以BCD码格式存储l变量的预先设置:DT#年-月-日-小时:分钟:秒.毫秒示例:DT#1998-03-21-17:23:00:00l通过IEC-Library功能处理1=星期日2=星期一3=星期二4=星期三5=星期四6=星期五7=星期六1)n=偶数第20页/共28页第二十一页,共28页。处理(chl)DT型变量的功能标准库标准库V3.xV3.x里的里的 IEC IEC库库FC1 FC1(AD_DT_TMAD_DT_TM):功能):功能FC 1FC 1将一个时间段(将一个时间段(TIMETIME格式)加到一个时刻时间(格式)加到一个时刻时间(DTDT格式)上去,格式)上去,并返回新的时刻时间。并返回新的时刻时间。FC34 FC34(SB_DT_DTSB_DT_DT):功能):功能FC 34FC 34将两个将两个(lin)(lin)时刻时间(时刻时间(DTDT格式)相减,返回一个时间段格式)相减,返回一个时间段(TIMETIME格式)格式)。FC35 FC35(SB_DT_TMSB_DT_TM):功能:功能FC 35FC 35从一个时刻时间(从一个时刻时间(DTDT格式)上减去一个时间段(格式)上减去一个时间段(TIMETIME格式)格式),并返回新的时刻时间(并返回新的时刻时间(DTDT格式)格式)。FC3 FC3(D_TOD_DTD_TOD_DT):功能:功能FC 3FC 3将将DATEDATE和和TIME_OF_DAY TIME_OF_DAY(TODTOD)日期格式组合起来,并将它们)日期格式组合起来,并将它们转换成转换成DATE_AND_TIMEDATE_AND_TIME(DTDT)这种日期格式。)这种日期格式。FC6 FC6(DT_DATEDT_DATE):功能:功能FC 6FC 6是从是从DATE_AND_TIMEDATE_AND_TIME格式中提取日期。格式中提取日期。FC7 FC7(DT_DAYDT_DAY):功能:功能FC 7FC 7是从是从DATE_AND_TIMEDATE_AND_TIME格式中提取星期。格式中提取星期。.FC8 FC8(DT_TODDT_TOD):功能:功能FC 8FC 8是从是从DATE_AND_TIMEDATE_AND_TIME格式中提取格式中提取TIME_OF_DAYTIME_OF_DAY。DT#DT#变量比较函数:变量比较函数:FC9 FC9(EQ_DTEQ_DT),),FC12 FC12(GE_DTGE_DT),),FC14 FC14(GT_DTGT_DT),),FC18 FC18(LE_DTLE_DT),),FC23 FC23(LT_DTLT_DT),),FC28 FC28(NE_DTNE_DT)第21页/共28页第二十二页,共28页。数据类型:STRING STRING(字符串)型变量:数据类型STRING表示了一个最多有254字符的字符串应用:处理消息(xio xi)文本声明方法:字符串名称:STRING最大数目:I初始化的文本(这样声明的字符串变量最多可有maxNo个字符,maxNo:0.254)字符串名称:STRING:初始化的文本(这样声明的字符串变量最多可有254个字符)示例:变量的声明:Fault signal:STRING Motor failure_4(变量Fault signal,并初始化为上面的文本内容)Warning:STRING50 (“empty”变量Warning,最多可以接受50个字符)处理:基本访问方式:L#Fault signal5(装在变量Fault signal中的第5个字符)通过IEC库里的FC进行处理第22页/共28页第二十三页,共28页。存储器中字符串(STRING)变量(binling)的存储Byte n1)示例:示例:声明声明(shngmng)(shngmng)并初始化并初始化Given name:STRING8:OTTOGiven name:STRING8:OTTO存储存储STRINGSTRING变量变量“Given name“Given name“Byte n+1Byte n+2最大长度(chngd)=8当前长度=41st.char=OByte n+8.1)n=偶数2nd.char=TByte n+3Byte n+4Byte n+5Byte n+6Byte n+73rd.char=T4th.char=O指定可存储字符的最大数目,即在声明中所指定的长度指定存储在STRING变量里的当前字符个数B#16#00B#16#00B#16#00Byte n+9B#16#00m由IEC库功能评估的有关可存储字符的最大数目 或当前长度的信息。.第23页/共28页第二十四页,共28页。处理(chl)STRING型变量的功能(挑选部分)标准库里的 IEC库FC2(CONCAT):功能FC2是将两个STRING变量组合成一个字符串。FC4(DELETE):功能FC 4是在一个字符串中删除L个字符,直到字符P位置为止。FC11(FINF):功能FC 11提供第一个字符串里的第二个字符串的位置。FC17(INSERT):功能FC 17是将参数IN2处的字符串插入(ch r)到参数IN1处的字符串的字符Pth之后。FC20(LEFT):功能FC 20提供一个字符串的第一个L个字符。FC21(LEN):功能FC 21输出字符串当前长度(有效字符数)。FC26(MID):功能FC 26提供字符串的中间部分。FC31(REPLACE):功能FC 31是用第二个字符串(IN2)替换第一个字符串(IN1)的L个字符直到P字符位置为止(包括P字符)。FC32(RIGHT):功能FC 32提供一个字符串的最后L个字符。STRING变量比较的相关功能:FC10(EQ_STRING),FC13(GE_STRING),FC15(GT_STRING),FC19(LE_STRING),FC24(LT_STRING),FC29(NE_STRING)第24页/共28页第二十五页,共28页。示例5.1:复杂(fz)数据类型的使用.UDT99 MotorDB51 Conv_area_MotorsHall_1第25页/共28页第二十六页,共28页。示例5.2:复杂(fz)数据类型的访问第26页/共28页第二十七页,共28页。附加练习(linx)5.3:使用SFC 1(READ_CLK)读取实时时钟SFC1ENRET_VALENO?.?CDT?.?第27页/共28页第二十八页,共28页。