




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章
S7-1200PLC扩展指令(SCL)第八章S7-1200PLC扩展指令(SCL)-2-
日期和时间1
字符串+字符2
中断38.1日期和时间转换时间并提取(T_CONV)的指令对照表和参数表,见表8-1所示。【例8-1】当M0.0触点接通后,提取DB1数据块中DTL1变量中的年月日数据内容放入DATE1变量中,同时也提取DB1数据块中DTL1变量中的时分秒数据内容放入TOD1变量中。表8-1转换时间并提取指令对照表和参数表功能框SCL参数数据类型out:=DINT_TO_TIME(In:=_variant_in);out:=TIME_TO_DINT(in:=_variant_in);INDInt、Int、SInt、UDInt、UInt、USInt、Time、Date、Time_Of_Day、DTLOUT8.1日期和时间
图8-1【例8-1】转换时间并提取b)T_CONV指令SCL程序
a)T_CONV指令LAD程序T_CONV指令的应用如图8-1所示。图8-1a为LAD程序,图8-1b为SCL程序,其功能效果是一样的,同学们可以通过第五章的学习来验证SCL的程序运行过程。图8-1c为SCL监控,可以清晰的显示出"Tag_1"为TRUE时,"DB1".DATE1的数据其实就是"DB1".DTL1数据中的DATE内容,同时"DB1".TOD1的数据其实就是"DB1".DTL1数据中的TOD内容。c)T_CONV指令SCL监控8.1日期和时间组合时间(T_COMBINE)的指令对照表和参数表,见表8-2所示。【例8-2】当M0.1触点接通后,将DB1数据块中DATE1变量中的数据与DB1数据块中TOD1变量中的数据进行数据整合,整合到DB1数据块中的DTL2变量中。表8-2组合时间(T_COMBINE)指令对照表和参数表功能框SCL参数数据类型out:=CONCAT_DATE_TOD(In1:=_date_in,In2:=_tod_in);IN1DateIN2Time_Of_DayOUTDTL8.1日期和时间
图8-2【例8-2】组合时间b)T_COMBINE指令SCL程序
a)T_COMBINE指令LAD程序T_COMBINE指令的应用如图8-2所示。图8-2a为LAD程序,图8-2b为SCL程序,其功能效果是一样的,图8-2c为SCL监控。c)T_COMBINE指令SCL监控8.1日期和时间时间加运算(T_ADD)的指令对照表和参数表,见表8-3所示。【例8-3】设备系统时间实时传送至DB1数据块DTL1变量中,随着时间的推移,用户发现系统时间与当前实际时间有慢5秒钟,请设计一个程序让其校正时间。表8-3时间加运算(T_ADD)指令对照表和参数表功能框SCL参数数据类型out:=T_ADD(in1:=_variant_in,in2:=_time_in);IN1TIME、DTL、TODIN2TIMEOUTTIME、DTL、TOD、DWORD、DINT、UDINT8.1日期和时间
图8-3【例8-3】时间加运算b)T_ADD指令SCL程序a)T_ADD指令LAD程序T_ADD指令的应用如图8-3所示。图8-3a为LAD程序,图8-3b为SCL程序,其功能效果是一样的,图8-3c为SCL监控。c)T_ADD指令SCL监控8.1日期和时间时间相减(T_SUB)的指令对照表和参数表,见表8-4所示。【例8-4】设备系统时间实时传送至DB1数据块DTL2变量中,随着时间的推移,用户发现系统时间与当前实际时间有快3秒钟,请设计一个程序让其校正时间。表8-4时间相减(T_SUB)指令对照表和参数表功能框SCL参数数据类型out:=T_SUB(in1:=_variant_in,in2:=_time_in);IN1TIME、DTL、TODIN2TIMEOUTTIME、DTL、TOD、DWORD、DINT、UDINT8.1日期和时间
图8-4【例8-4】时间相减b)T_SUB指令SCL程序a)T_SUB指令LAD程序T_SUB指令的应用如图8-4所示。图8-4a为LAD程序,图8-4b为SCL程序,其功能效果是一样的,图8-4c为SCL监控。c)T_SUB指令SCL监控8.1日期和时间时间值相减(T_DIFF)的指令对照表和参数表,见表8-5所示。【例8-5】计算当前时间与夜间0点还有多少时间,将结果传送至DB1数据块Time1中,请设计一个程序。表8-5时间值相减(T_DIFF)指令对照表和参数表功能框SCL参数数据类型out:=T_DIFF(in1:=_DTL_in,in2:=_DTL_in);IN1DTL、DATE、TODIN2DTL、DATE、TODOUTTIME、INT8.1日期和时间
图8-5【例8-5】时间值相减b)T_DIFF指令SCL程序a)T_DIFF指令LAD程序T_DIFF指令的应用如图8-5所示。图8-5a为LAD程序,图8-5b为SCL程序,其功能效果是一样的,图8-5c为SCL监控。c)T_DIFF指令SCL监控8.1日期和时间设置时间(WR_SYS_T)的指令对照表和参数表,见表8-6所示。表8-6设置时间(WR_SYS_T)指令对照表和参数表功能框SCL参数数据类型ret_val:=WR_SYS_T(in:=_DTL_in_);INDTLRET_VALINT8.1日期和时间
图8-6WR_SYS_T指令LAD与SCL示例对比b)WR_SYS_T指令SCL程序a)WR_SYS_T指令LAD程序8.1日期和时间读取时间(RD_SYS_T)的指令对照表和参数表,见表8-7所示。表8-7读取时间(RD_SYS_T)指令对照表和参数表功能框SCL参数数据类型ret_val:=RD_SYS_T(out=>_DTL_out);RET_VALINTOUTDTL8.1日期和时间
图8-7RD_SYS_T指令LAD与SCL示例对比b)RD_SYS_T指令SCL程序a)RD_SYS_T指令LAD程序8.1日期和时间写入本地时间(WR_LOC_T)的指令对照表和参数表,见表8-8所示。表8-8写入本地时间(WR_LOC_T)指令对照表和参数表功能框SCL参数数据类型ret_val:=WR_LOC_T(LOCTIME:=DTL_in_,DST:_in_;LOCTIMEDTLDSTBOOLRET_VALINT8.1日期和时间
图8-8WR_LOC_T指令LAD与SCL示例对比b)WR_LOC_T指令SCL程序a)WR_LOC_T指令LAD程序8.1日期和时间读取本地时间(RD_LOC_T)的指令对照表和参数表,见表8-9所示。表8-9读取本地时间(RD_LOC_T)指令对照表和参数表功能框SCL参数数据类型ret_val:=RD_LOC_T(out=>_DTL_out);RET_VALINTOUTDTL8.1日期和时间
图8-9RD_LOC_T指令LAD与SCL示例对比b)RD_LOC_T指令SCL程序a)RD_LOC_T指令LAD程序8.1.10案例24:定时启停水泵及保养提醒服务任务:使用S7-1200PLC实现水泵定时启停及保养提醒功能控制。每周一至周五的08:30-11:30和14:30-17:00启动水泵,其它时间水泵停止工作;每周六至周日的08:00-20:00启动水泵,其它时间水泵停止工作;每月的5日工作时间08:00-12:00提醒指示灯以1Hz进行闪烁,若工人维修保养设备可人工复位指示灯。步骤:1.I/O分配表(参考章节8.1.10)2.PLC外部接线图(参考章节8.1.10)3.编写程序(参考章节8.1.10)8.1.10案例24:定时启停水泵及保养提醒服务根据PLC控制要求,根据S7-1200硬件输入/输出点分配如表所示。输入点输出点输入继电器名称输出继电器名称I0.0StartQ0.0Water_pumpI0.1StopQ0.1Indicator_lightI0.2Reset
8.1.10案例24:定时启停水泵及保养提醒服务根据控制要求及I/O分配表,结合实际情况,停止按钮用常闭,输入点并没有热过载元件,所以该元件将硬件接入输出点设备上,其接线图如图所示。8.1.10案例24:定时启停水泵及保养提醒服务图8-11PLC变量图8-12DB1数据块变量8.1.10案例24:定时启停水泵及保养提醒服务8.1.10案例24:定时启停水泵及保养提醒服务思考一下,能否用其他指令或其他方法进行编写。8.2字符串+字符移动字符串(S_MOVE)的指令对照表和参数表见表8-11所示。【例8-6】当I0.0触点接通后,将'我爱你,中国!'字符串传送给DB1数据块中的StringValueOUT数据变量。表8-11移动字符串指令对照表和参数表功能框SCL参数数据类型out:=in;INString、WStringOUT8.2字符串+字符
图8-14【例8-6】S_MOVE指令的应用b)S_MOVE指令SCL程序
a)S_MOVE指令LAD程序c)S_MOVE指令SCL监控S_MOVE指令的应用如图8-14所示。图8-14a为LAD程序功能分析我们在5.2小节中已经讲解了,图8-14b为SCL程序,其功能效果与图8-14a是一样的,图8-14c为SCL监控,可以清晰的显示出"Start"为TRUE时,"DB1".StringValueOUT变量将获得字符串'我爱你,中国!'c)S_MOVE指令SCL监控8.2字符串+字符转换字符串(S_MOVE)的指令对照表和参数表见表8-12所示。表8-12转换字符串指令对照表和参数表功能框SCL转换参数数据类型out:=<Type>_TO_<Type>(in);转数字值
INString、WStringOUTString、WString、Char、SInt、Int、DInt、USInt、UInt、UDInt、Real、LReal数字值转字符串IN转数字值OUTString、WString8.2字符串+字符
图8-15S_CONV指令转换为数值b)S_CONV指令SCL程序
a)S_CONV指令LAD程序c)S_CONV指令SCL监控8.2字符串+字符
图8-16S_CONV指令转换为字符串b)S_CONV指令SCL程序
a)S_CONV指令LAD程序从图8-15可以看出,由一个带符号的字符串转换为数值,LAD与SCL基本不会有结果偏差,而图8-16发现,当要转换的数值为正数时,LAD忽略了'+'字符,用空格取而代之,而SCL却保留了'+'字符。通过多次不同方式的实验,我们发现用“S_CONV”指令将字符串转数字值或数字值转字符串在某种情况下会出现偏差。所以我们建议大家可以选择“STRG_VAL”指令或“VAL_STRG”指令。c)S_CONV指令SCL监控8.2字符串+字符转换为数字值(STRG_VAL)的指令对照表和参数表见表8-13所示。表8-13将字符串转换为数字值指令对照表和参数表功能框SCL转换参数数据类型STRG_VAL(in:=_string_in,format:=_word_in,p:=uint_in,out=>_variant_out);转数字值
INString、WStringFORMATWord数字值转字符串PUInt、Byte、USInt转数字值OUTSInt、Int、DInt、USInt、UInt、UDInt、Real、LReal8.2字符串+字符
图8-17STRG_VAL指令的应用b)STRG_VAL指令SCL程序
a)STRG_VAL指令LAD程序图8-17a为“STRG_VAL”指令的LAD,图8-17b为该指令的SCL,图8-17c为“STRG_VAL”指令监控内容,从监控内容与图5-19所示结果是一致的。c)STRG_VAL指令SCL监控8.2字符串+字符将字符串转换为数字值(VAL_STRG)的指令对照表和参数表见表8-14所示。表8-14将数字值转换为字符串指令对照表和参数表功能框SCL参数数据类型VAL_STRG(IN:=_usint_in_,SIZE:=_usint_in_,PREC:=_usint_in_,FORMAT:=_word_in_,P:=_uint_in_,OUT=>_string_out_);INSInt、Int、DInt、USInt、UInt、UDInt、Real、LRealSIZEUSIntPRECUSintFORMATWordPUIntOUTString、WString8.2字符串+字符
图8-18VAL_STRG指令的应用b)VAL_STRG指令SCL程序
a)VAL_STRG指令LAD程序图8-18a为“VAL_STRG”指令的LAD,图8-18b为该指令的SCL,我们再看图8-18c的监控结果,发现下面两张的PREC引脚一个是2一个是3,但OUT结果却是一样的,从图5-20c和图5-20d中可以发现图5-20d的“VAL_STRG”指令ENO=0。此时我们发现SCL与LAD的结果是一样的,只不过在SCL中,我们没有办法直观的看到“STRG_VAL”指令的ENO状态而已,这对编程者来说要求对指令非常熟悉否则可能会出现难以查找的错误。c)VAL_STRG指令SCL监控8.2字符串+字符将字符串转换为ArrayofCHAR(Strg_TO_Chars)的指令对照表和参数表见表8-15所示。表8-15将字符串转换为ArrayofCHAR指令对照表和参数表功能框SCL参数数据类型Strg_TO_Chars(Strg:=_string_in_,pChars:=_dint_in_,Cnt=>_uint_out_,Chars:=_variant_inout_);STRGString,WStringPCHARSDIntCHARSVariantCNTUIntSTRGString,WStringOUTString、WString8.2字符串+字符
图8-19Strg_TO_Chars指令的应用b)Strg_TO_Chars指令SCL程序
a)Strg_TO_Chars指令LAD程序图8-19a与图8-19b相对比,功能一样,结果一样,但从监控显示来说,SCL并不能把"DB1".Chars里每个Chars的数据给显示出来,我们还是需要通过数据块监控实现内容显示目的。从编程形式来看,如果我们不对指令的ENO进行使用的话,其实SCL编程也是挺方便的。8.2字符串+字符将ArrayofCHAR转换为字符串(Chars_TO_Strg)的指令对照表和参数表见表8-16所示。。表8-16将ArrayofCHAR转换为字符串指令对照表和参数表功能框SCL参数数据类型Chars_TO_Strg(Chars:=_variant_in_,pChars:=_dint_in_,Cnt:=_uint_in_,Strg=>_string_out_);CHARSVariantPCHARSDIntCNTUIntSTRGString,WString8.2字符串+字符
图8-20Chars_TO_Strg指令的应用b)Chars_TO_Strg指令SCL程序
a)Chars_TO_Strg指令LAD程序图8-20与图8-19相对比,我们可以发现这两个指令正好是相反的指令,一个是把逐个的Chars字符连为String字符串,另一个是吧String字符串按要求的逐一分放在Chars字符里。这里读者的学习方法可以把指令代码写好后,设定一个大概10个左右长度的字符串,然后通过指令进行组合或拆分。pChars的值与Cnt的值可以自行调节,然后看输出结果与现象来掌握“Strg_TO_Chars”指令和“Chars_TO_Strg”指令。8.2字符串+字符确定字符串的长度(MAX_LEN)的指令对照表和参数表见表8-17所示。表8-17确定字符串的长度指令对照表和参数表功能框SCL参数数据类型out:=MAX_LEN(in);INString、WStringOUTInt、Dint8.2字符串+字符图8-21a与图8-21b的结果均为254,从此可以看出String数据类型与WString数据类型的最大数据长度均为254个。图8-21MAX_LEN指令的应用
a)Strg_TO_Chars指令LAD程序b)Strg_TO_Chars指令SCL程序8.2字符串+字符确定字符串的长度(LEN)的指令对照表和参数表见表8-18所示。表8-18确定字符串的长度指令对照表和参数表功能框SCL参数数据类型out:=LEFT(in,L);INString、WStringLByte、Int、SInt、USIntOUTString、WString8.2字符串+字符图8-22a,通过“LEN”指令,获取了"DB1".IN里String数据类型的字符串'我爱你,中国!'共占14个字符长度,每个中文字占2个字符长度。而图8-22b,通过“LEN”指令,获取了"DB1".IN里WString数据类型的字符串'Iloveyou,China.'共占17个字符长度,包含空格字符也算字符长度。图8-22LEN指令的应用
a)String类型的LAD与SCL程序b)WString类型的LAD与SCL程序8.2字符串+字符读取字符串左边的字符(LEFT)的指令对照表和参数表见表8-19所示。表8-19读取字符串左边的字符指令对照表和参数表功能框SCL参数数据类型通用型out:=LEFT(IN:=_string_in_,L:=_int_in_);INString、WStringStringout:=LEFT_String(IN:=_string_in_,L:=_int_in_);LByte、Int、SInt、USIntWStringout:=LEFT_WSting(IN:=_string_in_,L:=_int_in_);OUTString、WString8.2字符串+字符把图8-23输入在博途软件中,下载到PLC里,对"DB1".IN和"DB1".L里的数据进行修改,IN内容可以输入不重复的字符,然后L的数值任意修改0、1、2、3看一个有什么效果。字符可以英文字符也可以是中文字符。图8-23LEFT指令基本单元的LAD与SCL应用对比
a)LEFT指令基本单元的LADb)LEFT指令基本单元的程序8.2字符串+字符读取字符串右边的字符(RIGHT)的指令对照表和参数表见表8-20所示。表8-20读取字符串右边的字符指令对照表和参数表功能框SCL参数数据类型通用型out:=RIGHT(IN:=_string_in_,L:=_int_in_);INString、WStringStringout:=RIGHT_String(IN:=_string_in_,L:=_int_in_);LByte、Int、SInt、USIntWStringout:=RIGHT_WSting(IN:=_string_in_,L:=_int_in_);OUTString、WString8.2字符串+字符图8-24b中我们可以发现,当用户输入“RIGHT_”时,软件会出现菜单选择,一个是“RIGHT_STRING”、另一个是“RIGHT_WSTRING”,这两个指令的后缀是指定IN和OUT的数据类型是String,还是WString。“LEFT”、“RIGHT”和“MID”三个指令均有该选项。图8-24RIGHT指令的应用
a)
RIGHT指令基本单元的LAD与SCL应用对比b)RIGHT指令定义数据类型8.2字符串+字符读取字符串的中间字符(MID)的指令对照表和参数表见表8-21所示。表8-21读取字符串的中间字符指令对照表和参数表功能框SCL参数数据类型通用型out:=MID(IN:=_string_in_,L:=_int_in_,P:=_int_in_);INString、WStringStringout:=MID_String(IN:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntPByte、Int、SInt、USIntWStringout:=MID_WString(IN:=_string_in_,L:=_int_in_,P:=_int_in_);OUTString、WString8.2字符串+字符图8-25MID指令基本单元的LAD与SCL应用对比8.2字符串+字符【例8-7】数据块"DB1".IN里的字符串是'Iloveyou,China.',请提取出每一个单词后分别放入。图8-26【例8-7】读取字符串的中间字符8.2字符串+字符删除字符串中的字符(DELETE)的指令对照表和参数表见表8-22所示。表8-22删除字符串中的字符指令对照表和参数表功能框SCL参数数据类型通用型out:=DELETE(IN:=_string_in_,L:=_int_in_,P:=_int_in_);INString、WStringString
out:=DELETE_String(IN:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntPByte、Int、SInt、USIntWStringout:=DELETE_WString(IN:=_string_in_,L:=_int_in_,P:=_int_in_);OUTString、WString8.2字符串+字符图8-27DELETE指令基本单元的LAD与SCL应用对比8.2字符串+字符在字符串中插入字符(INSERT)的指令对照表和参数表见表8-23所示。表8-23在字符串中插入字符指令对照表和参数表功能框SCL参数数据类型通用型out:=INSERT(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);IN1String、WStringStringout:=INSERT_String(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);IN2String、WStringPByte、Int、SInt、USIntWStringout:=INSERT_WString(IN1:=_string_in_,IN2:=_string_in_,P:=_int_in_);OUTString、WString8.2字符串+字符图8-28INSERT指令基本单元的LAD与SCL应用对比8.2字符串+字符【例8-8】数据块"DB1".IN里的字符串是'MynameisZhangPeng.',请改为'MynameisChenJie.'保存在数据块"DB1".OUT里。图8-29【例8-8】在字符串中插入字符8.2字符串+字符替换字符串中的字符(REPLACE)的指令对照表和参数表见表8-24所示。表8-24替换字符串中的字符指令对照表和参数表功能框SCL参数数据类型通用型
out:=REPLACE(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);IN1String、WStringIN2String、WStringStringout:=REPLACE_String(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);LByte、Int、SInt、USIntWString通用型out:=REPLACE_WString(IN1:=_string_in_,IN2:=_string_in_,L:=_int_in_,P:=_int_in_);PByte、Int、SInt、USIntOUTString、WString8.2字符串+字符图8-30REPLACE指令基本单元的LAD与SCL应用对比8.2字符串+字符【例8-9】数据块"DB1".IN里的字符串是'MynameisZhangPeng.',请改为'MynameisChenJie.'保存在数据块"DB1".OUT里,本题仅用“REPLACE”指令。图8-31【例8-9】替换字符串中的字符8.2字符串+字符在字符串中查找字符(FIND)的指令对照表和参数表见表8-25所示。表8-25在字符串中查找字符指令对照表和参数表功能框SCL参数数据类型out:=FIND(IN1:=_string_in_,IN2:=_string_in_);IN1String、WStringIN2String、WStringOUTString、WString8.2字符串+字符图8-32FIND指令基本单元的LAD与SCL应用对比8.2字符串+字符合并字符串(CONCAT)的指令对照表和参数表见表8-26所示。表8-26合并字符串指令对照表和参数表功能框SCL参数数据类型通用型out:=CONCAT(IN1:=_string_in_,IN2:=_string_in_);IN1String、WStringStringout:=CONCAT_String(IN1:=_string_in_,IN2:=_string_in_);IN2String、WStringWStringout:=CONCAT_WString(IN1:=_string_in_,IN2:=_string_in_);OUTString、WString8.2字符串+字符图8-33CONCAT指令基本单元的LAD与SCL应用对比8.2字符串+字符将ASCII字符串转换为十六进制数(ATH)的指令对照表和参数表见表8-27所示。表8-27将ASCII字符串转换为十六进制数指令对照表和参数表功能框SCL参数数据类型RET_VAL:=ATH(IN:=_variant_in_,N:=_int_in_,OUT=>_variant_out_);
INVariantNIntRET_VALWordOUTVariant8.2字符串+字符图8-34ATH指令基本单元的LAD与SCL应用对比8.2字符串+字符将十六进制数转换为ASCII字符串(HTA)的指令对照表和参数表见表8-28所示。表8-28将十六进制数转换为ASCII字符串指令对照表和参数表功能框SCL参数数据类型RET_VAL:=HTA(IN:=_variant_in_,N:=_uint_in_,OUT=>_variant_out_);INVariantNUIntRET_VALWordOUTVariant8.2字符串+字符图8-35HTA指令基本单元的LAD与SCL应用对比8.2.19案例25:将PLC当前日期和时间内容发送给上位机任务:实现上位机HMI内显示PLC内的当前时间,PLC采用S7-12001214CAC\DC\RLY。1.分析:根据本小节所学指令,SCL编程基本单元与LAD基本单元是可以同等转换的。既然如此,那么我们可以通过章节5.2.19的编程思路和方法进行一一转换。为了方便编程我们新建工程并添加设备并组态好之后,把Main[OB1](LAD格式)删除,然后再新建一个Main[OB1]为SCL格式。在新建OB组织块时,①处选择Programcycle,程序循环OB。在②处选择SCL,因为新建之前我们删除了Main[OB1],所以本次新建编号自动为1了,若新建之前未删除,那么编号会自动为123。这也影响程序执行结果,之用用户在原有的Main[OB1]里不变写程序即可。8.2.19案例25:将PLC当前日期和时间内容发送给上位机添加新块DB数据块变量8.2.19案例25:将PLC当前日期和时间内容发送给上位机8.2.19案例25:将PLC当前日期和时间内容发送给上位机8.2.19案例25:将PLC当前日期和时间内容发送给上位机思考:通过一比一的转换编程法,我们成功的把LAD转换成了SCL代码,但从代码行数来看,多达133行,就算删除空行和注释,也有95行之多。从形式上看很多内容均为一样的赋值或处理数据工作。从格式是哪个看很多是相同格式。如果我们将DTL数据里的年、月、日、星期、时、分、秒,这7个数据放在数组里,然后用循环指令进行批量处理,会不会减少代码行数或内容呢?8.2.19案例25:将PLC当前日期和时间内容发送给上位机再次编程程序:DB数据块变量8.2.19案例25:将PLC当前日期和时间内容发送给上位机8.3中断本小节“中断”扩展指令中包含很多内容,从中断OB块来讲,硬件中断OB使用的指令有ATTACH:将OB附加到中断事件与DETACH:将OB与中断事件脱离;循环中断OB使用的指令有SET_CINT:设置循环中断参数与QRY_CINT:查询循环中断参数;时间中断OB使用的指令有SET_TINTL:设置时间中断、CAN_TINT:取消时间中断、ACT_TINT:启用时间中断、QRY_TINT:查询时间中断的状态;延时中断OB使用的指令有SRT_DINT:启动延时中断、CAN_DINT:取消延时中断、QRY_DINT:查询延时中断状态。8.3中断将OB附加到中断事件(ATTACH)的指令对照表和参数表见表8-29所示。表8-29ATTACH指令对照表和参数表功能框SCL参数数据类型RET_VAL:=ATTACH(OB_NR:=_ob_att_in_,EVENT:=_event_att_in_,ADD:=_bool_in_);OB_NROB_ATTEVENTEVENT_ATTADDBOOLRET_VALINT8.3中断a)硬件组态b)
ATTACH指令LAD程序8.3中断c)
ATTACHE指令SCL程序d)ATTACH指令SCL监控图8-41ATTACH指令的应用8.3中断将OB与中断事件脱离(DETACH)的指令对照表和参数表见表8-30所示。表8-30DETACH指令对照表和参数表功能框SCL参数数据类型RET_VAL:=DETACH(OB_NR:=_ob_att_in_,EVENT:=_event_att_in_);OB_NROB_ATTEVENTEVENT_ATTRET_VALINT8.3中断a)
DETACH指令LAD程序c)
DETACH指令SCL程序2b)
DETACH指令SCL程序1图8-42DETACH指令的应用8.3中断从图8-42b与图8-42c对比我们发现,示例b写的模块名称或事件名称,而c写的是模块编号或事件绝对地址,这两个均是一样的效果。
d)DETACH指令SCL监控8.3中断设置循环中断参数(SET_CINT)的指令对照表和参数表见表8-31所示。表8-31SET_CINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=SET_CINT(OB_NR:=_ob_cyclic_in_,CYCLE:=_udint_in_,PHASE:=_udint_in_);OB_NROB_CYCLICCYCLEUDINTPHASEUDINTRET_VALINT8.3中断a)CyclicinterruptOB30组态b)
SET_CINT指令LAD程序8.3中断c)SET_CINT指令SCL程序
d)SET_CINT指令SCL监控图8-43SET_CINT指令的应用8.3中断从图8-43a可以发现,CyclicinterruptOB30组态时设定的循环时间为1000ms,相移关闭。从图8-43d中看i的自加1速度可以印证设定组态和编程无误。图8-44在监控表对"CycleTime"进行赋值操作8.3中断从图8-43a可以发现,CyclicinterruptOB30组态时设定的循环时间为1000ms,相移关闭。从图8-43d中看i的自加1速度可以印证设定组态和编程无误。按照图8-44的操作,先把2000000微妙值写入%MD0中,再把"Start"接通,观察i的变化,我们可以发现他的速度比原来更慢了1倍,因为再未修改之前它的循环是以1000ms(1秒)执行1次自加一,而"Start"接通后把"CycleTime"里的2000000μS(2秒)执行1次自加一。同学们可以尝试给"CycleTime"变量赋值0和500000来调试,大家会发现当"CycleTime"=500000时,自加一的速度比组态前的速度要快1倍,因为变成了0.5秒循环一次自加一。当"CycleTime"=0的时候,我们会发现i将不会自加一了,其实这样就相当于关闭了循环中断的。但大家要知道,在组态的时候,图8-43a的循环时间我们不可以设定为0,它的最小值为1ms。8.3中断查询循环中断参数(QRY_CINT)的指令对照表和参数表见表8-32所示。。表8-32QRY_CINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=QRY_CINT(OB_NR:=_ob_cyclic_in_,CYCLE=>_udint_out_,PHASE=>_udint_out_,STATUS=>_word_out_);OB_NROB_CYCLICCYCLEUDINTPHASEUDINTSTATUSWORDRET_VALINT8.3中断b)QRY_CINT指令SCL程序c)
QRY_CINT指令SCL监控a)QRY_CINT指令LAD程序图8-45QRY_CINT指令的应用8.3中断d)QRY_CINT指令的应用从图8-45c我们可以看到,当"CYCLE"=0时,"STATUS"=16#0010;其它三个均为"STATUS"=16#00148.3中断设置时间中断(SET_TINTL)的指令对照表和参数表见表8-35所示。表8-35SET_TINTL指令对照表和参数表功能框SCL参数数据类型RET_VAL:=SET_TINTL(OB_NR:=_ob_tod_in_,SDT:=_dtl_in_,LOCAL:=_bool_in_,PERIOD:=_word_in_,ACTIVATE:=_bool_in_);OB_NROB_TODSDTDTLPERIODWORDRET_VALINT8.3中断a)TimeofdayOB10组态c)
SET_TINTL指令SCL程序b)
SET_TINTL指令LAD程序8.3中断d)SET_TINTL指令SCL监控图8-43SET_CINT指令的应用从图8-46a所示,组态设定了本地时间、启动日期和时间,但执行开关选择的是关闭。从图8-46d监控画面可以看到,设定的启动日期和时间是2024-05-12-19:37,当时间从19:36到达19:37时,i自加一等于1,当时间到达19:38时,i并没有加一,因为执行模式为单次。8.3中断从图8-43a可以发现,CyclicinterruptOB30组态时设定的循环时间为1000ms,相移关闭。从图8-43d中看i的自加1速度可以印证设定组态和编程无误。图8-44在监控表对"CycleTime"进行赋值操作8.3中断取消时间中断(CAN_TINT)的指令对照表和参数表见表8-36所示。表8-36CAN_TINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=CAN_TINT(_ob_tod_in_);OB_NROB_TODSDTDTL8.3中断b)
CAN_CINT指令SCL程序a)
CAN_CINT指令LAD程序图8-49CAN_TINT指令的应用8.3中断启用时间中断(ACT_TINT)的指令对照表和参数表见表8-37所示。表8-37ACT_TINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=ACT_TINT(_ob_tod_in_);OB_NROB_TODRET_VALINT8.3中断当使用“SET_TINTL”指令ACTIVATE引脚设定为0时,用户就需要使用“ACT_TINT”指令进行时间中断的激活。图8-50ACT_TINT指令的应用a)
ACT_CINT指令LAD程序b)
ACT_CINT指令SCL程序8.3中断查询时间中断的状态(QRY_TINT)的指令对照表和参数表见表8-38所示。表8-38QRY_TINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=QRY_TINT(OB_NR:=_ob_tod_in_,STATUS=>_word_out_);OB_NROB_TODSTATUSWORDRET_VALINT8.3中断图8-51QRY_TINT指令的应用a)
QRY_TINT指令LAD程序b)
QRY_TINT指令SCL程序8.3中断设置时间中断(SRT_DINT)的指令对照表和参数表见表8-39所示。表8-39SRT_DINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=SRT_D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电信装维工作总结(6篇)
- 2025年音程构成理解试题及答案
- 农业适应气候变化的项目咨询合同
- 家具行业设计在全球化背景下的发展新思路试题及答案
- 医疗伦理与法律患者权益的守护者
- 体温检测考试题及答案
- 友情提示的幼儿园数学考试试题及答案
- 广西单招改革试题及答案
- 平凡的世界试题及答案
- 轻量化材料在汽车轻量化车身制造中的成本效益分析报告
- 水下光学探测发展综述
- 2023年护理考试-护理学(副高)历年考试真题试卷摘选答案
- 12315投诉举报电话文明用语
- GB 40161-2021过滤机安全要求
- BIM技术概述及应用介绍课件
- 海洋工程装备-海洋油气资源开发装备课件
- DB32T 4285-2022 预应力混凝土空心方桩基础技术规程
- 小学抵御和防范宗教渗透校园工作实施方
- Q∕SY 08124.2-2018 石油企业现场安全检查规范 第2部分:钻井作业
- AlteraPCI_mt32说明
- 秋季学期国家通用盲文考核试题及答案
评论
0/150
提交评论