1、2022-7-30SIMATIC PCS7 标准培训自定义功能块第1页,共47页。Sciample Training-SIMATIC PCS722022-7-30内 容nFB和FC块的结构nLAD 编程语言n设计自定义功能块nFC设计实例nFB设计实例nSCL 编程简介第2页,共47页。Sciample Training-SIMATIC PCS732022-7-30FB和FC块的结构n引脚n变量声明n程序体n块属性nFB的背景数据块第3页,共47页。2022-7-30Sciample Training-SIMATIC PCS74块的引脚nFB和FC块是实现一定功能的程序块,例如:量程转换、PI
2、D控制器、信号滤波等;nFB和FC将程序分解成相对独立的部分;n在FB和FC内部避免使用直接地址,而是通过块的引脚与调用程序实现数据交换,可以防止读取到无效数据;n设计良好的块可以被多次调用,只需改变引脚连接,可节约编程工作量。第4页,共47页。2022-7-30Sciample Training-SIMATIC PCS75块的三种引脚n输入端(IN):n变量输入,只读;n输出端(OUT):n结果输出,避免读取输出端;n输入输出端(IN_OUT):n用于需要回写的变量,例如需要自复位的按钮。第5页,共47页。2022-7-30Sciample Training-SIMATIC PCS76变量声
3、明nFB和FC块中所有用到的变量必须先声明;n变量声明中包括对引脚的声明;nFB和FC块中的变量声明类型:nIN,OUT,IN_OUT 块的引脚;nTEMP 临时变量,用于程序的中间数据存储;nSTAT 静态变量,在FB中用于保存重要数据,FC没有静态变量。n块中的变量可以采用所有PCS7支持的基本和复合数据类型,但是块的引脚在连接时必须满足两端数据类型一致。第6页,共47页。2022-7-30Sciample Training-SIMATIC PCS77块属性nFB和FC块包含以下属性:nNAME:块名称nVERSION:版本号nFAMILY:块分类nAUTHOR:作者nS7_TASKLIS
4、T:调用块的执行顺序nS7_m_c:块是否需要与WinCC变量连接n可以在编写自定义功能块时设置属性。第7页,共47页。2022-7-30Sciample Training-SIMATIC PCS78FB的背景数据块nFC和FB的区别:FC块没有背景数据块;n背景数据块与变量声明中确定的数据结构一致;n背景数据块中不包含临时变量;n用于保存每个周期的变量数值,可以在其他程序中访问背景数据块中的数据;nFC块的引脚不能空置,不能赋初值;nFB块的引脚可以不连,保持其默认的初始值;nFC常用于一些简单的逻辑运算和不需数据存储的功能,也用于调用其他FB和FC块实现程序的结构化;nFB更适合于编写复杂
5、的运算功能。第8页,共47页。2022-7-30Sciample Training-SIMATIC PCS79程序体nFB和FC块的程序可以采用多种编程语言编写;nLAD、FBD:适于编写较简单的功能,程序直观易懂;nSTL:适于编写贴近内核的程序,功能强大,但程序晦涩难懂;nSCL:适于编写复杂的运算功能,功能强大,接近高级语言,程序易懂。第9页,共47页。Sciample Training-SIMATIC PCS7102022-7-30LAD 编程语言n位逻辑指令n比较指令nMOVE 与数据转换指令n整数运算指令n浮点数运算指令n字逻辑运算指令n计数器指令n定时器指令第10页,共47页。2
6、022-7-30Sciample Training-SIMATIC PCS711n常开触点n常闭触点n取反n输出线圈n置位线圈n复位线圈n检测下降沿n检测上升沿n复位置位触发器n置位复位触发器n检测变量上升沿n检测变量下降沿SRRSQSR(变量地址)RSQRS(变量地址)N(变量地址)P(变量地址)NOTM_BITQNEG(变量地址1)(变量地址2)M_BITQPOS(变量地址1)(变量地址2)位逻辑指令第11页,共47页。2022-7-30Sciample Training-SIMATIC PCS712n三种数据类型nCMP?I 整数比较nCMP?D 长整数比较nCMP?R 实数比较n六种比
7、较条件n=IN1等于IN2n IN1不等于IN2n IN1大于IN2n=IN1大于等于IN2n=IN1小于等于IN2比较指令第12页,共47页。2022-7-30Sciample Training-SIMATIC PCS713MOVE 指令n可实现简单的数据转换功能nIN:I,Q,M,D,常数nOUT:I,Q,M,D第13页,共47页。2022-7-30Sciample Training-SIMATIC PCS714nBCD_I BCD码转换为整型nI_BCD 整型数转换为BCD码nBCD_DI BCD码转换为长整型nDI_BCD 长整型数转换为BCD码nI_DINT 整形数转换为长整型nDI
8、_REAL 长整型数转换为实型数nINV_I 整型数的二进制反码(按位取反)nINV_DI 长整型数的二进制反码(按位取反)nNEG_I 整型数的2的补码(加负号)nNEG_DI 长整型数的2的补码(加负号)nNEG_R 实型数的相反数(加负号)数据转换指令第14页,共47页。2022-7-30Sciample Training-SIMATIC PCS715nADD_I 整型数加法nSUB_I 整型数减法nMUL_I 整型数乘法nDIV_I 整型数除法nADD_DI 长整型数加法nSUB_DI 长整型数减法nMUL_DI 长整型数乘法nDIV_DI 长整型数除法nMOD_DI 长整型数取模运算
9、(求余数)整数运算指令第15页,共47页。2022-7-30Sciample Training-SIMATIC PCS716nADD_R 实型数加法nSUB_R 实型数减法nMUL_R 实型数乘法nDIV_R 实型数除法浮点数运算指令第16页,共47页。2022-7-30Sciample Training-SIMATIC PCS717nWAND_W 字“与”nWOR_W 字“或”nWXOR_W 字“异或”nWAND_DW 双字“与”nWOR_DW 双字“或”nWXOR_DW 双字“异或”字逻辑运算指令第17页,共47页。2022-7-30Sciample Training-SIMATIC PC
10、S718nS_CUD 向上向下计数器nS_CD 向下计数器nS_CU 向上计数器计数器指令第18页,共47页。2022-7-30Sciample Training-SIMATIC PCS719nS_PULSE -(SP)脉冲定时器nS_PEXT -(SE)扩展脉冲定时器nS_ODT -(SD)延时接通定时器nS_ODTS -(SS)带保持延时接通定时器nS_OFFDT -(SF)延时断开定时器定时器指令第19页,共47页。2022-7-30Sciample Training-SIMATIC PCS720tttS:I0.0R:I0.1Q:Q4.0S_PULSE 脉冲定时器第20页,共47页。20
11、22-7-30Sciample Training-SIMATIC PCS721tttS:I0.0R:I0.1Q:Q4.0S_PEXT 扩展脉冲定时器第21页,共47页。2022-7-30Sciample Training-SIMATIC PCS722tttS:I0.0R:I0.1Q:Q4.0tS_ODT 延时开启定时器第22页,共47页。2022-7-30Sciample Training-SIMATIC PCS723tttS:I0.0R:I0.1Q:Q4.0tS_ODTS 带保持延时开启定时器第23页,共47页。2022-7-30Sciample Training-SIMATIC PCS72
12、4tttS:I0.0R:I0.1Q:Q4.0tS_OFF 延时断开计时器第24页,共47页。Sciample Training-SIMATIC PCS7252022-7-30设计自定义功能块n分解程序功能n选择 FC 和 FB 块n设计引脚和变量结构第25页,共47页。2022-7-30Sciample Training-SIMATIC PCS726分解程序功能n可以按照以下原则对程序进行功能分解:n按照实现的功能划分:n如电机起停逻辑、阀门控制器等;n按照控制的设备划分:n如除氧器、加压泵等;n按照控制回路划分:n如汽包水位控制器、主管压力控制器等;n按照算法单元划分:n如量程转换,浮点运算
13、等;第26页,共47页。2022-7-30Sciample Training-SIMATIC PCS727选择 FC 和 FB 块n选择合理的程序块划分原则;n尽量将实现功能所需的数据包含到功能块中;n需要大量中间数据的功能块应选择FB,如:计算浮点数多项式;n需要读取多个扫描周期数据的功能块采用FB,例如:PID控制器;n不需数据存储或只需临时数据存储的功能块可采用FC实现,例如:量程转换等。第27页,共47页。2022-7-30Sciample Training-SIMATIC PCS728设计引脚和变量结构n将需要在调用时变化的数据设计成块的引脚;n合理利用IN,IN_OUT,OUT三种
14、引脚类型,优先使用IN和OUT类型,避免不必要的麻烦;n需要在多个周期中使用的变量应为静态变量;n只在单个周期使用或仅仅一个语句使用的变量应为临时变量;n对FB块中变量赋初值时应考虑安全;n临时变量不能赋初值。第28页,共47页。Sciample Training-SIMATIC PCS7292022-7-30FC设计实例n量程转换功能n引脚n变量声明nLAD实现量程转换n在OB1中调用第29页,共47页。2022-7-30Sciample Training-SIMATIC PCS730量程转换功能n从模拟量输入通道读到的是一个没有工程单位的数值,与输入信号的对应关系是:n0Kp4mA0n12
15、Kp20mA27648n在程序中必须先对其做量程转换,之后才能得到实际的测量信号;n量程转换是一个最常用的功能,但必须经过多步运算才能实现,因而有必要将其编写成功能块。第30页,共47页。2022-7-30Sciample Training-SIMATIC PCS731引脚n将一个0到27648的数值转换成从低量程(0Kp)到高量程(12Kp)之间的数值;n为了确保可以在程序中多次调用,需要将一些变量引出成为引脚;n要转换的数值应该是一个输入引脚;n高低量程根据不同的信号可能不同,应该设计成输入引脚;n量程转换的结果应该作为输出引脚。第31页,共47页。2022-7-30Sciample Tr
16、aining-SIMATIC PCS732变量声明n其他数据只是在运算过程中使用,可以定义成临时变量。n引脚的数据类型:n输入:SV:WORD;HLM:REAL;LLM:REAL;n输出:PV:REALn在量程转换功能中没有需要多个周期使用的数据,可以用FC实现。n将自定义量程转换功能定义成FC1。第32页,共47页。2022-7-30Sciample Training-SIMATIC PCS733LAD实现量程转换FC1第33页,共47页。2022-7-30Sciample Training-SIMATIC PCS734在OB1中调用FC1nFC1的引脚不能空置n连接变量的数据类型与声明的类
17、型一致第34页,共47页。Sciample Training-SIMATIC PCS7352022-7-30FB设计实例n信号滤波功能n引脚n变量声明nLAD实现信号滤波FB1n在CFC中调用FB1第35页,共47页。2022-7-30Sciample Training-SIMATIC PCS736信号滤波功能n为了消除模拟量信号的高频噪声,在信号读入之后需要先经过滤波器;n根据要求不同可以选用多次滤波,如四次滤波;n在滤波器中,将连续对同一个信号采样,并将连续四次采样的平均值作为当前时刻的实际值输出;n滤波器可以用于各种模拟量信号,用功能块实现可以节约编程量。第36页,共47页。2022-7
18、-30Sciample Training-SIMATIC PCS737引脚n滤波器应该是一个单输入单输出的系统,输入端是一个任意的模拟量信号,输出是经过滤波之后的模拟量信号;第37页,共47页。2022-7-30Sciample Training-SIMATIC PCS738变量声明n由于滤波算法中需要保存连续四次的采样值,并作平均运算,因而需要使用FB来实现;n可以将连续四次采样值保存在一个实型数组中,并且必须将其声明成静态类型(STAT);n在FB中输入输出和静态变量可以设置初值:n输入:SV:REAL;(初值为0.0)n输出:PV:REAL;(初值为0.0)n静态:BUF:ARRAY1.
19、4 OF REAL;(0.0)n其他变量可以声明成临时变量。第38页,共47页。2022-7-30Sciample Training-SIMATIC PCS739LAD实现信号滤波FB1第39页,共47页。2022-7-30Sciample Training-SIMATIC PCS740在CFC中调用FB1n在CFC中连接块的引脚;n不必关心生成的背景数据块,编译时自动生成。第40页,共47页。Sciample Training-SIMATIC PCS7412022-7-30SCL 编程简介nSCL 编程环境nSCL 程序结构nSCL 编程实例第41页,共47页。2022-7-30Sciamp
20、le Training-SIMATIC PCS742SCL 编程环境第42页,共47页。2022-7-30Sciample Training-SIMATIC PCS743SCL 程序结构n主框架n声明生成块的名称和FC块返回值的类型n分隔程序的各个部分n属性声明n定制生成块的属性n变量声明n所有程序中使用的变量必须声明n程序体n执行算法程序第43页,共47页。2022-7-30Sciample Training-SIMATIC PCS744SCL 编程实例第44页,共47页。2022-7-30Sciample Training-SIMATIC PCS745总结与练习第45页,共47页。第46页,共47页。演讲完毕,谢谢观看!第47页,共47页。