输入输出自定义映射矩阵(数据结构树)

输出自定义FC其它算法实现,可以参考下面文章:

https://rxxw-control.blog.csdn.net/article/details/125994252icon-default.png?t=N7T8https://rxxw-control.blog.csdn.net/article/details/125994252下面我们看下我们的控制要求。在学习本篇博客之前大家可以熟悉下数据结构图的概念和存储知识,链接如下:

https://rxxw-control.blog.csdn.net/article/details/131797993icon-default.png?t=N7T8https://rxxw-control.blog.csdn.net/article/details/131797993

1、映射矩阵

下面我们一步步分析代码如何编写,

2、实现不了

上面的代码看着简单清爽,不过没什么用实现不了我们需要的功能。

下面利用数据结构里的树来分析我们的问题

3、数据结构-树

分析其中的根节点"OUT0。

4、根节点"OUT0"

根节点的输出条件我们知道了,8个AND 和7个OR完成,边的存储我们借助博途里的2维矩阵实现。

5、自定义映射FB

下面我们给出完整SCL代码,大家可以尝试进一步优化此代码,以并适应不同的矩阵大小。

6、完整SCL代码

FUNCTION_BLOCK "FB_DO_MapMartiex"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1VAR_INPUT Input : Array[0..7] of Bool;   // 输入信号END_VARVAR_OUTPUT Out : Byte;   // 输出信号END_VARVAR MapMartiex : Array[0..7, 0..7] of Bool;   // 输出设置映射矩阵 关系矩阵END_VARBEGIN//输出自定义映射矩阵//RXXW_Dor//2024-02-16//DO0#Out.%X0 :=(#Input[0] AND #MapMartiex[0, 0])OR (#Input[1] AND #MapMartiex[1, 0])OR (#Input[2] AND #MapMartiex[2, 0])OR (#Input[3] AND #MapMartiex[3, 0])OR (#Input[4] AND #MapMartiex[4, 0])OR (#Input[5] AND #MapMartiex[5, 0])OR (#Input[6] AND #MapMartiex[6, 0])OR (#Input[7] AND #MapMartiex[7, 0]);//DO1       #Out.%X1 :=(#Input[0] AND #MapMartiex[0, 1])OR (#Input[1] AND #MapMartiex[1, 1])OR (#Input[2] AND #MapMartiex[2, 1])OR (#Input[3] AND #MapMartiex[3, 1])OR (#Input[4] AND #MapMartiex[4, 1])OR (#Input[5] AND #MapMartiex[5, 1])OR (#Input[6] AND #MapMartiex[6, 1])OR (#Input[7] AND #MapMartiex[7, 1]);//DO2        #Out.%X2 :=(#Input[0] AND #MapMartiex[0, 2])OR (#Input[1] AND #MapMartiex[1, 2])OR (#Input[2] AND #MapMartiex[2, 2])OR (#Input[3] AND #MapMartiex[3, 2])OR (#Input[4] AND #MapMartiex[4, 2])OR (#Input[5] AND #MapMartiex[5, 2])OR (#Input[6] AND #MapMartiex[6, 2])OR (#Input[7] AND #MapMartiex[7, 2]);//DO3#Out.%X3 :=(#Input[0] AND #MapMartiex[0, 3])OR (#Input[1] AND #MapMartiex[1, 3])OR (#Input[2] AND #MapMartiex[2, 3])OR (#Input[3] AND #MapMartiex[3, 3])OR (#Input[4] AND #MapMartiex[4, 3])OR (#Input[5] AND #MapMartiex[5, 3])OR (#Input[6] AND #MapMartiex[6, 3])OR (#Input[7] AND #MapMartiex[7, 3]);//DO4#Out.%X4 :=(#Input[0] AND #MapMartiex[0, 4])OR (#Input[1] AND #MapMartiex[1, 4])OR (#Input[2] AND #MapMartiex[2, 4])OR (#Input[3] AND #MapMartiex[3, 4])OR (#Input[4] AND #MapMartiex[4, 4])OR (#Input[5] AND #MapMartiex[5, 4])OR (#Input[6] AND #MapMartiex[6, 4])OR (#Input[7] AND #MapMartiex[7, 4]);//DO5#Out.%X5 :=(#Input[0] AND #MapMartiex[0, 5])OR (#Input[1] AND #MapMartiex[1, 5])OR (#Input[2] AND #MapMartiex[2, 5])OR (#Input[3] AND #MapMartiex[3, 5])OR (#Input[4] AND #MapMartiex[4, 5])OR (#Input[5] AND #MapMartiex[5, 5])OR (#Input[6] AND #MapMartiex[6, 5])OR (#Input[7] AND #MapMartiex[7, 5]);//DO6#Out.%X6 :=(#Input[0] AND #MapMartiex[0, 6])OR (#Input[1] AND #MapMartiex[1, 6])OR (#Input[2] AND #MapMartiex[2, 6])OR (#Input[3] AND #MapMartiex[3, 6])OR (#Input[4] AND #MapMartiex[4, 6])OR (#Input[5] AND #MapMartiex[5, 6])OR (#Input[6] AND #MapMartiex[6, 6])OR (#Input[7] AND #MapMartiex[7, 6]);//DO7#Out.%X7 :=(#Input[0] AND #MapMartiex[0, 7])OR (#Input[1] AND #MapMartiex[1, 7])OR (#Input[2] AND #MapMartiex[2, 7])OR (#Input[3] AND #MapMartiex[3, 7])OR (#Input[4] AND #MapMartiex[4, 7])OR (#Input[5] AND #MapMartiex[5, 7])OR (#Input[6] AND #MapMartiex[6, 7])OR (#Input[7] AND #MapMartiex[7, 7]);END_FUNCTION_BLOCK

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

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

相关文章

Qt Creator 继承分文件编写代码流程实现简单案列

Qt Creator 继承分文件流程实现简单案列 打开Qt Creator&#xff0c;新建c项目 添加类 完成之后&#xff0c;会自动生成.h和.cpp文件 一、animal.h文件 主要用来写类&#xff0c;包括成员变量和函数 #ifndef ANIMAL_H #define ANIMAL_H #include <iostream> #inclu…

牛客网SQL进阶123:高难度试卷的得分的截断平均值

官网链接&#xff1a; SQL类别高难度试卷得分的截断平均值_牛客题霸_牛客网牛客的运营同学想要查看大家在SQL类别中高难度试卷的得分情况。 请你帮她从exam_。题目来自【牛客题霸】https://www.nowcoder.com/practice/a690f76a718242fd80757115d305be45?tpId240&tqId2180…

挑战杯 python的搜索引擎系统设计与实现

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python的搜索引擎系统设计与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;5分创新点&#xff1a;3分 该项目较为新颖&#xff…

SpringCloud之Feign发送Http请求

文章目录 http客户端Feign使用步骤自定义Feign的配置Feign的性能优化Feign的性能优化-连接池配置 Feign的最佳实践 http客户端Feign Feign的介绍&#xff1a; Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;https:/github.com/OpenFeign/feign 其作用就是帮助…

函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数

1. 什么是递归&#xff1f; 递归其实是一种解决问题的方法&#xff0c;在C语言中&#xff0c;递归就是函数自己调用自己。 下面是一个最简单的C语言递归代码&#xff1a; #include <stdio.h> int main() {printf("hehe\n");main();//main函数中⼜调⽤了main函数…

多线程面试题汇总

多线程面试题汇总 一、多线程1、线程的生命周期2、线程的创建&#xff08;函数创建&#xff09;3、线程的创建&#xff08;使用类&#xff09;4、守护线程 二、全局解释器锁1、使用单线程实现累加到5000000002、使用多线程实现累加到5000000003、总结 三、线程安全1、多线程之数…

Fiddler抓包(网页、手机、MUMU模拟器)

前置条件&#xff1a;电脑上下载安装好了Fiddler&#xff0c;有浏览器 一、网页抓包 1、fiddler下载安装证书 Tools-Options 勾选下面两个框 点击下面的选项&#xff0c;信任证书 会弹出弹窗&#xff0c;点击yes&#xff08;这个时候注意&#xff0c;DO_NOT_TRUST_FiddlerRo…

【Linux网络编程六】服务器守护进程化Daemon

【Linux网络编程六】服务器守护进程化Daemon 一.背景知识&#xff1a;前台与后台二.相关操作三.Linux的进程间关系四.自成会话五.守护进程四步骤六.服务器守护进程化 一.背景知识&#xff1a;前台与后台 核心知识就是一个用户在启动Linux时&#xff0c;都会给一个session会话&a…

Open AI 王炸,新Sora模型 一句话生成 1 分钟视频,效果接近实拍。

自从Openai推出了Chatgpt&#xff0c;彻底拉开了AI革命的序幕&#xff0c;我们见证了越来越多AI产品的兴起&#xff0c; 以前只敢想一想的东西&#xff0c;到现在真的变成了现实。 就比如前段时间刚刚发售的 Vision Pro 人们甚至戴上眼镜就可以实现办公&#xff0c;只要动一动…

基于Java (spring-boot)和微信小程序的奶茶点餐小程序

一、项目介绍 基于Java (spring-boot)和微信小程序的奶茶点餐小程序功能&#xff1a;客户端登录、个人中心、点餐、选规格、去结算、取餐、我的信息、管理员登录、管理员首页、用户管理、商品管理、商品编辑、商品种类、订单管理、订单处理、等等等。 适用人群&#xff1a;适合…

安装 Windows Server 2019

1.镜像安装 镜像安装:Windows Server 2019 2.安装过程(直接以图的形式呈现) 先选择""我没有产品密钥"",选择桌面体验 选择自定义 设置密码后继续 安装成功

计网物理层

通信基础 基本概念 物理层解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是指具体的传输媒体。 其主要任务是确定与传输媒体接口有关的一些特性&#xff0c;即定义标准。 机械特性&#xff1a;定义物理连接的特性&#xff0c;规定物理连接时所采用的…