立体仓库PLC控制系统子站诊断功能块
//==============================================
//获取profinet网络已组态站信息
//==============================================
//MODE:0自动辨识是获取组态信息还是错误信息
//MODE:1获取IO 设备从站已组态
//MODE:2获取IO 设备 从站故障
//MODE:3获取IO 设备 从站已禁用
//MODE:4获取IO 设备 从站存在
//MODE:5获取IO 设备 从站出现问题
//==============================================
//站点状态字节位含义
//.X0:站点已组态,MODE=1;
//.X1:站点故障,MODE=2,
//.X2:站点禁用,MODE=3,
//.X3:站点存在,MODE=4;
//.X4:站点出现问题,MODE=5;
//=============================================
//DaigID:
//1~96:PROFINET站点故障
//99:MODE大于5
//98:DrviceStates程序调用错误
//97:RD_SINFO程序调用错误
//==============================================
//设置DrviceStates的MODE,如果MODE为0采用自动判断模式类型
IF #mode = 0 THEN
//获取调用FB的组织块信息
#teSINFO_RET_VAL := RD_SINFO(TOP_SI => #stSI_Top, START_UP_SI => #stSI_Startup);
IF #teSINFO_RET_VAL <> 0 THEN
#teDiagID := 0;
GOTO ERROR;
ELSE
//如果调用块为OB100那么获取组态信息,其它情况获取故障信息
IF #stSI_Top.OB_Nr = 100 THEN
#teMode := 1;
ELSE
#teMode := 2;
END_IF;
END_IF;
ELSE
IF #mode > 5 THEN
#teDiagID := 0;
GOTO ERROR; //大于5为错误;
ELSE
#teMode := #mode;
END_IF;
END_IF;
//获取PROFINET网络设备状态
#teDeviceStatesRET_VAL := DeviceStates(LADDR := #laddr,
MODE := #teMode,
STATE := #stDeviceStates);
IF #teDeviceStatesRET_VAL <> 0 THEN
#teDiagID := 0;
GOTO ERROR;
END_IF;
//将获取的设备位状态转化为字节状态
//获取数组的下限
#teLower := LOWER_BOUND(ARR := #deviceStates, DIM := 1);
//获取数组的上限
#teUpper := UPPER_BOUND(ARR := #deviceStates, DIM := 1);
CASE #teMode OF
1: //.X0:站点已组态,MODE=1;
FOR #teN := #teLower TO #teUpper DO
#deviceStates[#teN].%X0 := #stDeviceStates[#teN];
END_FOR;
2: //.X1:站点故障,MODE=2,
#teErrDeviceNr := 0;
FOR #teN := #teLower TO #teUpper DO
//将故障位转化为字节标志
#deviceStates[#teN].%X1 := #stDeviceStates[#teN];
//如果某一个站有故障记录其站号
//0号站(主站)不进行判断 AND 相应的站点故障状态为1 AND 已经获取到第一个错误站点地址后不进行判断
IF #teN<>0 AND #stDeviceStates[#teN] AND #teErrDeviceNr = 0 THEN
#teErrDeviceNr := #teN;
END_IF;
END_FOR;
IF #teErrDeviceNr <> 0 THEN
#teDiagID := #teErrDeviceNr;
GOTO ERROR;
END_IF;
3: //.X2:站点禁用,MODE=3,
FOR #teN := #teLower TO #teUpper DO
#deviceStates[#teN].%X2 := #stDeviceStates[#teN];
END_FOR;
4: //.X3:站点存在,MODE=4;
FOR #teN := #teLower TO #teUpper DO
#deviceStates[#teN].%X3 := #stDeviceStates[#teN];
END_FOR;
5: //.X4:站点出现问题,MODE=5;
FOR #teN := #teLower TO #teUpper DO
#deviceStates[#teN].%X4 := #stDeviceStates[#teN];
END_FOR;
ELSE
#teDiagID := 0;
GOTO ERROR;
END_CASE;
#err := FALSE;
#errID := 0;
#diagID := 0;
RETURN;
ERROR:
#err := TRUE;
#errID := #progID;
#diagID := #teDiagID;
相关文章:
立体仓库PLC控制系统子站诊断功能块
// //获取profinet网络已组态站信息 // //MODE:0自动辨识是获取组态信息还是错误信息 //MODE:1获取IO 设备从站已组态 //MODE:2获取IO 设备 从站故障 //MODE:3获取IO 设备 从站已禁用 //MODE:4获取IO 设备 从站存在 //MODE:5获取IO 设备 从站出现问题 // //站点状态字节位含义 …...
NFT Insider115:The Sandbox开设元宇宙Diorama快闪店,YGG Web3 游戏峰会已开幕
引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…...
【Redis篇】简述Java中操作Redis的方法
文章目录 🎄简述Jedis🎄Jedis优点🍔使用Jedis连接Redis⭐进行测试🎈进行测试 Redis(Remote Dictionary Server)是一种流行的高性能内存数据库,广泛应用于各种应用程序和系统中。作为Java开发人员…...
深度解读英伟达新一轮对华特供芯片H20、L20、L2的定位
大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 因为一直从事 AI 工…...
一起学docker系列之九docker运行mysql 碰到的各种坑及解决方法
目录 前言1 Docker 运行mysql命令2 坑一:无法读取/etc/mysql/conf.d目录的问题3 坑二:/tmp/ibnr0mis 文件无法创建/写入的问题4 坑三:Navicat 连接错误(1045-access denied)5 坑四:MySQL 登录失败问题结语 …...
利用Nginx与php处理方式不同绕过Nginx_host实现SQL注入
目录 首先需要搭建环境 nginxphpmysql环境: 搭建网站 FILTER_VALIDATE_EMAIL 绕过 方法1:冒号号分割host字段 方法2:冒号号分割host字段 方法3:SNI扩展绕过 首先需要搭建环境 nginxphpmysql环境: php安装包&a…...
分割list 批量插入数据指定条数数据
一、代码层面切割好list,然后插入 // package org.apache.commons.collections4; 先将list切成1000条一份 List<List<DeptDO>> p1 ListUtils.partition(deptList, 1000); for (List<DeptDO> deptDOS : p1) { // 1000条一次批量插入systemDeptMa…...
Arduino库之 LedControl 库说明文档
LedControl 库最初是为基于 8 位 AVR 处理器的 Arduino 板编写的。用于通过MAX7219芯片控制LED矩阵和7段数码管。但由于该代码不使用处理器的任何复杂的内部功能,因此具有高度可移植性,并且应该在任何支持 和 功能的 Arduino(类似)…...
Hadoop学习总结(MapReduce的数据去重)
现在假设有两个数据文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重复数据&…...
ctfshow sql
180 过滤%23 %23被过滤,没办法注释了,还可以用’1’1来闭合后边。 或者使用--%0c-- 1%0corder%0cby%0c3--%0c--1%0cunion%0cselect%0c1,2,database()--%0c--1%0cunion%0cselect%0c1,2,table_name%0cfrom%0cinformation_schema.tables%0cwhere%0ctable_…...
Java实现求最大值
1 问题 接收用户输入的3个整数,如何将最大值作为结果输出。 2 方法 采用“截图文字代码”的方式描述。 引入输入包调用main()函数,提示并接收用户输入的3个整数,并交由变量a b c来保存。对接收的3个数据进行比较,先比较a和b&#…...
NX二次开发UF_CURVE_ask_curve_inflections 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_inflections Defined in: uf_curve.h int UF_CURVE_ask_curve_inflections(tag_t curve_eid, double proj_matrx [ 9 ] , double range [ 2 ] , int * num_infpt…...
一个基于RedisTemplate静态工具类
每次是用RedisTemplate的时候都需要进行自动注入实在是太麻烦了,于是找到一个讨巧的办法。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.…...
【计算机网络笔记】数据链路层——差错编码
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
js生成pdf并自动上传
1.生成pdf前要让js选中生成pdf部分的dom <div id"printPageFirst"> pdf内容区 </div> 2.使用两个插件,import到项目里,然后是获取dom进行生成pdf操作 import html2canvas from html2canvas import JsPDF from jspdf function cr…...
高品质MP3音频解码语音芯片WT2003Hx的特征优势与应用场景
在现代化科技快速发展的时代,高品质音频语音芯片在各个领域的应用越来越广泛。唯创知音推出的高品质MP3音频语音芯片WT2003Hx,凭借其出色的特性与优势,赢得了市场的广泛认可。本文将详细介绍WT2003Hx的特征优势以及其在各个领域的应用场景。 …...
浅析linux中的信号
人们往往将信号称为“软件中断”,它提供了异步事件的处理机制,这些事件可以来自系统外部(如用户按下ctrlc产生中断符),也可能来自程序或者内核内部的执行动作(如进程除零操作)。进程收到信号&am…...
从0开始学习JavaScript--JavaScript数据类型与数据结构
JavaScript作为一门动态、弱类型的脚本语言,拥有丰富的数据类型和数据结构,这些构建了语言的基础,为开发者提供了灵活性和表达力。本文将深入探讨JavaScript中的各种数据类型,包括基本数据类型和复杂数据类型,并介绍常…...
数据结构与算法编程题20
统计二叉树的叶结点个数。 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 typedef struct BiNode {ElemType data;BiNode* lchild, * rchild; }BiNode,*BiTree;bool Create_tree(BiTre…...
FreeRTOS源码阅读笔记5--mutex
互斥量是一种特殊的二值信号量,拥有优先级继承的机制,所以适合用在临界资源互斥访问。 5.1创建互斥量xSemaphoreCreateMutex() 5.1.1函数原型 5.1.2函数框架 5.2创建递归互斥量xSemaphoreCreateRecursiveMutex() 5.2.1函数原型 5.2.2函数框架 xSemaph…...
告别C盘搬家!用mklink命令把任意文件夹塞进OneDrive同步(Windows 10/11保姆级教程)
彻底解放存储空间:用mklink实现OneDrive全盘同步的终极指南 你是否遇到过这样的困扰:C盘空间频频告急,而OneDrive却只能同步那几个默认文件夹?重要的工作文档散落在D盘、E盘甚至移动硬盘里,每次手动备份都让人抓狂。今…...
Qianfan-OCR一文详解:InternViT视觉编码器对复杂版式文档的建模优势
Qianfan-OCR一文详解:InternViT视觉编码器对复杂版式文档的建模优势 1. 项目概述 Qianfan-OCR是百度千帆推出的开源端到端文档智能多模态模型,基于4B参数的Qwen3-4B语言模型构建,采用Apache 2.0协议完全开源。该模型创新性地将传统OCR流水线…...
别再手敲系数了!用Matlab Filter Designer一键生成Vivado FIR IP核的COE文件
从Matlab到Vivado:FIR滤波器设计全流程自动化实践 在FPGA信号处理系统开发中,FIR滤波器的实现往往需要跨越多个工具链的鸿沟。传统的手动计算、量化系数并编写COE文件的方式不仅效率低下,还容易引入人为错误。本文将展示如何利用Matlab Filte…...
nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置
nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置 1. 服务概述与核心功能 nli-MiniLM2-L6-H768是一款基于自然语言推理(NLI)的轻量级服务,专门用于判断两个句子之间的逻辑关系。该服务采用Hugging Face开源的cross-encoder/nli-MiniLM2-L…...
CSS如何处理SSR中CSS引入_在服务端渲染时提取关键CSS
服务端渲染时import的CSS未内联,因Webpack/Vite默认不提取;需用mini-css-extract-plugin(Webpack)或vite-plugin-css-injected-by-js(Vite)配合服务端收集并注入CSS字符串到HTML的<head>中。服务端渲…...
Docker容器监控配置实战:从零搭建Prometheus+Grafana全链路监控(含完整YAML模板)
第一章:Docker容器监控配置实战:从零搭建PrometheusGrafana全链路监控(含完整YAML模板)环境准备与依赖安装 确保宿主机已安装 Docker 和 docker-compose v2.20。运行以下命令验证: # 检查版本 docker --version docker…...
别再死记硬背了!用这5个真实案例,彻底搞懂ABAP CDS里最让人头疼的语义注解(@Semantics)
别再死记硬背了!用这5个真实案例,彻底搞懂ABAP CDS里最让人头疼的语义注解(Semantics) 在ABAP CDS开发中,语义注解(Semantics)就像是一把双刃剑——用对了能让数据自解释,用错了则会…...
Linux服务器无网络?手把手教你离线安装Ollama大模型(附自启动配置)
Linux服务器离线部署Ollama大模型全指南 在企业内网或特殊网络环境下,Linux服务器管理员常常面临无法直接联网安装软件的困境。本文将详细介绍如何在没有互联网连接的情况下,完成Ollama大模型的离线安装和配置,解决实际运维中可能遇到的各类问…...
【Dify文档解析配置终极指南】:20年AI工程专家亲授5大避坑法则与3步高效落地法
第一章:Dify文档解析配置的核心原理与演进脉络Dify 的文档解析配置并非简单的文件读取管道,而是融合语义感知、结构自适应与上下文对齐的多阶段处理范式。其核心原理建立在“分块—嵌入—索引—对齐”四层抽象之上:原始文档经格式识别&#x…...
STM32引脚不够用?实战分享:如何安全“征用”SWD调试口做I2C或GPIO(HAL库版)
STM32引脚资源紧张?实战解析SWD调试口的高效复用技巧 当你在设计一个物联网传感器节点时,突然发现所有GPIO引脚都已用完,而项目又需要连接多个I2C传感器——这种场景对于使用STM32F1等引脚资源紧张型号的开发者来说并不陌生。面对这种困境&am…...
