
SIMATICPCS7标准培训10自定义功能块课件.ppt
46页SIMATIC PCS7 标准培训自定义功能块2024/8/20内 容nFB和FC块的结构nLAD 编程语言n设计自定义功能块nFC设计实例nFB设计实例nSCL 编程简介2024/8/202SIMATIC_PCS7_标准培训10自定义功能块FB和FC块的结构n引脚n变量声明n程序体n块属性nFB的背景数据块2024/8/203SIMATIC_PCS7_标准培训10自定义功能块块的引脚nFB和FC块是实现一定功能的程序块,例如:量程转换、PID控制器、信号滤波等;nFB和FC将程序分解成相对独立的部分;n在FB和FC内部避免使用直接地址,而是通过块的引脚与调用程序实现数据交换,可以防止读取到无效数据;n设计良好的块可以被多次调用,只需改变引脚连接,可节约编程工作量2024/8/204SIMATIC_PCS7_标准培训10自定义功能块块的三种引脚n输入端(IN):n变量输入,只读;n输出端(OUT):n结果输出,避免读取输出端;n输入输出端(IN_OUT):n用于需要回写的变量,例如需要自复位的按钮2024/8/205SIMATIC_PCS7_标准培训10自定义功能块变量声明nFB和FC块中所有用到的变量必须先声明;n变量声明中包括对引脚的声明;nFB和FC块中的变量声明类型:nIN,OUT,IN_OUT 块的引脚;nTEMP 临时变量,用于程序的中间数据存储;nSTAT 静态变量,在FB中用于保存重要数据,FC没有静态变量。
n块中的变量可以采用所有PCS7支持的基本和复合数据类型,但是块的引脚在连接时必须满足两端数据类型一致2024/8/206SIMATIC_PCS7_标准培训10自定义功能块块属性nFB和FC块包含以下属性:nNAME:块名称nVERSION:版本号nFAMILY:块分类nAUTHOR:作者nS7_TASKLIST:调用块的执行顺序nS7_m_c:块是否需要与WinCC变量连接n可以在编写自定义功能块时设置属性2024/8/207SIMATIC_PCS7_标准培训10自定义功能块FB的背景数据块nFC和FB的区别:FC块没有背景数据块;n背景数据块与变量声明中确定的数据结构一致;n背景数据块中不包含临时变量;n用于保存每个周期的变量数值,可以在其他程序中访问背景数据块中的数据;nFC块的引脚不能空置,不能赋初值;nFB块的引脚可以不连,保持其默认的初始值;nFC常用于一些简单的逻辑运算和不需数据存储的功能,也用于调用其他FB和FC块实现程序的结构化;nFB更适合于编写复杂的运算功能2024/8/208SIMATIC_PCS7_标准培训10自定义功能块程序体nFB和FC块的程序可以采用多种编程语言编写;nLAD、FBD:适于编写较简单的功能,程序直观易懂;nSTL:适于编写贴近内核的程序,功能强大,但程序晦涩难懂;nSCL:适于编写复杂的运算功能,功能强大,接近高级语言,程序易懂。
2024/8/209SIMATIC_PCS7_标准培训10自定义功能块LAD 编程语言n位逻辑指令n比较指令nMOVE 与数据转换指令n整数运算指令n浮点数运算指令n字逻辑运算指令n计数器指令n定时器指令2024/8/2010SIMATIC_PCS7_标准培训10自定义功能块n常开触点n常闭触点n取反n输出线圈n置位线圈n复位线圈n检测下降沿n检测上升沿n复位-置位触发器n置位-复位触发器n检测变量上升沿n检测变量下降沿位逻辑指令2024/8/2011SIMATIC_PCS7_标准培训10自定义功能块n三种数据类型nCMP?I 整数比较nCMP?D 长整数比较nCMP?R 实数比较n六种比较条件n== IN1等于IN2n<> IN1不等于IN2n> IN1大于IN2n< IN1小于IN2n>= IN1大于等于IN2n<= IN1小于等于IN2比较指令2024/8/2012SIMATIC_PCS7_标准培训10自定义功能块MOVE 指令n可实现简单的数据转换功能nIN:I,Q,M,D,常数nOUT:I,Q,M,D2024/8/2013SIMATIC_PCS7_标准培训10自定义功能块nBCD_I BCD码转换为整型nI_BCD 整型数转换为BCD码nBCD_DI BCD码转换为长整型nDI_BCD 长整型数转换为BCD码nI_DINT 整形数转换为长整型nDI_REAL 长整型数转换为实型数nINV_I 整型数的二进制反码(按位取反)nINV_DI 长整型数的二进制反码(按位取反)nNEG_I 整型数的2的补码(加负号)nNEG_DI 长整型数的2的补码(加负号)nNEG_R 实型数的相反数(加负号)数据转换指令2024/8/2014SIMATIC_PCS7_标准培训10自定义功能块nADD_I 整型数加法nSUB_I 整型数减法nMUL_I 整型数乘法nDIV_I 整型数除法nADD_DI 长整型数加法nSUB_DI 长整型数减法nMUL_DI 长整型数乘法nDIV_DI 长整型数除法nMOD_DI 长整型数取模运算(求余数)整数运算指令2024/8/2015SIMATIC_PCS7_标准培训10自定义功能块nADD_R 实型数加法nSUB_R 实型数减法nMUL_R 实型数乘法nDIV_R 实型数除法浮点数运算指令2024/8/2016SIMATIC_PCS7_标准培训10自定义功能块nWAND_W 字“与”nWOR_W 字“或”nWXOR_W 字“异或”nWAND_DW 双字“与”nWOR_DW 双字“或”nWXOR_DW 双字“异或”字逻辑运算指令2024/8/2017SIMATIC_PCS7_标准培训10自定义功能块nS_CUD 向上-向下计数器nS_CD 向下计数器nS_CU 向上计数器计数器指令2024/8/2018SIMATIC_PCS7_标准培训10自定义功能块nS_PULSE ---(SP) 脉冲定时器nS_PEXT ---(SE) 扩展脉冲定时器nS_ODT ---(SD) 延时接通定时器nS_ODTS ---(SS) 带保持延时接通定时器nS_OFFDT ---(SF) 延时断开定时器定时器指令2024/8/2019SIMATIC_PCS7_标准培训10自定义功能块S_PULSE 脉冲定时器2024/8/2020SIMATIC_PCS7_标准培训10自定义功能块S_PEXT 扩展脉冲定时器2024/8/2021SIMATIC_PCS7_标准培训10自定义功能块S_ODT 延时开启定时器2024/8/2022SIMATIC_PCS7_标准培训10自定义功能块S_ODTS 带保持延时开启定时器2024/8/2023SIMATIC_PCS7_标准培训10自定义功能块S_OFF 延时断开计时器2024/8/2024SIMATIC_PCS7_标准培训10自定义功能块设计自定义功能块n分解程序功能n选择 FC 和 FB 块n设计引脚和变量结构2024/8/2025SIMATIC_PCS7_标准培训10自定义功能块分解程序功能n可以按照以下原则对程序进行功能分解:n按照实现的功能划分:n如电机起停逻辑、阀门控制器等;n按照控制的设备划分:n如除氧器、加压泵等;n按照控制回路划分:n如汽包水位控制器、主管压力控制器等;n按照算法单元划分:n如量程转换,浮点运算等;2024/8/2026SIMATIC_PCS7_标准培训10自定义功能块选择 FC 和 FB 块n选择合理的程序块划分原则;n尽量将实现功能所需的数据包含到功能块中;n需要大量中间数据的功能块应选择FB,如:计算浮点数多项式;n需要读取多个扫描周期数据的功能块采用FB,例如:PID控制器;n不需数据存储或只需临时数据存储的功能块可采用FC实现,例如:量程转换等。
2024/8/2027SIMATIC_PCS7_标准培训10自定义功能块设计引脚和变量结构n将需要在调用时变化的数据设计成块的引脚;n合理利用IN,IN_OUT,OUT三种引脚类型,优先使用IN和OUT类型,避免不必要的麻烦;n需要在多个周期中使用的变量应为静态变量; n只在单个周期使用或仅仅一个语句使用的变量应为临时变量;n对FB块中变量赋初值时应考虑安全;n临时变量不能赋初值2024/8/2028SIMATIC_PCS7_标准培训10自定义功能块FC设计实例n量程转换功能n引脚n变量声明nLAD实现量程转换n在OB1中调用2024/8/2029SIMATIC_PCS7_标准培训10自定义功能块量程转换功能n从模拟量输入通道读到的是一个没有工程单位的数值,与输入信号的对应关系是:n0Kp--4mA--0n12Kp--20mA--27648n在程序中必须先对其做量程转换,之后才能得到实际的测量信号;n量程转换是一个最常用的功能,但必须经过多步运算才能实现,因而有必要将其编写成功能块2024/8/2030SIMATIC_PCS7_标准培训10自定义功能块引脚n将一个0到27648的数值转换成从低量程(0Kp)到高量程(12Kp)之间的数值;n为了确保可以在程序中多次调用,需要将一些变量引出成为引脚;n要转换的数值应该是一个输入引脚;n高低量程根据不同的信号可能不同,应该设计成输入引脚;n量程转换的结果应该作为输出引脚。
2024/8/2031SIMATIC_PCS7_标准培训10自定义功能块变量声明n其他数据只是在运算过程中使用,可以定义成临时变量n引脚的数据类型:n输入:SV:WORD; HLM:REAL; LLM:REAL;n输出:PV:REALn在量程转换功能中没有需要多个周期使用的数据,可以用FC实现n将自定义量程转换功能定义成FC12024/8/2032SIMATIC_PCS7_标准培训10自定义功能块LAD实现量程转换FC12024/8/2033SIMATIC_PCS7_标准培训10自定义功能块在OB1中调用FC1nFC1的引脚不能空置n连接变量的数据类型与声明的类型一致2024/8/2034SIMATIC_PCS7_标准培训10自定义功能块FB设计实例n信号滤波功能n引脚n变量声明nLAD实现信号滤波FB1n在CFC中调用FB12024/8/2035SIMATIC_PCS7_标准培训10自定义功能块信号滤波功能n为了消除模拟量信号的高频噪声,在信号读入之后需要先经过滤波器;n根据要求不同可以选用多次滤波,如四次滤波;n在滤波器中,将连续对同一个信号采样,并将连续四次采样的平均值作为当前时刻的实际值输出;n滤波器可以用于各种模拟量信号,用功能块实现可以节约编程量。
2024/8/2036SIMATIC_PCS7_标准培训10自定义功能块引脚n滤波器应该是一个单输入单输出的系统,输入端是一个任意的模拟量信号,输出是经过滤波之后的模拟量信号;2024/8/2037SIMATIC_PCS7_标准培训10自定义功能块变量声明n由于滤波算法中需要保存连续四次的采样值,并作平均运算,因而需要使用FB来实现;n可以将连续四次采样值保存在一个实型数组中,并且必须将其声明成静态类型(STAT);n在FB中输入输出和静态变量可以设置初值:n输入:SV:REAL;(初值为0.0)n输出:PV:REAL;(初值为0.0)n静态:BUF:ARRAY[1..4] OF REAL;(0.0)n其他变量可以声明成临时变量2024/8/2038SIMATIC_PCS7_标准培训10自定义功能块LAD实现信号滤波FB12024/8/2039SIMATIC_PCS7_标准培训10自定义功能块在CFC中调用FB1n在CFC中连接块的引脚;n不必关心生成的背景数据块,编译时自动生成2024/8/2040SIMATIC_PCS7_标准培训10自定义功能块SCL 编程简介nSCL 编程环境nSCL 程序结构nSCL 编程实例2024/8/2041SIMATIC_PCS7_标准培训10自定义功能块SCL 编程环境2024/8/2042SIMATIC_PCS7_标准培训10自定义功能块SCL 程序结构n主框架n声明生成块的名称和FC块返回值的类型n分隔程序的各个部分n属性声明n定制生成块的属性n变量声明n所有程序中使用的变量必须声明n程序体n执行算法程序2024/8/2043SIMATIC_PCS7_标准培训10自定义功能块SCL 编程实例2024/8/2044SIMATIC_PCS7_标准培训10自定义功能块总结与练习2024/8/2045SIMATIC_PCS7_标准培训10自定义功能块。












