FUNCTION_BLOCK: 定义块号或者块的符号名称,若是符号,编译 SCL代码前需要为符号名分配块号。1.TITLE:显示在对象属性的备注中,建议和1中属性相同。2.NAME:输入与1中相同的名称。3.VERSION:版本号0.0—15.5。4.FAMILY:如果将功能库放入单独的功能库并在库内将功能块分成不同的组显示,为该功能块输入8个字符的名称。5.AUTHOR:作者6.KNOW_HOW_PROTECT:如果输入该属性将该功能块移植到别的项目之后无源文件无法用SCL打开。7.1.块头2015年12月16日18:52分区SCL编程的第1页块系统属性:适用于整个块;1.参数系统属性:对应每个独立的参数。2.一、系统属性:系统属性是软件包内使用的相关接口属性。二、块的属性列表系统属性意义默认值S7_m_c指定能否从OS进行控制或监控falseS7_tasklist包含一个OB表,该表中的块将会由CFC自动安装。安装不超过一次S7_alarm_ui用于消息服务器的标识符:S7_alarm_ui:=“0”标准消息对话框;S7_alarm_ui:=“1”PCS 7 消息对话框。S7_alarm_ui:=“0”S7_tag若该系统属性持有值“false”,则该块不进入OS的标签列表。这仅对于只发送消息而不具有面板的块才有用。若该系统属性不存在,且该块有系统属性S7_m_c,则该块将进入到过程标签列表。falseS7_driver它用于信号预处理驱动块,在SIMATIC管理器内,使用CFC功能“Generate Module Driver”,这种块可以自动地与相应的块互连。false或者“chn”S7_hardware它用于信号预处理驱动块,在SIMATIC管理器内,使用CFC功能“Generate Module Drive”,这种块可以自动地与相应的块互连。值:subnet,rack,sm,im,fmS7_read_back定义块的实例是否将会被分配CFC内的“ChartReadback”功能。若该系统属性的值true2.块的属性2015年12月16日19:42分区SCL编程的第2页为“false”,则实例的块参数不能被回读。注:属性需要小写三、参数属性列表系统属性影响意义默认值S7_sample_time时间响应若某个参数具有该系统属性,则它被自动地分配调用循环OB的循环时间。当编译CFC图时,必须选择选择框“更新取样时间”。FalseS7_dynamicCFC若某个参数具有该系统属性,则它会自动地注册用于CFC测试模式中的测试工作(监视)。FalseS7_editCFC它决定是否可以在SIMATIC管理器过程对象视图内编辑该参数。FalseS7_linkCFC它决定在CFC图内是否可以互连参数。TrueS7_paramCFC它决定在CFC图内是否可以设置该参数的值。TrueS7_visibleCFC对于某个参数,如果该系统属性设置为“false”,则在CFC图内,该参数不会显示在块上。TrueS7_qc该参数具有质量代码。FalseS7_contact该属性定义与SFC类型特定相关联的参数FalseS7_m_cOCM它决定在OS中是否可以控制或监视该参数FalseS7_shortcutOCM它包含有一个昀长16个字符的参数标识符。在OS中面板内也可以显示该名称(例如Setpoint”)。S7_string_0OCM该系统属性仅与BOOL型的输入参数(或者in/out参数)有关。它具有一个昀长16 字符的文本信息,在面板中可以显示为操作员文本(例如“Open valve”)。操作员选用该功能后,该参数将置为0。S7_string_1OCM该系统属性仅与BOOL型的输入参数(或者输入/输出参数)有关。它具有一个昀长16 字符的文本信息,在面板中可以显示为操作员文本(例如“Close valve”)。操作员选用该功能后,该参数将被置为值1。S7_unitOCM它含有参数的单位,且昀长可以为16 个字符。该单位(例如“ mbar”)可以显示在CFC中块的I/O的中。S7_server服务器该接口参数被分配给某个服务器。消息服务器:S7_server: =“ alarm_archive”。无服务器调用分区SCL编程的第3页S7_a_type服务器该接口的参数是消息类型的消息编号输入或者是归档编号输入。无服务器调用分区SCL编程的第4页描述:调试器帮助对S7-SCL源代码进行一个简单调试,如果在编译S7-SCL源代码过程没有错误发生,能够通过利用断点找出程序逻辑错误,并在运行时监视S7-SCL代码的函数功能。过程如下面表格中描述:1.过程:1在S7-SCL编辑器中通过ToolsSettings...打开Settings对话框,选择Compiler选项,激活创建诊断信息项,确认并退出。图01注意:在这种情况下,测试所必需的参考数据在编译过程自动创建,这增加了程序内存的要求,同时自动化系统运行时间也会加长。2通过DebugOperationTestoperation,改变CPU在测试模式3.S7-SCL在线测试2015年12月18日15:29分区SCL编程的第5页下。注意:在这种模式下,所有的调试功能通过PG/PC可以不受限制地使用,这大大加长了CPU的循环周期。如果CPU是在测试模式,必须确认CPU或者生产能够允许循环周期的变长。例如,在这种情况下,由于通过程序控制的语句状态在每个周期都被要求得到,导致CPU的循环周期变长。3通过FileSave或者工具栏保存按钮保存程序。4通过FileCompile或者通过工具栏编译按钮编译程序。5通过TargetsystemLoad或者通过工具栏下载按钮下载程序到CPU中。6放光标在要调试的程序行位置,通过菜单DebugSetbreakpoint。在S7-SCL语句旁边,断点显示为一个有颜色的小圆点。7如果对一个FB功能块有多个实例,必须对特定实例定义特定功能,即处理前需要定义相应的背景DB块。通过DebugCallenvironmentblocks...,在下图02中选择背景DB块并确认。分区SCL编程的第6页图02这种情况下,此背景块对应的功能块被调用时,背景块也开始执行。8通过DebugEditbreakpoints...选项,点击打开数据块,选择相应DB,如图02所示并确认。分区SCL编程的第7页图03带有背景数据的功能块被调用时,上面的设置激活断点。9通过ToolsSettings...选择Format项可以个性化调试窗口,能够改变字体以及调试窗口颜色,并能够为变量在状态改变及特定变量定义不同颜色。分区SCL编程的第8页图0410通过菜单DebugBreakpointsactive.激活设置的断点。11如图05,现在可以测试S7-SCL程序代码,程序执行到断点后位置。图05分区SCL编程的第9页12DebugDeleteallbreakpoints,DebugClosedebug。调试器通过执行下面操作退出程序调试。注意:重新将CPU的操作模式设置到生产模式并取消选项Createdebuginfo(通过ToolsSettings...Tab:Compiler),这降低了内存要求并提高了程序块的执行时间,同时必须重新编译程序并下载到CPU中。分区SCL编程的第10页数据句法FBFCOBDBUDT常量ConstantsCONST声明列表(declarationlist)END_CONSTXXX标号LabelsLABEL声明列表(declarationlist)END_LABELXXX临时变量TemporaryVariablesVAR_TEMP声明列表(declarationlist)END_VARXXX静态变量StaticvariablesVAR声明列表(declarationlist)END_VARXX*)X**)X**)输入参数InputparametersVAR_INPUT声明列表(declarationlist)END_VARXX输出参数OutputparametersVAR_OUTPUT声明列表(declarationlist)END_VARXX输入/输出参数In/outparametersVAR_IN_OUT声明列表(declarationlist)END_VARXX*)在函数中,尽管允许变量的声明在关键字对VAR和END_VAR之间,但在源文件编译时,声明被移至临时区。**)在数据块和用户定义数据类型中,关键字VAR和END_VAR分别被STRUCT和END_STRUCT替代。4.变量声明2015年12月21日16:24分区SCL编程的第11页一、基本数据类型(ElementaryDataTypes)位数据类型1.类型关键字位宽位置对齐值范围位BOOL1bitBeginsattheleastsignificantbitinthebyte0,1orFALSE,TRUE字节BYTE8bitsBeginsattheleastsignificantbyteintheword.-字WORD16bitsBeginsataWORDboundary.-双字DWORD32bitsBeginsataWORDboundary.-字符数据类型2.类型关键字位宽值范围单个字符CHAR8扩展ASCII字符集数字类型3.类型关键字位宽位置对齐值范围整数INT16从字的边界开始-32_768to32_767双精度整数DINT32从字的边界开始-2_147_483_648to2_147_483_647浮点数(IEEE浮点数)REAL32从字的边界开始-3.402822E+38to-1.175495E-38+/-01.175495E-38to3.402822E+38时间数据类型4.分类数据类型说明位类数据类型BOOLBYTEWORDDWORD这类数据元素占用1位、8位、16位或32位。字符类数据类型CHAR这类数据元素恰好是ASCII字符(占用8位)集中的一个字符。数字类数据类型INTDINTREAL这类数据元素用于处理数值。时间类数据类型TIMEDATETIME_OF_DAYS5TIME这类数据元素描述在STEP7中的各种时间和日期值。5.数据类型2015年12月21日16:52分区SCL编程的第12页类型关键字位宽位置对齐值范围S5timeS5TIMES5T16从字边界开始T#0H_0M_0S_10MStoT#2H_46M_30S_0MSTimeperiod:IECtimeinstepsof1ms.TIMET32从字边界开始-T#24D_20H_31M_23S_647MStoT#24D_20H_31M_23S_647MSDateIECdatainstepsof1dayDATED16从字边界开始D#1990-01-01toD#2168-12-31Timeofdaytimeinstepsof1ms.TIME_OF_DAYTOD32从字边界开始TOD#0:0:0.0toTOD#23:59:59.999复杂数据类型(ComplexDataTypes)数据类型说明DATE_AND_TIMEDT定义了一个64位(8个字节)的区域。这种数据类型存储日期和时间(采用BCD码),在S7-SCL中是预定义数据类型。STRING定义了一个昀多254个(数据类型为CHAR)字符的字符串。ARRAY定义了一个包含一种数据类型(基本的或复杂的)的元素的阵列。STRUCT定义了一个任意类型组合的数据类型的组。其能够是一个结构的阵列,或是包含结构和数组的结构。用户定义数据类型(User-DefinedDataTypes)在数据类型声明中,能够建立自己的用户定义数据类型。每个指定唯一的名字,可以使用任意次数。一旦定义好,用户定义数据类型就能产生许多同样结构的数据块。参数类型(Par