s7-300 sfc sfb功能块简单介绍
- 格式:docx
- 大小:20.88 KB
- 文档页数:4
西门子 PLC中OB、FC、FB、SFC、SFB中功能块使用概述(2013-12-05 16:13:52)S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。
结合起来就能实现一个复杂的控制系统。
就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。
FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能FB运行时需要调用各种参数,于是就产生了背景数据块DB。
例如用FB 41来作PID控制,则它的PID控制参数就要存在DB里面。
FB具有储存功能系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB 和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。
SFC与FC不具有储存功能,FB和SFB具有储存功能。
OB模块相当于子程序,负责调用其他模块。
如果程序简单只需要OB就可以实现。
用西门子PLC编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?FB--功能块,带背景数据块FC--功能,相当于函数他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。
FB确保了3个电机的参数互不干扰。
FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。
他们的最大区别是,FB与DB配合使用,DB中保存着F B使用的数据,即使FB退出后也会一直保留。
FC就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
s附录 SIMATIC用于S7-300和S7-400的 功能块图(FBD)编程参考手册2007年8月版 A5E01112994-01版权所有 © Siemens AG 2004 保留所有权利未经明确的书面许可,不得复制、传播或使用本手册或所含内容。
违者应对造成的损失承担责任。
保留所有权利,包括实用新型或设计的专利许可权及注册权。
Siemens AGBereich Automation and DrivesGeschaeftsgebiet Industrial Automation SystemsPostfach 4848, D- 90327 Nuernberg 免责声明我们已检查过本手册中的内容与所描述的硬件和软件相符。
由于差错在所难免,我们不能保证完全一致。
我们会定期审查本手册中的内容,并在后续版本中进行必要的更正。
欢迎提出改进意见。
©Siemens 2004技术数据如有改动,恕不另行通知。
安全指南本手册包括了保证人身安全与保护本产品及连接的设备所应遵守的注意事项。
这些注意事项在手册中均以下列符号加以突出,并根据危险等级标明如下:危险表示如果不采取适当的预防措施,将导致死亡、严重的人身伤害或财产损失。
警告表示如果不采取适当的预防措施,可能导致死亡、严重的人身伤害或财产损失。
当心表示如果不采取适当的预防措施,可能导致轻微的人身伤害。
当心表示如果不采取适当的预防措施,可能导致财产损失。
须知提醒您注意有关产品、产品使用的特别重要的信息,或者是文档的特定部分。
合格人员只有合格人员才允许安装和操作该设备。
合格人员是指被授权按照既定安全惯例和标准,对线路、设备和系统进行调试、接地和标记的人员。
正确使用请注意如下事项:警告该设备及其部件只能用于产品目录或技术说明书中所描述的范畴,并且只能与由西门子公司认可或推荐的第三方厂商提供的设备或部件一起使用。
只有正确地运输、保管、设置和安装本产品,并且按照推荐的方式操作和维护,产品才能正常、安全地运行。
SFC,SFB,FC,FB功能SFC的公共参数使用输出参数RET_V AL判断错误异步SFC的REQ、RET_V AL和BUSY参数含义复制功能和块功能使用SFC 20"BLKMOV"复制变量使用SFC 81"UBLKMOV"不中断地复制变量使用SFC 21"FILL"初始化存储区使用SFC 22"CREAT_DB"创建数据块使用SFC 23"DEL_DB"删除数据块使用SFC 24"TEST_DB"测试数据块使用SFC 25"COMPRESS"压缩用户存储器使用SFC 44"REPL_V AL"将替换值传送到累加器1中使用SFC 82"CREA_DBL"在装载存储器中创建一个数据块使用SFC 83"READ_DBL"从装载存储器中读取一个数据块使用SFC 84"WRIT_DBL"在装载存储器中写入一个数据块使用SFC 85"CREA_DB"创建数据块用于控制程序执行的SFC使用SFC 43"RE_TRIGR"重新触发循环时间监视使用SFC 46"STP"将CPU切换到STOP使用SFC 47"WAIT"延迟执行用户程序使用SFC 35"MP_ALM"触发一个多值计算中断使用SFC 104 "CiR"控制CiR使用SFC 109 "PROTECT"激活和取消激活CPU访问保护用于处理系统时钟的SFC使用SFC 0"SET_CLK"设置时间使用SFC 101"RTM"处理系统时钟使用SFC 1"READ_CLK"读取时间使用SFC 48"SNC_RTCB"同步TOD从站使用SFC 100 "SET_CLKS"设置日时钟和TOD状态用于处理运行系统计时器的SFC运行系统计时器使用SFC 2"SET_RTM"设置运行系统计时器使用SFC 3"CTRL_RTM"启动和停止运行系统计时器使用SFC 4"READ_RTM"读取运行系统计时器使用SFC 64"TIME_TCK"读取系统时间用于传送数据记录的SFC读写数据记录使用SFC 54 "RD_DPARM"读取定义的参数用SFC 102 "RD_DPARA"读取预定义参数使用SFC 55"WR_PARM"写动态参数使用SFC 56 "WR_DPARM"写默认参数使用SFC 57"PARM_MOD"将参数分配给模块使用SFC 58 "WR_REC"写数据记录使用SFC 59 "RD_REC"读数据记录使用SFC 55至59"RD_REC"读取数据记录使用SFB 81"RD_DPAR"读取预定义的参数" DPV1-SFB到PNO AK 1131 用SFB 52 "RDREC"读取数据记录使用SFB 53"WRREC"写入数据记录用SFB 54 "RALRM"接收中断用SFB 75 "SALRM"向DP主站发送中断用SFB 73 "RCVREC"接收数据记录用SFB 74 "PRVREC"提供数据记录用于处理时间中断的SFC处理时间中断SFC 28到31的特征使用SFC 28 "SET_TINT"设置时间中断使用SFC 29 "CAN_TINT"取消时间中断使用SFC 30 "ACT_TINT"激活时间中断使用SFC 31 "QRY_TINT"查询时间中断用于处理延时中断的SFC处理延时中断使用SFC 32 "SRT_DINT"启动延时中断使用SFC 34 "QRY_DINT"查询延时中断使用SFC 33 "CAN_DINT"取消延时中断用于处理同步错误的SFC屏蔽同步错误使用SFC 36 "MSK_FLT"屏蔽同步错误使用SFC 37 "DMSK_FLT"取消屏蔽同步错误使用SFC 38 "READ_ERR"读取错误寄存器用于处理中断和异步错误的SFC延迟和禁用中断和异步错误使用SFC 39 "DIS_IRT"禁用新中断和异步错误的处理使用SFC 40 "EN_IRT"启用新中断和异步错误的处理使用SFC 41 "DIS_AIRT"延迟更高优先级中断和异步错误的处理使用SFC 42 "EN_AIRT"启用更高优先级中断和异步错误的处理用于诊断的SFC系统诊断使用SFC 6 "RD_SINFO"读取OB启动信息使用SFC 51 "RDSYSST"读取系统状态列表或部分列表使用SFC 52 "WR_USMSG"将用户自定义诊断事件写入诊断缓冲区使用SFC 78"OB_RT"确定OB程序循环时间使用SFC 87"C_DIAG"确定当前的连接状态使用SFC 103"DP_TOPOL"确定DP主站系统中的总线拓扑用于更新过程映像和处理位域的SFC和SFB使用SFC 26 "UPDAT_PI"更新过程映像输入表使用SFC 27 "UPDAT_PO"更新过程映像输出表使用SFC 126"SYNC_PI"识别一个同步周期内的过程映像分区输入表使用SFC 127"SYNC_PO"识别一个同步周期内的过程映像分区输出表使用SFC 79"SET"设置输出范围使用SFC 80"RSET"复位输出范围使用SFB 32 "DRUM"实现操作序列用于寻址模块的系统功能使用SFC 5 "GADR_LGC"查询模块的逻辑基址使用SFC 49"LGC_GADR"查询属于一个逻辑地址的模块插槽使用SFC 50 "RD_LGADR"查询模块的所有逻辑地址使用SFC 70"GEO_LOG"确定模块的起始地址使用SFC 71"LOG_GEO"确定属于一个逻辑地址的插槽用于分布式I/O或PROFINET IO的SFC用SFC 7 "DP_PRAL"触发DP主站上的硬件中断用SFC 11 "DPSYC_FR"同步DP从站组用SFC 12 "D_ACT_DP"激活和取消激活DP从站/PROFINET IO 设备用SFC 13 "DPNRM_DG"读取DP从站的诊断数据(从站诊断)用SFC 14 "DPRD_DAT"读取DP标准从站/PROFINET IO设备的连续数据用SFC 15 "DPWR_DAT"向DP标准从站/PROFINET IO设备写入连续数据PROFINET关于SFC 112、113和114的信息使用SFC112 "PN_IN"更新PROFINET组件的用户程序接口的输入使用SFC113 "PN_OUT"更新PROFINET组件的PROFINET接口的输出使用SFC114 "PN_DP"更新DP互连用于PROFINET CPU的SFC和SFB使用SFC99 "WWW"启用或同步用户Web页面使用SFB104 "IP_CONF"设置IP组态PROFIenergyFB 815 "PE_START"FB 816 "PE_CMD"FB 817 "PE_I_DEV"FC 0 "PE_ERR"FC 1 "PE_STRT"FC 2 "PE_END"FC 3 "PE_Q_LIST"FC 4 "PE_Q_GET"FC 5 "PE_STAT"FC 6 "PE_IDENT"FC 7 "PE_M_LST"FC 8 "PE_M_V AL"FB 53 "PE_DS3_W"用于根据PNO循环访问用户数据的FB介绍用于根据PNO来循环访问用户数据的FB使用FB20 "GETIO"读取DP标准从站/PROFINET IO设备的所有输入使用FB21 "SETIO"写入DP标准从站/PROFINET IO设备的所有输出使用FB22 "GETIO_PART"读取DP标准从站/PROFINET IO设备的部分输入使用FB23 "SETIO_PART"写入DP标准从站/PROFINET IO设备的部分输出用于全局数据通讯的SFC通过SFC 60"GD_SND"发送GD信息包通过SFC 61 "GD_RCV"编程接受已接收到的GD信息包S7通讯用于已组态S7连接的SFB/FB和SFC/FC的公共参数用于已组态S7连接的通讯SFB的启动例行程序用于已组态S7连接的SFB如何响应故障使用SFB/FB 8"USEND"发送不协调的数据使用SFB/FB 9"URCV"接收不协调的数据使用SFB 12"BSEND"发送分段数据使用SFB 13"BRCV"接收分段数据使用FB 28"USEND_E"发送不协调的数据使用FB 29"URCV_E"接收不协调的数据用FB 34 "GET_E"从远程CPU读取数据使用FB 35 "PUT_E"将数据写入到远程CPU使用SFB 14"GET"从远程CPU中读取数据使用SFB 15"PUT"将数据写入到远程CPU通过SFB 16 "PRINT"将数据发送到打印机通过SFB 19 "START"在远程设备上启动暖启动或冷启动通过SFB 20 "STOP"将远程设备切换到STOP状态通过SFB 21 "RESUME"在远程设备上启动热启动通过SFB 22"STATUS"查询远程伙伴的状态使用SFB 23"USTATUS"接收远程设备的状态使用SFC 62"CONTROL"查询属于一个通讯SFB背景的连接状态通过FC 62 "C_CNTRL"查询连接状态S7基本通讯通讯SFC的公共参数用于未组态S7连接的通讯SFC的错误信息GET和PUT SFC的数据一致性通过SFC 65"X_SEND"发送数据到本地S7站以外的通讯伙伴通过SFC 66 "X_RCV"从本地S7站以外的通讯伙伴中接收数据通过SFC 68 "X_PUT"将数据写入本地S7站以外的通讯伙伴通过SFC 67 "X_GET"从本地S7站以外的通讯伙伴中读取数据通过SFC 69"X_ABORT"中止已存在的、到本地S7站以外的通讯伙伴的连接通过SFC 73 "I_PUT"将数据写入本地S7站内的通讯伙伴通过SFC 72 "I_GET"从本地S7站内的通讯伙伴中读取数据通过SFC 74 "I_ABORT"中止已存在的、到本地S7站内的通讯伙伴的连接用于未组态S7连接的通讯SFC的出错信息通过Industrial Ethernet的开放通讯概述开放通讯的FB如何在Industrial Ethernet上工作使用TCP native和ISO-on-TCP的通讯连接的参数使用UDP的本地通讯接入点的参数使用UDP的远程通讯伙伴地址信息的结构使用的CPU和协议变量(connection_type)和可传送数据长度之间的关系通讯连接的参数分配的实例使用FB 65 "TCON"建立连接使用FB 66 "TDISCON"终止连接使用FB 63 "TSEND"通过TCP native和ISO-on-TCP发送数据使用FB 64 "TRCV"通过TCP native和ISO-on-TCP接收数据使用FB 67 "TUSEND"通过UDP发送数据使用FB 68 "TURCV"通过UDP接收数据通过FB 210 "FW_TCP"经TCP使用FETCH和WRITE服务连接到一个外部系统通过FB 220 "FW_IOT"经ISO on TCP使用FETCH和WRITE服务连接到一个外部系统生成与块相关的消息组态消息关于使用SFB生成块相关消息的介绍使用SFB 36 "NOTIFY"生成无需确认的块相关消息使用SFB 31"NOTIFY_8P"生成不带确认显示的与块相关的消息使用SFB 33 "ALARM"生成需要确认的块相关消息使用SFB 35 "ALARM_8P"生成针对八个信号的伴随值的块相关消息使用SFB 34 "ALARM_8"生成不带8个信号伴随值的与块相关的消息使用SFB 37 "AR_SEND"发送归档数据使用SFC 10 "DIS_MSG"禁用块相关、符号相关和组状态消息使用SFC 9 "EN_MSG"启用块相关、符号相关和组状态消息用于生成块相关消息的SFB的启动特性用于生成块相关消息的SFB如何对问题做出反应关于使用SFC生成块相关消息的介绍使用SFC 17 "ALARM_SQ"生成可确认的块相关消息及使用SFC 18 "ALARM_S"生成永久确认的块相关消息使用SFC 19 "ALARM_SC"查询上一ALARM_SQ/ALARM DQ进入事件消息的确认状态使用SFC 107"ALARM_DQ"和108"ALARM_D"使用SFC 105"READ_SI"使用SFC 106 "DEL_SI"动态释放被占用的系统资源IEC定时器和IEC计数器使用SFB 3 "TP"生成脉冲使用SFB 4 "TON"生成接通延迟使用SFB 5 "TOF"生成断开延迟使用SFB 0 "CTU"递增计数使用SFB 1 "CTD"递减计数使用SFB 2"CTUD"进行递增和递减计数用于集成控制的SFB使用SFB 41 "CONT_C"连续控制使用SFB 42/FB "CONT_S"步进控制使用SFB 43/FB "PULSEGEN"生成脉冲PULSEGEN块的实例用于紧凑型CPU的SFB通过SFB 44 "Analog"使用模拟量输出进行定位通过SFB 46 "DIGITAL"使用数字量输出进行定位使用SFB 47 "COUNT"控制计数器使用SFB 48 "FREQUENC"控制频率计数器使用SFB 49 "PULSE"控制脉宽调制使用SFB 60 "SEND_PTP"发送数据(ASCII,3964(R))使用SFB 61 "RECV_PTP"接收数据(ASCII,3964(R))使用SFB 62 "RES_RECV"复位输入缓冲区(ASCII、3964(R)) 使用SFB 63 "SEND_RK"发送数据(RK 512)使用SFB 64 "FETCH RK"获取数据(RK 512)使用SFB 65 "SERVE_RK"接收和提供数据(RK 512)用于H CPU的SFC在H系统中使用SFC 90 "H_CTRL"控制操作集成的功能(对于具有集成输入/输出的CPU)SFB29 (HS_COUNT)SFB30 (FREQ_MES)SFB38 (HSC_A_B)SFB39 (POS)塑料技术SFC63 (AB_CALL)SFC 0 (SET_CLK) / SFC 1 (READ_CLK)的实例任务解决方案STL源代码SFC 2 (SET_RTM) / SFC 3 (CTRL_RTM) / SFC 4 (READ_RTM)的实例任务解决方案STL源文件SFC 20 (BLKMOV)的实例任务解决方案STL源代码SFC 28 (SET_TINT) / SFC 29 (CAN_TINT) / SFC 30 (ACT_TINT) / SFC 31 (QRY_TINT)的实例任务解决方案STL源文件SFC 32 (SRT_DINT) / SFC 33 (CAN_DINT) / SFC 34 (QRY_DINT)的实例任务解决方案STL源代码SFC 36 (MSK_FLT) / SFC 37 (DMSK_FLT) / SFC 38 (READ_ERR)的实例任务解决方案STL源代码SFC 39 (DIS_IRT) / SFC 40 (EN_IRT)的实例任务解决方案STL源文件SFC 41 (DIS_AIRT) / SFC 42 (EN_AIRT)的实例任务解决方案STL源文件SFC 47 (WAIT)的实例任务解决方案STL源代码SFC 51 (RDSYSST) / SFC 52 (WR_USMSG)的实例任务解决方案STL源文件SFC 55 (WR_PARM)的实例任务STL源文件SFC 57 (PARM_MOD)的实例任务STL源代码SFC 64 (TIME_TCK)的实例STL源代码使用SFC 51 (RDSYSST)进行模块诊断的实例任务解决方案STL源代码诊断数据诊断数据结构概述诊断数据与通道有关的诊断数据结构系统状态列表(SSL)系统状态列表(SSL)概述部分SSL列表的结构SSL-ID可能的部分系统状态列表SSL-ID W#16#xy11 - 模块标识SSL-ID W#16#xy12 - CPU特征SSL-ID W#16#xy13 - 存储区SSL-ID W#16#xy14 - 系统区域SSL-ID W#16#xy15 - 块类型SSL-ID W#16#xy1C - 组件标识SSL-ID W#16#xy22 - 中断状态SSL ID W#16#xy25 - 过程映像分区和OB之间的分配SSL-ID W#16#xy32 - 通讯状态数据SSL-ID为W#16#0132、索引为W#16#0005的部分列表摘录的数据记录SSL-ID为W#16#0132、索引为W#16#0008的部分列表摘录的数据记录SSL-ID为W#16#0132、索引为W#16#000B的部分列表摘录的数据记录SSL-ID为W#16#0132、索引为W#16#000C的部分列表摘录的数据记录SSL-ID为W#16#0232、索引为W#16#0004的部分列表摘录的数据记录SSL-ID W#16#xy71 - H CPU组信息SSL-ID W#16#xy74 - 模块LED的状态SSL-ID W#16#xy75 - H系统中的开关式DP从站SSL-ID W#16#xy90 - DP主站的系统信息SSL-ID W#16#xy91 - 模块状态信息SSL-ID W#16#xy92 - 机架/站状态信息SSL-ID W#16#0x94 - 机架/站的状态信息SSL-ID W#16#xy95 - 扩展的DP主站系统/PROFINET IO信息SSL-ID W#16#xy96 - 模块状态信息PROFINET IO和PROFIBUS DP SSL-ID W#16#xy9C - 工具变换装置信息(PROFINET IO) SSL-ID W#16#xyA0 - 诊断缓冲区SSL-ID W#16#00B1 - 模块诊断信息SSL-ID W#16#00B2 - 带物理地址的诊断数据记录1SSL-ID W#16#00B3 - 对应逻辑基址的模块诊断数据SSL-ID W#16#00B4 - DP从站的诊断数据事件事件和事件ID事件等级1 - 标准OB事件事件等级2 - 同步错误事件等级3 - 异步错误事件等级4 - 停止事件和其它模式更改事件类别5 - 模式运行事件事件等级6 - 通讯事件事件等级7 - H/F事件事件等级8 - 模块的诊断事件事件等级9 - 标准用户事件事件类别A和B - 自由用户事件保留的事件类别数据类型数据类型词汇表词汇表参考书目/30/使用入门:使用STEP 7/70/手册:PLC S7-300,CPU规范,CPU 312 IFM至CPU 318-2 DP及S7-300 CPU 31xC和CPU 31x:技术规范/71/参考手册:S7-300 S7-300模块数据*/72/指令列表:S7-300可编程控制器/101/参考手册:S7-400、M7-400可编程控制器模块规范/102/指令列表:S7-400可编程控制器/231/手册:使用STEP 7配置硬件和通讯连接/232/参考手册:S7-300和S7-400的语句表(STL) /233/参考手册:S7-300和S7-400的梯形图(LAD) /234/手册:使用STEP 7编程/236/参考手册:S7-300和S7-400的功能块图(FBD) /250/手册:用于S7-300和S7-400编程的结构控制语言(SCL)/251/手册:用于S7-300和S7-400的S7-GRAPH,顺序控制系统编程/252/手册:用于S7-300和S7-400的S7-HiGraph,状态图编程/270/手册:用于S7-300和S7-400的S7-PDIAG "组态LAD、STL和FBD的过程诊断"/350/用户手册:SIMATIC 7,标准控制器。
朗风快学PLC(九)西门子S7-300的程序结构OB,FB,FC,DB上篇文章为大家带来了OB,FB,FC,DB之间的关系,这篇文章为大家讲解step7最常用的三种语言,即LAD梯形图,FBD功能块,STL 语句表。
一、梯形图LAD梯形图语言是从常用的继电器与接触器逻辑控制基础上简化了符号演变而来的,具有形象、直观、实用等特点,电气技术人员容易接受,是目前运用上最多的一种PLC的编程语言。
在PLC程序图中,左、右母线类似于继电器与接触器控制电源线,输出线圈类似于负载,输入触点类似于按钮。
梯形图由若干阶级构成,自上而下排列,每个阶级起于左母线,经过触点与线圈,止于右母线。
图1为一段典型的梯形图语言编写的程序。
图1 梯形图语言上图中,“常开点”I0.3、I1.2、I1.1及“常闭点”I0.2串联后,与“常开点”M0.0并联,然后为“线圈”Q4.2供电。
在“继电器与接触器“型电路中,用梯形图编程会显得一目了然,犹如看电气连接图一般。
二、功能块图FBDFBD用方框图的形式来表示控制逻辑,类似于数字逻辑门电路的编程语言。
FBD语言对于有数字电路基础的人来说很容易掌握,该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量;信号也是由左向右流向的,各个功能方框之间可以串联,也可以插入中间信号。
在每个最后输出的前面组合逻辑操作方框数是有限的,同一组逻辑运算的输出结果的数目也要根据操作系统的不同而不同;经过扩展,不但可以表示各种简单的逻辑操作,并且也可以表示复杂的运算、操作功能。
图1的梯形图控制逻辑用FBD编程的话,如图2所示。
图2 FBD语言图2中,方框”&“为“与”运算,“>='为或运算,其真值表如下:图3 真值表FBD语言的编程过程类似于数字电路中用集成模块搭建电路,每个模块都有其自己的功能,根据控制需要,选用合适的模块,用“线”连起来即可。
组织块使用说明1、组织块总览(OB)1.1 什么是组织块?组织块是操作系统和用户程序之间的接口。
OB 用于执行具体的程序:• 在CPU 启动时• 在一个循环或时钟执行时• 当发生故障时• 当发生硬件中断时组织块根据其优先级执行。
1.2 可使用哪些组织块?不是所有的CPU 都能处理STEP 7 中所有的组织块。
至于您使用的CPU 中包括哪些OB, 请参见操作列表/72/和/102/。
何处可以找到更多信息?参见在线帮助和以下手册可以得到更多的信息:• /70/:该手册包含有描述不同S7-300 CPU 功能的技术数据。
• /101/:该手册包含有描述不同S7-400 CPU 功能的技术数据。
下列表格中包含每一个OB 的启动事件及对应的优先级。
OB 启动事件 默认的优先级解释OB1 启动结束或OB1 执行结束 1 自由循环OB10 日期时间中断0 2 没有指定缺省时OB11 日期时间中断1 2 间 OB12 日期时间中断2 2OB13 日期时间中断3 2OB14 日期时间中断4 2OB15 日期时间中断5 2OB16 日期时间中断6 2OB17 日期时间中断7 2OB20 延时中断0 3 没有指定缺省时OB21 延时中断1 4 间 OB22 延时中断2 5OB23 延时中断3 6OB 启动事件 默认的优先级解释OB30 循环中断0(缺省时间间隔:5s) 7 循环中断 OB31 循环中断1(缺省时间间隔:2s) 8OB32 循环中断2(默认时间间隔:1s) 9OB33 循环中断3(默认时间间隔:500ms)10 OB34 循环中断4(默认时间间隔:200ms)11 OB35 循环中断5(默认时间间隔:100ms)12 OB36 循环中断6(默认时间间隔:50ms)13 OB37 循环中断7(默认时间间隔:20ms)14 OB38 循环中断8(默认时间间隔:10ms)15OB40 硬件中断0 16 硬件中断 OB41 硬件中断1 17 OB42 硬件中断2 18 OB43 硬件中断3 19 OB44 硬件中断4 20 OB45 硬件中断5 21 OB46 硬件中断6 22 OB47 硬件中断7 23OB55 状态中断 2 DPV1 中断 OB56 刷新中断2 OB57 制造厂商用特殊中断 2OB60 SFC 35“MP_ALM”调用 25 多处理器中断 OB61 周期同步中断1 25 同步循环中断 OB62 周期同步中断2 25 OB63 周期同步中断3 25 OB64 周期同步中断425OB70 I/O 冗余故障(只对于H CPU) 25 冗余故障中断 OB72 CPU 冗余故障(只对于H CPU) 28 OB73 通讯冗余故障(只对于H CPU) 25OB80 时间故障 26,281) 同步故障中断 OB81 电源故障 25,281) OB82 诊断中断25,281) OB83 模板插/拔中断 25,281) OB84 CPU 硬件故障 25,281) OB85 程序故障25,281) OB86 扩展机架、DP 主站系统或分布式I/O 从站故障 25,281) OB87 通讯故障 25,281) OB88 过程中断28OB90暖或冷启动或删除一个正在OB90 中执行的块或装载一个OB90 到CPU 或中止OB90292)背景循环1-2OB 启动事件 默认的优先级解释 OB100 暖启动 271) 启动 OB101 热启动 271)OB102 冷启动 271)OB121 编程故障 引起故障的OB的同步故障中断OB122 I/O 访问故障 优先级引起故障的OB的优先级1)优先级27 和28 在优先级启动模式中是有效的。
OB、FC、FB、SFC、SFB的区别
S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。
结合起来就能实现一个复杂的控制系统。
就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。
FC运行是产生临时变量执行结束后数据就丢失--------------不具有储存功能
FB运行时需要调用各种参数,于是就产生了背景数据块DB。
例如用FB41来作PID控制,则它的PID控制参数就要存在DB里面。
FB具有储存功能
系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。
SFC与FC 不具有储存功能,FB和SFB具有储存工办。
OB模块相当于主程序,负责调用其他模块。
如果程序简单只需要OB就可以实现。
FB中可以定义静态变量,每个FB可以定义多个背景数据块,来代表同种类型的不同设备。
这样只通过一个功能块就可以完成多个设备的变程。
而FC中不可以定义背景数据块,一般情况下只能使用共享数据块中的数据,但同时也可以通过全局变量定义方式来访问其他背景数据块。
我个人的经验:在有多个类似的设备的时候,尽量抽象出这些设备的共同点,编写一个FB,然后通过FC来挂点或处理一些不同点。