业以太网:西门子PROFINET诊断功能SFC12-OB86-SFB20概览
【OB86配合SFC12在PROFINET诊断中的应用】
OB86是机架故障组织块,操作系统在检测到下列PN系统故障时将调用OB86:
1、检测到PROFINET IO设备故障,故障产生和消失时分别调用一次OB86;
2、使用SFC12“D_ACT_DP”的模式4禁止一个PROFINET IO或PROFIBUS DP站时;
3、使用SFC12“D_ACT_DP”的模式3激活一个PROFINET IO或PROFIBUS DP站时;
4、检测到PROFINET IO系统、PROFINET IO设备或PROFINET IO设备的某些子模块的故障。
【PROFINET诊断故障可能进一步触发SFB20】
1、SFB20的作用:如果S7/M7-300/400或C7-300 CPU处于RUN、HALT操作模式或正在启动,则该功能块将触发这些模块的停机(STOP)功能;
2、应对方法:检查你的程序,程序中的控制逻辑调用了SFB20。即,在SFB20 “STOP”的控制输入REQ上有上升沿,则将由ID寻址的远程设备切换到STOP模式。看看是什么条件触发了REQ;
3、详见《S7-300400的系统软件和标准功能》中的19.12通过SFB 20“STOP”将远程设备切换到STOP状态。
【通过对OB86的编程,可以用人机界面画面上的指示灯显示PROFINET IO设备的状态】
假设CPU为CPU 315-2PN/DP,以太网上有6个IO设备号分别为1~6的PROFINET IO设备。在SIMATIC管理器中生成一个人机界面(HMI)的站点,在网络组态工具NetPro中,将CPU和HMI连接到以太网上。双击HMI站点中的“画面_1”,打开WinCC flexible的项目,在画面上生成6个指示灯。在PLC的程序中用M10.1~M10.6来控制HMI画面上的6个PROFINET IO设备的状态指示灯。有故障的IO设备的存储器位为1状态,指示灯点亮。OB86的局部变量OB86_EV_CLASS(LB0)为16#39、16#38分别表示故障出现和消失。故障代码OB86_FLT_ID(LB1)为16#CA表示PROFINET IO系统故障。OB86_FLT_ID为16#CB表示PROFINET IO设备故障或故障消失。此时OB86_RESERVED_1为16#C4,OB86_Z23(LD8)的第0~第10位为IO设备号,第11~第14位为IO系统的ID(编号),该项目只有一个PROFINET IO系统。根据上述信息可以控制显示故障IO设备状态的指示灯。
【OB86示例程序】
下面是OB86中的程序。出现PROFINET IO系统故障时(LW0为16#39CA),将16#7E送MB10,M10.1~M10.6全部被置为1,点亮所有的PROFINET IO设备的故障指示灯。某个PROFINET IO设备出现故障时(LW0为16#39CB),将故障IO设备的编号和M10.0的地址相加,计算出故障IO设备对应的地址,然后用间接寻址将对应的M位置位,点亮故障IO设备对应的指示灯。某个PROFINET IO设备故障消失时(LW0为16#38CB),用同样的方法计算出故障IO设备对应的地址,然后用间接寻址将对应的M位复位,熄灭故障IO设备对应的指示灯。
A(
L W#16#39CA
L LW 0
==I
)
JCN m001 //不是PROFINET IO系统故障出现则跳转
L B#16#7E //令MB10的第1~第6位为1
T MB 10 //点亮1~6号IO设备的指示灯
m001: A(
L W#16#39CB
L LW 0
==I //PROFINET IO设备故障出现时比较条件满足
)
A(
L B#16#C4
L #OB86_RESERVED_1 //再次确认
==I
)
JCN m002 //不是PROFINET IO设备故障出现则跳转
L LD 8 //装载OB86_Z23
L 2#11111111111
AW //提取故障IO设备编号
L P#10.0 //起始地址送累加器1
+D
T LD 20 //故障IO设备对应的存储器位地址送地址指针
S M [LD 20] //点亮故障IO设备对应的指示灯
m002: A(
L W#16#38CB
L LW 0
==I //PROFINET IO设备故障消失时比较条件满足
)
A(
L B#16#C4
L #OB86_RESERVED_1 //再次确认
==I
)
JCN m003 //不是IO设备故障消失则跳转
L LD 8 //装载OB86_Z23
L 2#11111111111
AW //提取故障IO设备编号
L P#10.0 //起始地址送累加器1
+D
T LD 20 //故障IO设备对应的存储器位地址送地址指针
R M [LD 20] //熄灭故障IO设备对应的指示灯
m003: NOP 0
最新文章
- [原创]-bash: iostat: command not found解决办法
- ngix代理-- 摘抄
- Padrino 生成器指南
- Apache Shiro 使用手册(四)Realm 实现
- 搭建openvpn 未完成。。。
- Effective C++笔记:实现
- QQ宠物吹泡泡游戏小助手 VC++6.0代码分析
- exit和abort都是用来终止程序的函数
- Android软件开发之常用系统控件界面整理
- 转:git教程 ~~非常好的入门教程
- Javascript多线程引擎(五)
- mycat 配置全局表
- java 解析excel
- 前端javascript如何阻止按下退格键页面回退 但 不阻止文本框使用退格键删除文本
- HDU - 3035 War(对偶图求最小割+最短路)
- 关于spark中DatatFrame函数操作中isin方法的使用
- 关于Chrome 67 以后版本无法离线安装扩展的解决方法
- es6 Proxy
- python 网络下载的三种风格 未完成
- 【HTML5】HTML5的自学路线
热门文章
- WPF RenderTransform的使用
- 在vs2015上使用asp.net core+ef core
- 关于WPF后台触发键盘按键
- Mono.Cecil - 0.6
- 零元学Expression Blend 4 - Chapter 16 用实例了解互动控制项「Button」II
- 微信小程序把玩(三十九)navigation API
- LINE_NO in format of XXXX example ->; Line 10 is 0010
- 如何替换Windows的Shell(即explorer.exe)
- Qt实现长文件名(字符串)在QLabel中自适应缩短
- PNG透明窗体全攻略(控件不透明)