西门子S7-1200PLC编程及应用教程 课件 第8、9章 S7-1200 PLC 扩展指令(SCL);S7-1200通信(LAD-SCL)_第1页
西门子S7-1200PLC编程及应用教程 课件 第8、9章 S7-1200 PLC 扩展指令(SCL);S7-1200通信(LAD-SCL)_第2页
西门子S7-1200PLC编程及应用教程 课件 第8、9章 S7-1200 PLC 扩展指令(SCL);S7-1200通信(LAD-SCL)_第3页
西门子S7-1200PLC编程及应用教程 课件 第8、9章 S7-1200 PLC 扩展指令(SCL);S7-1200通信(LAD-SCL)_第4页
西门子S7-1200PLC编程及应用教程 课件 第8、9章 S7-1200 PLC 扩展指令(SCL);S7-1200通信(LAD-SCL)_第5页
已阅读5页,还剩168页未读 继续免费阅读

下载本文档

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

文档简介

第八章

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_DINT(OB_NR:=_ob_delay_in_,DTIME:=_time_in_,SIGN:=_word_in_);OB_NROB_DELAYDTIMETIMESIGNWORDRET_VALINT8.3中断图8-52SRT_DINT指令的应用a)

SRT_DINT指令LAD程序b)

SRT_DINT指令SCL程序c)

SSRT_DINT指令SCL监控从图8-52c我们可以发现,当DTIME的时间为0秒是,RET_VAL=16#8091,显示为错误。只有设定正确的延时时间(1ms-60000ms),关断"Start"开关,"OB_Timedelayinterrupt"延时中断OB将按设定时间延时执行一次。8.3中断取消延时中断(CAN_DINT)的指令对照表和参数表见表8-40所示。表8-40CAN_DINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=CAN_DINT(_ob_delay_in_);OB_NROB_DELAYRET_VALINT8.3中断图8-53CAN_DINT指令的应用a)

CAN_DINT指令LAD程序b)

CAN_DINT指令SCL程序从图8-52c我们可以发现,当DTIME的时间为0秒是,RET_VAL=16#8091,显示为错误。只有设定正确的延时时间(1ms-60000ms),关断"Start"开关,"OB_Timedelayinterrupt"延时中断OB将按设定时间延时执行一次。8.3中断查询延时中断状态(QRY_DINT)的指令对照表和参数表见表8-41所示。表8-41QRY_DINT指令对照表和参数表功能框SCL参数数据类型RET_VAL:=QRY_DINT(OB_NR:=_ob_delay_in_,STATUS=>_word_out_);OB_NROB_DELAYSTATUSWORDRET_VALINT8.3中断图8-54QRY_DINT指令的应用a)

QRY_DINT指令LAD程序b)

QRY_DINT指令SCL程序8.3.12实操案例26:流水线检测与统计装置任务:PLC采用S7-12001214CAC\DC\RLY编写一台流水线检测与统计装置。具体控制要求如下:(1)当设备连续30秒内连续未检测到流水线上无工件经过传感器,指示灯以1000ms闪烁;(2)当设备连续40秒内连续未检测到流水线上无工件经过传感器,指示灯改为以500ms闪烁;(3)当设备连续50秒内连续未检测到流水线上无工件经过传感器,指示灯改为以300ms闪烁;(4)当设备连续60秒内连续未检测到流水线上无工件经过传感器,指示灯熄灭,报警蜂鸣器响起。(5)每天0点都会对上一年度的当日数据清空,对当日流水线生产工作情况进行统计保存。该数据将实时在上位机上显示(上位机编程不做考虑,直接能获取数据即可)。8.3.12实操案例26:流水线检测与统计装置1.分析:根据小节所学循环中断指令、时间中断指令、延时中断指令,我们可以通过延时中断指令配合传感器来检测判断设备流水线上是否有工件,当未检测到工件时间到了后,指示灯按循环中断规定时间进行闪烁。我们可以通过时间中断来设定每天0点统计截止当日工作情况数据。为了数据能够失电保持功能,所以我们要在DB数据块中对统计数据勾选“保持”。我们要充分理解各OB的优先级和扫描周期的运用。输入点输出点输入继电器名称输出继电器名称I0.0传感器Q0.0警示灯

Q0.1报警蜂鸣器8.3.12实操案例26:流水线检测与统计装置8.3.12实操案例26:流水线检测与统计装置Startup[OB100]启动组织块Cyclicinterrupt[OB30]循环中断组织块Timeofday[OB10]时间中断组织块Hardwareinterrupt[OB40]硬件中断组织块Timedelayinterrupt[OB20]延时中断组织块8.3.12实操案例26:流水线检测与统计装置Judge_FC[FC1]处理延时中断时间的子程序Main[OB1]主要程序组织块Main[OB1]主要程序组织块起立,下课!第九章

S7-1200通信LAD&SCL第九章S7-1200通信LAD&SCL-112-

通信简介1

S7通信2

开放式用户通信39.1通信简介通信是指一地与另一地之间的信息传递。PLC通信是指PLC与计算机、PLC与PLC、PLC与人机界面(触摸屏)、PLC与变频器、PLC与其他智能设备之间的数据传递。1.通信方式(1)有线通信和无线通信(2)并行通信与串行通信:串行通信又可分为异步通信和同步通信。PLC与其他设备通信主要采用串行异步通信方式。在串行通信中,根据数据的传输方向不同,可分为3种通信方式:单工通信、半双工通信和全双工通信。9.1通信简介单工通信:顾名思义数据只能往一个方向传送的通信,即只能由发送端传输给接收端。半双工通信:数据可以双向传送,但在同一时间内,只能往一个方向传送,只有一个方向的数据传送完成后,才能往另一个方向传送数据。全双工通信:数据可以双向传送,通信的双方都有发送器和接收器,由于有两条数据线,所以双方在发送数据的同时可以接收数据。9.1通信简介2.通信传输介质有线通信采用传输介质主要有双绞线电缆、同轴电缆和光缆。(1)双绞线电缆:RS-232C、RS-422和RS-485等接口多用双绞线电缆进行通信。(2)同轴电缆:同轴电缆的结构是从内到外依次为内导体(芯线)、绝缘线、屏蔽层及外保护层。(3)光缆:光缆是由石英玻璃经特殊工艺拉成细丝结构,这种细丝的直径比头发丝还要细,但它能传输的数据量却是巨大的。9.1通信简介3.RS-485标准串行接口RS-485接口是在RS-422基础上发展起来的一种EIA标准串行接口,采用“平衡差分驱动”方式。RS-485接口满足RS-422的全部技术规范,可以用于RS-422通信。RS-485接口常采用9引脚连接器。RS-485接口的引脚功能如表9-1所示。9.1通信简介表9-1RS-485接口的引脚功能连接引脚示意图引脚号信号名称信号功能1SG或GND外壳接地224V回流逻辑地(公共端)3RXD+或TXD+RS-485信号B,数据发送/接收+端4发送申请RTS(TTL)55V回流逻辑地(公共端)6+5V+5V输出,100Ω串联电阻7+24V+24V输出8RXD-或TXD-RS-485信号A,数据发送/接收-端9未用程序员检测(输入)外壳屏蔽外壳接地9.1通信简介S7-1200CPU具有一个集成的PROFINET端口,支持以太网和基于TCP/IP的通信标准。S7-1200CPU支持以下应用协议:(1)传输控制协议(TCP)(2)ISOonTCP(RFC1006)(3)用户数据报协议(UDP)(4)S7通信9.1通信简介a)计算机与PLC连接b)触摸屏与PLC连接c)两台PLC直接连接d)三台PLC+触摸屏多台设备连接图9-1PROFINET通信的连接方式9.1通信简介图9-1a是计算机与PLC连接;图9-1b是触摸屏与PLC连接;图9-1c两台PLC直接连接,它们均为直接连接;图9-1d为三台PLC+触摸屏多台设备连接,它们通过CSM1277以太网交换机连接在一起。图9-1d中的“1”就是SiemensCSM1277,它是4端口以太网交换机,其可以用于连接PLC和HMI等其它支持PROFINET的设备。9.1通信简介1.工业以太网IP地址:设备的以太网接口具有一个默认IP地址,用户可以更改该地址。如果具有通信功能的模块支持TCP/CP协议,则IP参数可见。通常对于所有以太网模块都是这样。IP地址由4个0到255之间的十进制数字组成。各十进制数字相互之间用点隔开,例如:192.168.0.3。IP地址包括IP子网的地址和设备的地址。子网掩码:子网掩码将这两个地址拆分。它确定IP地址的哪一部分用于网络寻址,哪一部分用于设备寻址。子网掩码的设置位确定IP地址的网络部分。例如:子网掩码255.255.0.0=11111111.11111111.00000000.00000000。9.1通信简介IP地址和默认子网之间的关系:有关IP地址范围与“默认子网掩码”的分配存在具体的规定。IP地址中的第一个十进制数字(从左边起)决定默认子网掩码的结构。如表9-2所示,它决定数值“1”(二进制)的个数。IP地址的第一个十进制数字也可以是224和255之间的值(地址类别D等),但由于对这些值不进行地址检查,因此不建议使用该方法。表9-2子网掩码IP地址(十进制)IP地址(二进制)地址类别默认子网掩码0-1260xxxxxxx.xxxxxxxx....A255.0.0.0128-19110xxxxxx.xxxxxxxx...B255.255.0.0192-223110xxxxx.xxxxxxxx...C255.255.255.09.1通信简介以太网(MAC)地址:在PROFINET网络中,制造商会为每个设备都分配一个“介质访问控制”地址(MAC地址)以进行标识。MAC地址由六组数字组成,每组两个十六进制数,这些数字用连字符(-)或冒号(:)分隔并按传输顺序排列(例如01-23-45-67-89-AB或01:23:45:67:89:AB)。每个CPU在出厂时都已装载了一个永久、唯一的MAC地址。您无法更改CPU的MAC地址。MAC地址印在CPU正面左下角位置。9.1通信简介IP路由器:路由器是LAN之间的链接。通过使用路由器,LAN中的计算机可向其它任何网络发送消息,这些网络可能还隐含着其它LAN。如果数据的目的地不在LAN内,路由器会将数据转发给可将数据传送到其目的地的另一个网络或网络组。使用“ipconfig”和“ipconfig/all”命令检查编程设备的IP地址:Windows操作系统在“运行”(Run)对话框的“打开”(Open)区域中输入“cmd”,然后单击“确定”(OK)按钮。在显示的“C:\WINDOWS\system32\cmd.exe”对话框中,输入命令“ipconfig”。使用“ipconfig”命令9.1通信简介使用“ipconfig/all”命令使用“ipconfig/all”命令可显示更多信息。在此可找到编程设备的适配器卡类型和以太网(MAC)地址。9.1通信简介2.以太网设备的互联设置在拓扑视图中,可以指定以太网端口的物理互连。特别是要确定设备的哪个以太网端口将通过以太网电缆(预设拓扑)与另一个设备的特定以太网端口相连。在网络视图中,指定哪些设备将通过以太网子网互连。不指定用于设备互连的以太网端口(这是端口互连的工作)。(1)创建网络连接(2)网络视图9.1通信简介2.以太网设备的互联设置在拓扑视图中,可以指定以太网端口的物理互连。特别是要确定设备的哪个以太网端口将通过以太网电缆(预设拓扑)与另一个设备的特定以太网端口相连。在网络视图中,指定哪些设备将通过以太网子网互连。不指定用于设备互连的以太网端口(这是端口互连的工作)。(1)创建网络连接操作结果选择“网络视图”(Networkview)以显示要连接的设备。选择一个设备上的端口,然后将连接拖到第二个设备上的端口处。释放鼠标按钮以创建网络连接。9.1通信简介(2)网络视图网络视图是硬件和网络编辑器的三个工作区中的一个。在此处可执行以下任务组态和分配设备参数、设备间组网、编辑设备名称。①切换开关:设备视图/网络视图/拓扑视图②网络视图的工具栏③设备视图的图形区域④总览导航⑤设备视图的表格区域9.2S7通信对于S7通信,S7-1200PLC的PROFINET通信口只支持S7通信的服务器端,所以在编程和建立连接方面,S7-1200PLC的CPU只做服务器(主站),不用做任何工作,只需在S7-200SMART、S7-300等其它的CPU一侧建立单边连接即可,并使用单边编程方式PUT、GET指令进行通信,如图9-6所示。如果是两台S7-1200之间的连接,那么我们也是一样只需要在主站编写通信,从站干活。在实际工作中,我们往往都是主站接按钮、开关等司令元件,从站接输出控制元件居多。图9-6S7通信指令9.2S7通信使用指令“GET”,可以从远程CPU读取数据。在控制输入REQ的上升沿启动指令,要读出的区域的相关指针(ADDR_i)随后会发送给伙伴CPU。伙伴CPU则可以处于RUN模式或STOP模式。伙伴CPU返回数据:如果回复超出最大用户数据长度,那么将在STATUS参数处显示错误代码“2”。下次调用时,会将所接收到的数据复制到已组态的接收区(RD_i)中。如果状态参数NDR的值变为“1”,则表示该动作已经完成。只有在前一读取过程已经结束之后,才可以再次激活读取功能。如果读取数据时访问出错,或如果未通过数据类型检查,则会通过ERROR和STATUS输出错误和警告。“GET”指令不会记录伙伴CPU上所寻址到的数据区域中的变化。9.2S7通信表9-5“GET”指令的参数表参数声明数据类型存储区说明REQInputBOOLI、Q、M、D、L或常量控制参数request,在上升沿时激活数据交换功能。IDInputWORDI、Q、M、D、L或常量用于指定与伙伴CPU连接的寻址参数。NDROutputBOOLI、Q、M、D、L状态参数NDR:0:作业尚未开始或仍在运行。1:作业已成功完成。ERROROutputBOOLI、Q、M、D、L状态参数ERROR和STATUS,错误代码:ERROR=0STATUS的值为:0000H:既无警告也无错误<>0000H:警告,详细信息请参见STATUS。ERROR=1出错。STATUS提供了有关错误类型的详细信息。STATUSOutputWORDI、Q、M、D、LADDR_1InOutREMOTEI、Q、M、D指向伙伴CPU上待读取区域的指针。指针REMOTE访问某个数据块时,必须始终指定该数据块。示例:P#DB10.DBX5.0字节10。ADDR_2InOutREMOTEADDR_3InOutREMOTEADDR_4InOutREMOTERD_1InOutVARIANTI、Q、M、D、L指向本地CPU上用于输入已读数据的区域的指针。RD_2InOutVARIANTRD_3InOutVARIANTRD_4InOutVARIANT“ERROR”和“STATUS”参数表ERRORSTATUS(十进制)说明011警告:由于前一作业仍处于忙碌状态,因此未激活新作业。025已开始通信。作业正在处理。11通信故障,例如:1、连接描述信息未加载(本地或远程)2、连接中断(例如:电缆故障、CPU关闭或者CP处于STOP模式)3、尚未与伙伴建立连接121、接收到伙伴设备的否定应答。该功能无法执行。2、远程站的响应超出了用户数据的最大长度。3、伙伴CPU上的访问保护已激活。在CPU设置中禁用访问保护。14指向数据存储RD_i的指针出错:1、参数RD_i和ADDR_i的数据类型彼此不兼容。2、RD_i区域的长度小于待读取的ADDR_i参数的数据长度。18访问伙伴CPU时出错。110无法访问本地用户存储器(例如,访问某个已经删除的数据块)。1201、已超出并行作业的最大数量。2、该作业当前正在执行,但优先级较低(首次调用)。9.2S7通信“GET”指令LAD与SCL对照表LADSCL

"GET_DB"(REQ:=_bool_in_,ID:=_word_in_,NDR=>_bool_out_,ERROR=>_bool_out_,STATUS=>_word_out_,ADDR_1:=_remote_inout_,ADDR_2:=_remote_inout_,ADDR_3:=_remote_inout_,ADDR_4:=_remote_inout_,RD_1:=_variant_inout_,RD_2:=_variant_inout_,RD_3:=_variant_inout_,RD_4:=_variant_inout_);SCL编程只需要对REQ、ID、ADDR_1、RD_1进行定义即可,但没有

组态按钮,那么我们该如何进行组态呢?左键单击“GET_DB”处就会出现开始组态按钮,点击进入图9-9所示页面,在红框处“伙伴”选择自己需要的从站设备,若只有2台PLC,那就只有1个伙伴,若是3台PLC则会2个伙伴(以此类推),对每一个伙伴均要每次使用该指令进行每一个从站的组态设置。9.2S7通信9.2S7通信可使用“PUT”指令将数据写入一个远程CPU。在控制输入REQ的上升沿启动指令,写入区指针(ADDR_i)和数据(SD_i)随后会发送给伙伴CPU。伙伴CPU则可以处于RUN模式或STOP模式。从已组态的发送区域中(SD_i)复制了待发送的数据。伙伴CPU将发送的数据保存在该数据提供的地址之中,并返回一个执行应答。如果没有出现错误,下一次指令调用时会使用状态参数DONE=“1”来进行标识。上一作业已经结束之后,才可以再次激活写入过程。如果写入数据时访问出错,或如果未通过执行检查,则会通过ERROR和STATUS输出错误和警告。9.2S7通信表9-5“PUT”指令的参数表参数声明数据类型存储区说明参数声明数据类型存储区说明REQInputBOOLI、Q、M、D、L或常量控制参数request,在上升沿时激活数据交换功能。ADDR_1InOutREMOTEI、Q、M、D指向伙伴CPU上用于写入数据区域的指针。指针REMOTE访问某个数据块时,必须始终指定该数据块。示例:P#DB10.DBX5.0字节10。传送数据结构(例如Struct)时,参数ADDR_i处必须使用数据类型CHAR。IDInputWORDI、Q、M、D、L或常量用于指定与伙伴CPU连接的寻址参数。ADDR_2InOutREMOTEDONEOutputBOOLI、Q、M、D、L状态参数DONE:0:作业未开始或仍在执行之中。1:作业已成功完成,且无错误。ADDR_3InOutREMOTEERROROutputBOOLI、Q、M、D、L状态参数ERROR和STATUS,错误代码:ERROR=0STATUS的值为:0000H:既无警告也无错误<>0000H:警告,详细信息请参见STATUS。ERROR=1出错。有关该错误类型的详细信息,请参见STATUS。

ADDR_4InOutREMOTESD_1InOutVARIANTI、Q、M、D、L指向本地CPU上包含要发送数据的区域的指针。仅支持BOOL、BYTE、CHAR、WORD、INT、DWORD、DINT和REAL数据类型。传送数据结构(例如Struct)时,参数SD_i处必须使用数据类型CHAR。STATUSOutputWORDI、Q、M、D、LSD_2InOutVARIANTSD_3InOutVARIANTSD_4InOutVARIANT9.2S7通信“ERROR”和“STATUS”参数表ERRORSTATUS(十进制)说明011警告:由于前一作业仍处于忙碌状态,因此未激活新作业。025已开始通信。作业正在处理。11通信故障,例如:1、连接描述信息未加载(本地或远程)2、连接中断(例如:电缆故障、CPU关闭或者CP处于STOP模式)3、尚未与伙伴建立连接121、伙伴CPU的否定应答。该功能无法执行。2、未授予对伙伴CPU的访问权限。在CPU设置中激活访问。14指向数据存储RD_i的指针出错:1、参数SD_i和ADDR_i的数据类型彼此不兼容。2、SD_i区域的长度大于待写入的ADDR_i参数的数据长度。3、不能访问SD_i。4、已经超过了最大用户数据大小。5、参数SD_i和ADDR_i的数量不一致。18访问伙伴CPU时出错(例如,数据块未加载或不受写保护)。110无法访问本地用户存储器(例如,访问某个已经删除的数据块)。1201、已超出并行作业的最大数量。2、该作业当前正在执行,但优先级较低(首次调用)。9.2S7通信“PUT”指令LAD与SCL对照表LADSCL

"PUT_DB"(REQ:=_bool_in_,ID:=_word_in_,DONE=>_bool_out_,ERROR=>_bool_out_,STATUS=>_word_out_,ADDR_1:=_remote_inout_,ADDR_2:=_remote_inout_,ADDR_3:=_remote_inout_,ADDR_4:=_remote_inout_,SD_1:=_variant_inout_,SD_2:=_variant_inout_,SD_3:=_variant_inout_,SD_4:=_variant_inout_);9.2.3案例27:两台电动机异地启停控制任务:现有2台S7-1200PLC各控制1台电动机的启动与停止,控制要求:1.按下主站PLC的本地启动按钮SB11或本地停止按钮SB12可以对主站本地电动机进行启动或停止操作。2.按下主站远程启动按钮SB13或远程停止按钮SB14可以对从站远程电动机进行启动或停止操作。3.按下从站PLC的本地启动按钮SB21或本地停止按钮SB22可以对从站本地电动机进行启动或停止操作。4.按下从站远程启动按钮SB23或远程停止按钮SB24可以对主站远程电动机进行启动或停止操作。5.电路均有热过载保护、短路保护、欠压失压保护。步骤:1.I/O分配表

2.PLC外部接线图

3.编写程序9.2.3案例27:两台电动机异地启停控制设备名称输入点输出点输入编号注释输出编号注释主站PLCI0.0SB11主站本地启动Q0.0KM1主站电动机I0.1SB12主站本地停止---I0.2SB13主站远程启动---I0.3SB14主站远程停止---从站PLCI0.0SB21从站本地启动Q0.0KM2从站电动机I0.1SB22从站本地停止---I0.2SB23从站远程启动---I0.3SB24从站远程停止---9.2.3案例27

温馨提示

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

评论

0/150

提交评论