【西门子PLC.博途】——面向对象编程及输入输出映射FC块

当我们做面向对象编程的时候,需要用到输入输出的映射。这样建立的变量就能够被复用,从而最大化利用了我们建立的udt对象。

下面就来讲讲映射是什么。

从本质上来说,映射就是拿实际物理对象对应程序虚拟对象,假设程序对象是I0.0(某个报警信号),那么它对应的实际物理对象可以是电机1的轴报警信号,或者电机2的轴报警信号;或者程序对象是I0.1,程序中定义气为气缸原点信号,那么它可以被映射到这个磁性开关的2芯的信号线的其中一根或者三芯信号线的其中一根。

以上是为了说明什么呢?就是为了表达,我程序中就是只定义一个变量来表示电机报警或者原点信号,我不管你物理世界中是电机1还是电机2(报警信号不是相同的IO点),或者是磁性开关2芯或者3芯的区别,都跟我没关系,从而减少了修改量,这样就减少了出错,只需要修改电气图纸接线方式即可。

那么讲到面向对象,我们一般都会讲到在博途中的一个PLC数据类型,他是一个结构体。当然,之前也介绍过在松下建立自定义类型

图片

当要建立一个udt类型时,点击添加芯数据类型即可。假设我们这里建立一个电机的udt对象(或者可以建立HMI的udt对象)。

图片

然后我们建立变量如下

图片

大家可以自己根据使用情况(一般电机的普适场景下的变量,都可以往这里面加)。那么之后使用像讲松下那篇文章讲的,我们就可以有几个电机,就定义一个电机数组即可。

图片

那么以上可能会不直观,所以可以在变量表中创建常量来做一个变量的表示。

图片

然后使用的时候可以这么做

图片

图片

图片

//输入映射
"测试数据".电机组["上料模组电机"]."电机jog+" := "I00" AND "I02";
//上料模组电机等同于0,I02为急停信号,一般是常闭,这里为电机jog+映射了这么一个逻辑关系,表明,之后只要写"测试数据".电机组["上料模组电机"]."电机jog+" ,就说明既有jog+和急停没按下去
"测试数据".电机组["上料模组电机"]."电机jog-" := "I01" OR "HMIjog-";
//以上表示按按钮和按触摸屏都是一样的效果,都能够给电机产生jog-的效果。
//总结:以上就说明输入映射是指:这个给到外部的类型是"测试数据".电机组["上料模组电机"]."电机jog+" 但是它内部的逻辑是我们可以来定义的。
//即,不管外面怎么接,是I01或者I02,只要我这么整,之后我的程序都是使用"测试数据".电机组["上料模组电机"]."电机jog+" 那么我只需要改映射就好了//输出映射
"Q01" := "测试数据".电机组["上料模组电机"].电机使能;//这里的表示就是,我给到的输出信号表示是"测试数据".电机组["上料模组电机"].电机使能
//我外部怎么接,比如是Q02也无所谓,到时候程序只需要修改此映射就行。

面向对象的好处,大概就是最大化减少修改量,同时对模型进行抽象化吧。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC服务质量(04)- 重传机制(01) RTX NACK概述

WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…

MySQL索引的理解

MySQL与磁盘的交互 根据冯诺依曼结构体系,我们知道我们任何上层的应用想要去访问磁盘就必须要通过内存来访问,MySQL作为一款储存数据的服务,肯定是很多时间要用来访问磁盘。而大量访问磁盘一定会影响运行效率的在innoDB的存储引擎下为了减少…

spring集成ehcache

目录 一、前言二、使用ehcache注解方式2.1、配置2.2、使用示例三、直接读取xml方式3.1、配置3.2、使用示例3.3、结果说明一、前言 问题背景:一些业务场景中,一些数据往往是长期不变更,但数据使用较多。为了满足系统性能需要,可以借助本地缓存去使用,保证同一个JVM实例只保…

分布式全文检索引擎ElasticSearch-数据的写入存储底层原理

一、数据写入的核心流程 当向 ES 索引写入数据时,整体流程如下: 1、客户端发送写入请求 客户端向 ES 集群的任意节点(称为协调节点,Coordinating Node)发送一个写入请求,比如 index(插入或更…

前端解析超图的iserver xml

前端解析超图的iserver xml const res await axios.get(url)const xmlDom new DOMParser().parseFromString(res.data, text/xml);// 获取versionconst version xmlDom.getElementsByTagNameNS(*, ServiceTypeVersion)[0].textContent// 获取layerconst layerDom xmlDom.ge…

Maven 生命周期

文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期: Clean 生命周期: clean:删除目标目录中的编译输出文件。这通常是在构建之前执行的,以确保项目从一个…

Android Studio AI助手---Gemini

从金丝雀频道下载最新版 Android Studio,以利用所有这些新功能,并继续阅读以了解新增内容。 Gemini 现在可以编写、重构和记录 Android 代码 Gemini 不仅仅是提供指导。它可以编辑您的代码,帮助您快速从原型转向实现,实现常见的…

倒排单词C++

描述 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。 输入描述 输入为一个字符串(字符串长度至多为100)。 输出描述 共一行,…

#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍04-盲SQL注入(Blind SQL Injection)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Scala 的迭代器

迭代器定义:迭代器不是一种集合,它是一种用于访问集合的方法。 迭代器需要通过集合对应的迭代器调用迭代器的方法来访问。 支持函数式编程风格,便于链式操作。 创建一个迭代器,相关代码如下: object Test {def mai…

Spring整合Redis基本操作步骤

Spring 整合 Redis 操作步骤总结 1. 添加依赖 首先&#xff0c;在 pom.xml 文件中添加必要的 Maven 依赖。Redis 相关的依赖包括 Spring Boot 的 Redis 启动器和 fastjson&#xff08;如果需要使用 Fastjson 作为序列化工具&#xff09;&#xff1a; <!-- Spring Boot Re…

底层理论基础(单片机)

计算机基础 IO逻辑 计算机系统中的高低电平逻辑1和0&#xff0c;数据在计算机中的存储、传输、运算都是以二进制形式进行的。 数据的传输通过总线真正传递的是电信号&#xff0c;高低电平&#xff08;0、1&#xff09;。运算在电路中进行&#xff0c;集成电路中运算。 计算机的…

深入浅出支持向量机(SVM)

1. 引言 支持向量机&#xff08;SVM, Support Vector Machine&#xff09;是一种常见的监督学习算法&#xff0c;广泛应用于分类、回归和异常检测等任务。自1990年代初期由Vapnik等人提出以来&#xff0c;SVM已成为机器学习领域的核心方法之一&#xff0c;尤其在模式识别、文本…

docker安装Redis、docker使用Redis、docker离线安装redis、Redis离线安装

服务器到期了&#xff0c;换了一个新的环境要重搭&#xff0c;就记录一下好了&#xff1a; -----docker在线安装Redis 拉取 Redis 镜像 docker pull redis:6.2 运行 Redis 容器 docker run --name redis -d redis docker run --name redis -d redis:6.2 映射端口 docker run -…

初探Java的双冒号运算符

什么是双冒号运算符 双冒号运算符 :: 是在 Java 8 中实现的一个新特性——方法引用。它能使用我们将方法作为一个参考传递到其他的方法中。它能将简化超级长的代码&#xff0c;提高代码可读性。 基本格式&#xff1a; ClassName::methodName双冒号运算符不会调用方法&#x…

B站bilibili视频转文字字幕下载方法

本文将讲述介绍一种使用本地工具如何快速的下载B站的字幕为本地文本文件的方法。 通常获取B站字幕需要在浏览器中安装第三方插件&#xff0c;通过插件获取字幕。随着大模型&#xff0c;生成式AI&#xff0c;ChatGPT的应用&#xff0c;B站也提供了AI小助手对视频的内容进行总结…

ROS+PX4+Gazebo仿真环境配置全流程解析

上一期文章介绍了我们即将发布的仿真平台&#xff0c;并提到后续需要在Ubuntu系统上进行PX4软件在环仿真。本期文章将为大家详细介绍如何配置Ubuntu环境以及安装ROS和PX4仿真环境。具体配置包括&#xff1a;Ubuntu 20.04 ROS Noetic PX4 Python3。 需要注意的是&#xff0c…

【操作系统】为什么需要架构裁剪?

为什么需要架构裁剪&#xff1f; 原因 减小核心大小提高架构初始化速度降低内存占用提高系统性能移除不需要的功能&#xff0c;增加安全性 裁剪方法 初始化配置设置功能模块化移除不需要的驱动底层 一般裁剪对象&#xff08;以操作系统为例&#xff09; 文件系统的支持网…

鸿蒙app封装 axios post请求失败问题

这个问题是我的一个疏忽大意&#xff0c;在这里记录一下。如果有相同问题的朋友&#xff0c;可以借鉴。 当我 ohpm install ohos/axios 后&#xff0c;进行简单post请求验证&#xff0c;可以请求成功。 然后&#xff0c;我对axios 进行了封装。对axios 添加请求拦截器/添加响…

基础入门-APP应用微信小程序原生态开发H5+Vue技术WEB封装打包反编译抓包点

知识点&#xff1a; 1、基础入门-APP应用-开发架构安全问题 2、基础入门-小程序应用-开发架构安全问题 通用&#xff1a; 1、反编译-得到源码-源码提取资产&#xff08;泄漏的配置信息&#xff09;-安全测试 2、抓包-资产-安全测试 一、演示案例-移动App-开发架构-原生&H…