您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > SIMATIC-PCS7-标准培训--10--自定义功能块
2020/7/30SIMATICPCS7标准培训自定义功能块SciampleTraining---SIMATICPCS722020/7/30内容FB和FC块的结构LAD编程语言设计自定义功能块FC设计实例FB设计实例SCL编程简介SciampleTraining---SIMATICPCS732020/7/30FB和FC块的结构引脚变量声明程序体块属性FB的背景数据块2020/7/30SciampleTraining---SIMATICPCS74块的引脚FB和FC块是实现一定功能的程序块,例如:量程转换、PID控制器、信号滤波等;FB和FC将程序分解成相对独立的部分;在FB和FC内部避免使用直接地址,而是通过块的引脚与调用程序实现数据交换,可以防止读取到无效数据;设计良好的块可以被多次调用,只需改变引脚连接,可节约编程工作量。2020/7/30SciampleTraining---SIMATICPCS75块的三种引脚输入端(IN):变量输入,只读;输出端(OUT):结果输出,避免读取输出端;输入输出端(IN_OUT):用于需要回写的变量,例如需要自复位的按钮。2020/7/30SciampleTraining---SIMATICPCS76变量声明FB和FC块中所有用到的变量必须先声明;变量声明中包括对引脚的声明;FB和FC块中的变量声明类型:IN,OUT,IN_OUT块的引脚;TEMP临时变量,用于程序的中间数据存储;STAT静态变量,在FB中用于保存重要数据,FC没有静态变量。块中的变量可以采用所有PCS7支持的基本和复合数据类型,但是块的引脚在连接时必须满足两端数据类型一致。2020/7/30SciampleTraining---SIMATICPCS77块属性FB和FC块包含以下属性:NAME:块名称VERSION:版本号FAMILY:块分类AUTHOR:作者S7_TASKLIST:调用块的执行顺序S7_m_c:块是否需要与WinCC变量连接可以在编写自定义功能块时设置属性。2020/7/30SciampleTraining---SIMATICPCS78FB的背景数据块FC和FB的区别:FC块没有背景数据块;背景数据块与变量声明中确定的数据结构一致;背景数据块中不包含临时变量;用于保存每个周期的变量数值,可以在其他程序中访问背景数据块中的数据;FC块的引脚不能空置,不能赋初值;FB块的引脚可以不连,保持其默认的初始值;FC常用于一些简单的逻辑运算和不需数据存储的功能,也用于调用其他FB和FC块实现程序的结构化;FB更适合于编写复杂的运算功能。2020/7/30SciampleTraining---SIMATICPCS79程序体FB和FC块的程序可以采用多种编程语言编写;LAD、FBD:适于编写较简单的功能,程序直观易懂;STL:适于编写贴近内核的程序,功能强大,但程序晦涩难懂;SCL:适于编写复杂的运算功能,功能强大,接近高级语言,程序易懂。SciampleTraining---SIMATICPCS7102020/7/30LAD编程语言位逻辑指令比较指令MOVE与数据转换指令整数运算指令浮点数运算指令字逻辑运算指令计数器指令定时器指令2020/7/30SciampleTraining---SIMATICPCS711常开触点常闭触点取反输出线圈置位线圈复位线圈检测下降沿检测上升沿复位-置位触发器置位-复位触发器检测变量上升沿检测变量下降沿SRRSQSR(变量地址)RSQRS(变量地址)N(变量地址)P(变量地址)NOTM_BITQNEG(变量地址1)(变量地址2)M_BITQPOS(变量地址1)(变量地址2)位逻辑指令2020/7/30SciampleTraining---SIMATICPCS712三种数据类型CMP?I整数比较CMP?D长整数比较CMP?R实数比较六种比较条件==IN1等于IN2IN1不等于IN2IN1大于IN2IN1小于IN2=IN1大于等于IN2=IN1小于等于IN2比较指令2020/7/30SciampleTraining---SIMATICPCS713MOVE指令可实现简单的数据转换功能IN:I,Q,M,D,常数OUT:I,Q,M,D2020/7/30SciampleTraining---SIMATICPCS714BCD_IBCD码转换为整型I_BCD整型数转换为BCD码BCD_DIBCD码转换为长整型DI_BCD长整型数转换为BCD码I_DINT整形数转换为长整型DI_REAL长整型数转换为实型数INV_I整型数的二进制反码(按位取反)INV_DI长整型数的二进制反码(按位取反)NEG_I整型数的2的补码(加负号)NEG_DI长整型数的2的补码(加负号)NEG_R实型数的相反数(加负号)数据转换指令2020/7/30SciampleTraining---SIMATICPCS715ADD_I整型数加法SUB_I整型数减法MUL_I整型数乘法DIV_I整型数除法ADD_DI长整型数加法SUB_DI长整型数减法MUL_DI长整型数乘法DIV_DI长整型数除法MOD_DI长整型数取模运算(求余数)整数运算指令2020/7/30SciampleTraining---SIMATICPCS716ADD_R实型数加法SUB_R实型数减法MUL_R实型数乘法DIV_R实型数除法浮点数运算指令2020/7/30SciampleTraining---SIMATICPCS717WAND_W字“与”WOR_W字“或”WXOR_W字“异或”WAND_DW双字“与”WOR_DW双字“或”WXOR_DW双字“异或”字逻辑运算指令2020/7/30SciampleTraining---SIMATICPCS718S_CUD向上-向下计数器S_CD向下计数器S_CU向上计数器计数器指令2020/7/30SciampleTraining---SIMATICPCS719S_PULSE---(SP)脉冲定时器S_PEXT---(SE)扩展脉冲定时器S_ODT---(SD)延时接通定时器S_ODTS---(SS)带保持延时接通定时器S_OFFDT---(SF)延时断开定时器定时器指令2020/7/30SciampleTraining---SIMATICPCS720tttS:I0.0R:I0.1Q:Q4.0S_PULSE脉冲定时器2020/7/30SciampleTraining---SIMATICPCS721tttS:I0.0R:I0.1Q:Q4.0S_PEXT扩展脉冲定时器2020/7/30SciampleTraining---SIMATICPCS722tttS:I0.0R:I0.1Q:Q4.0tS_ODT延时开启定时器2020/7/30SciampleTraining---SIMATICPCS723tttS:I0.0R:I0.1Q:Q4.0tS_ODTS带保持延时开启定时器2020/7/30SciampleTraining---SIMATICPCS724tttS:I0.0R:I0.1Q:Q4.0tS_OFF延时断开计时器SciampleTraining---SIMATICPCS7252020/7/30设计自定义功能块分解程序功能选择FC和FB块设计引脚和变量结构2020/7/30SciampleTraining---SIMATICPCS726分解程序功能可以按照以下原则对程序进行功能分解:按照实现的功能划分:如电机起停逻辑、阀门控制器等;按照控制的设备划分:如除氧器、加压泵等;按照控制回路划分:如汽包水位控制器、主管压力控制器等;按照算法单元划分:如量程转换,浮点运算等;2020/7/30SciampleTraining---SIMATICPCS727选择FC和FB块选择合理的程序块划分原则;尽量将实现功能所需的数据包含到功能块中;需要大量中间数据的功能块应选择FB,如:计算浮点数多项式;需要读取多个扫描周期数据的功能块采用FB,例如:PID控制器;不需数据存储或只需临时数据存储的功能块可采用FC实现,例如:量程转换等。2020/7/30SciampleTraining---SIMATICPCS728设计引脚和变量结构将需要在调用时变化的数据设计成块的引脚;合理利用IN,IN_OUT,OUT三种引脚类型,优先使用IN和OUT类型,避免不必要的麻烦;需要在多个周期中使用的变量应为静态变量;只在单个周期使用或仅仅一个语句使用的变量应为临时变量;对FB块中变量赋初值时应考虑安全;临时变量不能赋初值。SciampleTraining---SIMATICPCS7292020/7/30FC设计实例量程转换功能引脚变量声明LAD实现量程转换在OB1中调用2020/7/30SciampleTraining---SIMATICPCS730量程转换功能从模拟量输入通道读到的是一个没有工程单位的数值,与输入信号的对应关系是:0Kp--4mA--012Kp--20mA--27648在程序中必须先对其做量程转换,之后才能得到实际的测量信号;量程转换是一个最常用的功能,但必须经过多步运算才能实现,因而有必要将其编写成功能块。2020/7/30SciampleTraining---SIMATICPCS731引脚将一个0到27648的数值转换成从低量程(0Kp)到高量程(12Kp)之间的数值;为了确保可以在程序中多次调用,需要将一些变量引出成为引脚;要转换的数值应该是一个输入引脚;高低量程根据不同的信号可能不同,应该设计成输入引脚;量程转换的结果应该作为输出引脚。2020/7/30SciampleTraining---SIMATICPCS732变量声明其他数据只是在运算过程中使用,可以定义成临时变量。引脚的数据类型:输入:SV:WORD;HLM:REAL;LLM:REAL;输出:PV:REAL在量程转换功能中没有需要多个周期使用的数据,可以用FC实现。将自定义量程转换功能定义成FC1。2020/7/30SciampleTraining---SIMATICPCS733LAD实现量程转换FC12020/7/30SciampleTraining---SIMATICPCS734在OB1中调用FC1FC1的引脚不能空置连接变量的数据类型与声明的类型一致SciampleTraining---SIMATICPCS7352020/7/30FB设计实例信号滤波功能引脚变量声明LAD实现信号滤波FB1在CFC中调用FB12020/7/30SciampleTraining---SIMATICPCS736信号滤波功能为了消除模拟量信号的高频噪声,在信号读入之后需要先经过滤波器;根据要求不同可以选用多次滤波,如四次滤波;在滤波器中,将连续对同一个信号采样,并将连续四次采样的平均值作为当前时刻的实际值输出;滤波器可以用于各种模拟量信号,用功能块实现可以节约编程量。2020/7/30SciampleTraining---SIMATICPCS737引脚滤波器应该是一个单输入单输出的系统,输入端是一个任意的模拟量信号,输出是经过滤波之后的模拟量信号;2020/7/30SciampleTraining---SIMATICPCS738变量声明由于滤波算法中需要保存连续四次的采样值,并作平均运算,因而需要使用FB来实现;可以将连续四次采样值保存在一个实型数组中,并且必须将其声明成静态类型(STAT);在FB中输入输出和静态变量可以设置初值:输入:SV:REAL;(初值为0.0)输出:PV:REAL;(初值为0.0)静态:BU
本文标题:SIMATIC-PCS7-标准培训--10--自定义功能块
链接地址:https://www.777doc.com/doc-6713357 .html