
[计算机硬件及网络]SIMATIC-PCS7-标准培训-10-自定义功能块课件.ppt
46页SIMATIC PCS7 标准培训自定义功能块2022/7/26内 容nFB和FC块的结构nLAD 编程语言n设计自定义功能块nFC设计实例nFB设计实例nSCL 编程简介2022/7/262Sciample Training-SIMATIC PCS7FB和FC块的结构n引脚n变量声明n程序体n块属性nFB的背景数据块2022/7/263Sciample Training-SIMATIC PCS7块的引脚nFB和FC块是实现一定功能的程序块,例如:量程转换、PID控制器、信号滤波等;nFB和FC将程序分解成相对独立的部分;n在FB和FC内部避免使用直接地址,而是通过块的引脚与调用程序实现数据交换,可以防止读取到无效数据;n设计良好的块可以被多次调用,只需改变引脚连接,可节约编程工作量2022/7/264Sciample Training-SIMATIC PCS7块的三种引脚n输入端(IN):n变量输入,只读;n输出端(OUT):n结果输出,避免读取输出端;n输入输出端(IN_OUT):n用于需要回写的变量,例如需要自复位的按钮2022/7/265Sciample Training-SIMATIC PCS7变量声明nFB和FC块中所有用到的变量必须先声明;n变量声明中包括对引脚的声明;nFB和FC块中的变量声明类型:nIN,OUT,IN_OUT 块的引脚;nTEMP 临时变量,用于程序的中间数据存储;nSTAT 静态变量,在FB中用于保存重要数据,FC没有静态变量。
n块中的变量可以采用所有PCS7支持的基本和复合数据类型,但是块的引脚在连接时必须满足两端数据类型一致2022/7/266Sciample Training-SIMATIC PCS7块属性nFB和FC块包含以下属性:nNAME:块名称nVERSION:版本号nFAMILY:块分类nAUTHOR:作者nS7_TASKLIST:调用块的执行顺序nS7_m_c:块是否需要与WinCC变量连接n可以在编写自定义功能块时设置属性2022/7/267Sciample Training-SIMATIC PCS7FB的背景数据块nFC和FB的区别:FC块没有背景数据块;n背景数据块与变量声明中确定的数据结构一致;n背景数据块中不包含临时变量;n用于保存每个周期的变量数值,可以在其他程序中访问背景数据块中的数据;nFC块的引脚不能空置,不能赋初值;nFB块的引脚可以不连,保持其默认的初始值;nFC常用于一些简单的逻辑运算和不需数据存储的功能,也用于调用其他FB和FC块实现程序的结构化;nFB更适合于编写复杂的运算功能2022/7/268Sciample Training-SIMATIC PCS7程序体nFB和FC块的程序可以采用多种编程语言编写;nLAD、FBD:适于编写较简单的功能,程序直观易懂;nSTL:适于编写贴近内核的程序,功能强大,但程序晦涩难懂;nSCL:适于编写复杂的运算功能,功能强大,接近高级语言,程序易懂。
2022/7/269Sciample Training-SIMATIC PCS7LAD 编程语言n位逻辑指令n比较指令nMOVE 与数据转换指令n整数运算指令n浮点数运算指令n字逻辑运算指令n计数器指令n定时器指令2022/7/2610Sciample Training-SIMATIC PCS7n常开触点n常闭触点n取反n输出线圈n置位线圈n复位线圈n检测下降沿n检测上升沿n复位置位触发器n置位复位触发器n检测变量上升沿n检测变量下降沿位逻辑指令2022/7/2611Sciample Training-SIMATIC PCS7n三种数据类型nCMP?I 整数比较nCMP?D 长整数比较nCMP?R 实数比较n六种比较条件n=IN1等于IN2n IN1不等于IN2n IN1大于IN2n=IN1大于等于IN2n=IN1小于等于IN2比较指令2022/7/2612Sciample Training-SIMATIC PCS7MOVE 指令n可实现简单的数据转换功能nIN:I,Q,M,D,常数nOUT:I,Q,M,D2022/7/2613Sciample Training-SIMATIC PCS7nBCD_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 实型数的相反数(加负号)数据转换指令2022/7/2614Sciample Training-SIMATIC PCS7nADD_I 整型数加法nSUB_I 整型数减法nMUL_I 整型数乘法nDIV_I 整型数除法nADD_DI 长整型数加法nSUB_DI 长整型数减法nMUL_DI 长整型数乘法nDIV_DI 长整型数除法nMOD_DI 长整型数取模运算(求余数)整数运算指令2022/7/2615Sciample Training-SIMATIC PCS7nADD_R 实型数加法nSUB_R 实型数减法nMUL_R 实型数乘法nDIV_R 实型数除法浮点数运算指令2022/7/2616Sciample Training-SIMATIC PCS7nWAND_W 字“与”nWOR_W 字“或”nWXOR_W 字“异或”nWAND_DW 双字“与”nWOR_DW 双字“或”nWXOR_DW 双字“异或”字逻辑运算指令2022/7/2617Sciample Training-SIMATIC PCS7nS_CUD 向上向下计数器nS_CD 向下计数器nS_CU 向上计数器计数器指令2022/7/2618Sciample Training-SIMATIC PCS7nS_PULSE -(SP)脉冲定时器nS_PEXT -(SE)扩展脉冲定时器nS_ODT -(SD)延时接通定时器nS_ODTS -(SS)带保持延时接通定时器nS_OFFDT -(SF)延时断开定时器定时器指令2022/7/2619Sciample Training-SIMATIC PCS7S_PULSE 脉冲定时器2022/7/2620Sciample Training-SIMATIC PCS7S_PEXT 扩展脉冲定时器2022/7/2621Sciample Training-SIMATIC PCS7S_ODT 延时开启定时器2022/7/2622Sciample Training-SIMATIC PCS7S_ODTS 带保持延时开启定时器2022/7/2623Sciample Training-SIMATIC PCS7S_OFF 延时断开计时器2022/7/2624Sciample Training-SIMATIC PCS7设计自定义功能块n分解程序功能n选择 FC 和 FB 块n设计引脚和变量结构2022/7/2625Sciample Training-SIMATIC PCS7分解程序功能n可以按照以下原则对程序进行功能分解:n按照实现的功能划分:n如电机起停逻辑、阀门控制器等;n按照控制的设备划分:n如除氧器、加压泵等;n按照控制回路划分:n如汽包水位控制器、主管压力控制器等;n按照算法单元划分:n如量程转换,浮点运算等;2022/7/2626Sciample Training-SIMATIC PCS7选择 FC 和 FB 块n选择合理的程序块划分原则;n尽量将实现功能所需的数据包含到功能块中;n需要大量中间数据的功能块应选择FB,如:计算浮点数多项式;n需要读取多个扫描周期数据的功能块采用FB,例如:PID控制器;n不需数据存储或只需临时数据存储的功能块可采用FC实现,例如:量程转换等。
2022/7/2627Sciample Training-SIMATIC PCS7设计引脚和变量结构n将需要在调用时变化的数据设计成块的引脚;n合理利用IN,IN_OUT,OUT三种引脚类型,优先使用IN和OUT类型,避免不必要的麻烦;n需要在多个周期中使用的变量应为静态变量;n只在单个周期使用或仅仅一个语句使用的变量应为临时变量;n对FB块中变量赋初值时应考虑安全;n临时变量不能赋初值2022/7/2628Sciample Training-SIMATIC PCS7FC设计实例n量程转换功能n引脚n变量声明nLAD实现量程转换n在OB1中调用2022/7/2629Sciample Training-SIMATIC PCS7量程转换功能n从模拟量输入通道读到的是一个没有工程单位的数值,与输入信号的对应关系是:n0Kp4mA0n12Kp20mA27648n在程序中必须先对其做量程转换,之后才能得到实际的测量信号;n量程转换是一个最常用的功能,但必须经过多步运算才能实现,因而有必要将其编写成功能块2022/7/2630Sciample Training-SIMATIC PCS7引脚n将一个0到27648的数值转换成从低量程(0Kp)到高量程(12Kp)之间的数值;n为了确保可以在程序中多次调用,需要将一些变量引出成为引脚;n要转换的数值应该是一个输入引脚;n高低量程根据不同的信号可能不同,应该设计成输入引脚;n量程转换的结果应该作为输出引脚。
2022/7/2631Sciample Training-SIMATIC PCS7变量声明n其他数据只是在运算过程中使用,可以定义成临时变量n引脚的数据类型:n输入:SV:WORD;HLM:REAL;LLM:REAL;n输出:PV:REALn在量程转换功能中没有需要多个周期使用的数据,可以用FC实现n将自定义量程转换功能定义成FC12022/7/2632Sciample Training-SIMATIC PCS7LAD实现量程转换FC12022/7/2633Sciample Training-SIMATIC PCS7在OB1中调用FC1nFC1的引脚不能空置n连接变量的数据类型与声明的类型一致2022/7/2634Sciample Training-SIMATIC PCS7FB设计实例n信号滤波功能n引脚n变量声明nLAD实现信号滤波FB1n在CFC中调用FB12022/7/2635Sciample Training-SIMATIC PCS7信号滤波功能n为了消除模拟量信号的高频噪声,在信号读入之后需要先经过滤波器;n根据要求不同可以选用多次滤波,如四次滤波;n在滤波器中,将连续对同一个信号采样,并将连续四次采样的平均值作为当前时刻的实际值输出;n滤波器可以用于各种模拟量信号,用功能块实现可以节约编程量。
2022/7/2636Sciample Training-SIMATIC PCS7引脚n滤波器应该是一个单输入单输出的系统,输入端是一个任意的模拟量信号,输出是经过滤波之后的模拟量信号;2022/7/2637Sciample Training-SIMATIC PCS7变量声明n由于滤波算法中需要保存连续四次的采样值,并作平均运算,因而需要使用FB来实现;n可以将连续四次采样值保存在一个实型数组中,并且必须将其声明成静态类型(STAT);n在FB中输入输出和静态变量可以设置初值:n输入:SV:REAL;(初值为0.0)n输出:PV:REAL;(初值为0.0)n静态:BUF:ARRAY1.4 OF REAL;(0.0)n其他变量可以声明成临时变量2022/7/2638Sciample Training-SIMATIC PCS7LAD实现信号滤波FB12022/7/2639Sciample Training-SIMATIC PCS7在CFC中调用FB1n在CFC中连接块的引脚;n不必关心生成的背景数据块,编译时自动生成2022/7/2640Sciample Training。












