当前位置: 首页 > news >正文

[Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明

官方说明

 

功能说明

参数

类型

功能

 pbyDataSrcPOINTER TO BYTE指向源数组指针
uiSizeUINT要移动数据的BYTE数
pbyDataDesPOINTER TO BYTE指向目标数组指针

实例应用-ST

IF SYSTEM_CLOCK.AlwaysTrue THENCASE iAutoState OF0:  //读写完成信号在下次读写信号的上升沿或复位信号的下降沿清除ClearRtrig(CLK:=(ReadCmd OR WriteCmd)AND OPMODE.User_Interface_OUT.Reset=FALSE,Q=>TrigClearQ);IF TrigClearQ THENRW_Done:=FALSE;RFID_ReadCmd_Mid:=FALSE;RFID_WriteCmd_Mid:=FALSE;iStartAddrChangebale:=0;RfidBaseReset:=TRUE;END_IFIF RW_Done=FALSE AND iRfidBaseState=10 AND iStartAddrChangebale=0 THENRfidBaseReset:=FALSE;iAutoState:=5;END_IF	5:IF ReadCmd=TRUE AND WriteCmd=FALSE AND TagPresent=TRUE AND RWHeadNotConnected=FALSE AND RfidErr=FALSE  THENRFID_ReadCmd_Mid:=TRUE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=10;ELSIF ReadCmd=FALSE AND WriteCmd=TRUE  AND TagPresent=TRUE AND RWHeadNotConnected=FALSE AND RfidErr=FALSE THENiAutoState:=100;ELSIF (ReadCmd=TRUE OR WriteCmd=TRUE)  AND TagPresent=FALSE THENRFID_ReadCmd_Mid:=FALSE;RFID_WriteCmd_Mid:=FALSE;TagNotExitAlarm:=TRUE;iAutoState:=200;ELSIF  (ReadCmd=TRUE OR WriteCmd=TRUE)  AND RWHeadNotConnected=TRUE THENRFID_ReadCmd_Mid:=FALSE;RFID_WriteCmd_Mid:=FALSE;RfidNotHeaderAlarm:=TRUE;iAutoState:=200;END_IF10://RFID DATA READ CONTROLIF Done=TRUE AND RfidErr=FALSE THENiStartAddrChangebale:=iStartAddr;BMOV(pbyDataSrc:=pRdSrcMid , uiSize:=128 , pbyDataDes:=pRdOne);ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENiAutoState:=20;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF20:IF GeneralAlarm=FALSE AND RFID_ReadCmd_Mid=TRUE AND RFID_WriteCmd_Mid=FALSE THENRFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;ELSIF GeneralAlarm=FALSE AND  RFID_ReadCmd_Mid=FALSE AND RFID_WriteCmd_Mid=FALSE THEN iAutoState:=30;END_IF30:IF AutoRdCmd=TRUE AND AutoWrCmd=FALSE AND TagPresent=TRUE AND RfidErr=FALSE  THENRFID_ReadCmd_Mid:=TRUE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=40;END_IF40:IF Done=TRUE AND RfidErr=FALSE THENiStartAddrChangebale:=iStartAddr+128;BMOV(pbyDataSrc:=pRdSrcMid , uiSize:=128 , pbyDataDes:=pRdTwo);ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENiAutoState:=50;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF50:IF GeneralAlarm=FALSE AND RFID_ReadCmd_Mid=TRUE AND RFID_WriteCmd_Mid=FALSE THENRFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;ELSIF GeneralAlarm=FALSE AND  RFID_ReadCmd_Mid=FALSE AND RFID_WriteCmd_Mid=FALSE THEN iAutoState:=60;END_IF60:IF AutoRdCmd=TRUE AND AutoWrCmd=FALSE AND TagPresent=TRUE AND RfidErr=FALSE  THENRFID_ReadCmd_Mid:=TRUE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=70;END_IF		70:IF Done=TRUE AND RfidErr=FALSE THENiStartAddrChangebale:=iStartAddr+256;BMOV(pbyDataSrc:=pRdSrcMid , uiSize:=128 , pbyDataDes:=pRdThree);ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENiAutoState:=80;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF80://RFID DATA READ FINISHE RETURNIF GeneralAlarm=FALSE THENRW_Done:=TRUE;RFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;iStartAddrChangebale:=0;iAutoState:=0;END_IF100://RFID DATA WRITE CONTROLIF AutoRdCmd=FALSE AND AutoWrCmd=TRUE THENiStartAddrChangebale:=iStartAddr;BMOV(pbyDataSrc:=pWrOne , uiSize:=128 , pbyDataDes:=pWrSrcMid);RFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=TRUE;iAutoState:=105;END_IF105:IF Done=TRUE AND RfidErr=FALSE THENGeneralAlarm:=FALSE;ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENRFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=110;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF110:IF AutoRdCmd=FALSE AND AutoWrCmd=TRUE THENiStartAddrChangebale:=iStartAddr+128;BMOV(pbyDataSrc:=pWrTwo , uiSize:=128 , pbyDataDes:=pWrSrcMid);RFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=TRUE;iAutoState:=115;END_IF115:IF Done=TRUE AND RfidErr=FALSE THENGeneralAlarm:=FALSE;ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENRFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=120;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF120:IF AutoRdCmd=FALSE AND AutoWrCmd=TRUE THENiStartAddrChangebale:=iStartAddr+256;BMOV(pbyDataSrc:=pWrThree , uiSize:=128 , pbyDataDes:=pWrSrcMid);RFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=TRUE;iAutoState:=125;END_IF125:IF Done=TRUE AND RfidErr=FALSE THENGeneralAlarm:=FALSE;ELSIF RfidErr THENGeneralAlarm:=TRUE;END_IFIF Done=TRUE AND GeneralAlarm =FALSE THENRFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;iAutoState:=130;ELSIF GeneralAlarm=TRUE THEN iAutoState:=200;END_IF130://RFID DATA WRITE FINISHE RETURNIF GeneralAlarm=FALSE THENRW_Done:=TRUE;RFID_ReadCmd_Mid :=FALSE;RFID_WriteCmd_Mid:=FALSE;iStartAddrChangebale:=0;iAutoState:=0;END_IF200://RFID DATA WRITE OR READ ALARMIF OPMODE.User_Interface_OUT.Reset THENGeneralAlarm:=FALSE;TagNotExitAlarm:=FALSE;RfidNotHeaderAlarm:=FALSE;RFID_ReadCmd_Mid:=FALSE;RFID_WriteCmd_Mid:=FALSE;RW_Done:=FALSE;iStartAddrChangebale:=0;iAutoState:=0;END_IFEND_CASE
END_IF

实例应用-LD

 

 

数据操作功能块封装 

         功能块封装功能类似数据库读写操作,自动读写数据和手动读写数据,访问二维数组中的数据操作。可通过二维数组的行列访问目标数据或通过指针访问目标数组。

        以后有时间会抽时间分享一些TIA和Codesys的常用功能块使用方法。

相关文章:

[Codesys]常用功能块应用分享-BMOV功能块功能介绍及其使用实例说明

官方说明 功能说明 参数 类型 功能 pbyDataSrcPOINTER TO BYTE指向源数组指针uiSizeUINT要移动数据的BYTE数pbyDataDesPOINTER TO BYTE指向目标数组指针 实例应用-ST IF SYSTEM_CLOCK.AlwaysTrue THENCASE iAutoState OF0: //读写完成信号在下次读写信号的上升沿或复位信号…...

大语言模型通用能力排行榜(2024年11月8日更新)

数据来源SuperCLUE 榜单数据为通用能力排行榜 排名 模型名称 机构 总分 理科 文科 Hard 使用方式 发布日期 - o1-preview OpenAI 75.85 86.07 76.6 64.89 API 2024年11月8日 - Claude 3.5 Sonnet(20241022) Anthropic 70.88 82.4…...

信息技术引领未来:大数据治理的实践与挑战

信息技术引领未来:大数据治理的实践与挑战 在信息技术日新月异的今天,大数据已成为企业和社会发展的重要驱动力。大数据治理,作为确保数据质量、安全性和合规性的关键环节,正面临着前所未有的实践挑战与机遇。本文将探讨信息技术…...

Git 分⽀规范 Git Flow 模型

前言 GitFlow 是一种流行的 Git 分支管理策略,由 Vincent Driessen 在 2010 年提出。它提供了一种结构化的方法来管理项目的开发、发布和维护,特别适合大型和复杂的项目。GitFlow 定义了一套明确的分支模型和工作流程,使得团队成员可以更有效…...

基于YOLOv8深度学习的公共卫生防护口罩佩戴检测系统(PyQt5界面+数据集+训练代码)

在全球公共卫生事件频发的背景下,防护口罩佩戴检测成为保障公众健康和控制病毒传播的重要手段之一。特别是在人员密集的公共场所,例如医院、学校、公共交通工具等地,口罩的正确佩戴对降低病毒传播风险、保护易感人群、遏制疫情扩散有着至关重…...

Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案

在人形机器人操作领域,有一个极具价值的问题:鉴于操作数据在人形操作技能学习中的重要性,如何有效地从现实世界中获取操作数据的完整状态?如果可以,那考虑到人类庞大规模的人口和进行复杂操作的简单直观性与可扩展性&a…...

构建SSH僵尸网络

import argparse import paramiko# 定义一个名为Client的类,用于表示SSH客户端相关操作 class Client:# 类的初始化方法,接收主机地址、用户名和密码作为参数def __init__(self, host, user, password):self.host hostself.user userself.password pa…...

WPF中MVVM工具包 CommunityToolkit.Mvvm

CommunityToolkit.Mvvm,也称为MVVM工具包,是Microsoft Community Toolkit的一部分。它是一个轻量级但功能强大的MVVM(Model-View-ViewModel)库,旨在帮助开发者更容易地实现MVVM设计模式。 特点 独立于平台和运行时&a…...

学习空闲任务函数

一、user_StopEnterTask 停止 进入任务 /* Private includes -----------------------------------------------------------*/ //includes #include "user_TasksInit.h" #include "user_MPUCheckTask.h"#include "ui.h" #include "ui_Hom…...

Hyper-v中ubuntu与windows文件共享

Hyper-v中ubuntu与windows文件共享 前言相关链接第一步--第一个链接第二步--第二个链接测试与验证 前言 关于Hyper-V的共享我搞了好久,网上的很多教程太过冗余,我直接采用最简单的办法吧 相关链接 Hyper-V中Ubuntu 同windows系统共享文件夹-百度经验 …...

【软件工程】一篇入门UML建模图(类图)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件开发必练内功_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…...

Windows 安装Docker For Desktop概要

Windows 安装docker 下载部分的工作需要使用科学技术。如果没有可以联系博主发送已下载好的文件。 本文档不涉及技术的讲解,仅有安装的步骤。 准备工作 包含下载与环境准备,下载的文件仅下载,在后续步骤进行安装。 微软关于wsl的文档&…...

解决循环依赖报错问题

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘asyncTaskServiceImpl’: Bean with name ‘asyncTaskServiceImpl’ has been injected into other beans [resignServiceImpl] in its raw version as part…...

代码随想录第46期 单调栈

这道题主要是单调栈的简单应用 class Solution { public:vector<int> dailyTemperatures(vector<int>& T) {vector<int> result(T.size(),0);stack<int> st;st.push(0);for(int i1;i<T.size();i){if(T[i]<T[st.top()]){st.push(i);}else{wh…...

中仕公考怎么样?事业编面试不去有影响吗?

事业编考试笔试已经通过&#xff0c;但是面试不去参加会有影响吗&#xff1f; 1. 自动放弃面试资格&#xff1a;未能按时出席事业单位的面试将被视为主动放弃该岗位的竞争机会。 2. 个人信誉问题&#xff1a;面试作为招聘流程的关键步骤&#xff0c;无故缺席可能被解释为诚信…...

OMV7 树莓派 tf卡安装

​ 升级7之后&#xff0c;问题多多&#xff0c;不是docker不行了&#xff0c;就是代理不好使 今天又重装了一遍&#xff0c;用官方的链接&#xff0c;重新再折腾一遍…… 使用raspberry pi imager安装最新版lite OS。 注意是无桌面 Lite版 配置好树莓派初始化设置&#xff0…...

Go语言24小时极速学习教程(五)Go语言中的SpringMVC框架——Gin

作为一个真正能用的企业级应用&#xff0c;怎么能缺少RESTful接口呢&#xff1f;所以我们需要尝试在Go语言环境中写出我们的对外接口&#xff0c;这样前端就可以借由Gin框架访问我们数据库中的数据了。 一、Gin框架的使用 1. 安装 Gin 首先&#xff0c;你需要在你的 Go 项目…...

【汇编】c++游戏开发

由一起学编程创作的‘C/C项目实战&#xff1a;2D射击游戏开发&#xff08;简易版&#xff09;&#xff0c; 440 行源码分享来啦~’&#xff1a; C/C项目实战&#xff1a;2D射击游戏开发&#xff08;简易版&#xff09;&#xff0c; 440 行源码分享来啦~_射击c-CSDN博客文章浏览…...

Android Studio | 修改镜像地址为阿里云镜像地址,启动App

在项目文件的目录下的 settings.gradle.kts 中修改配置&#xff0c;配置中包含插件和依赖项 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urlu…...

Rocky linux8 安装php8.0

Rocky linux8 安装php8.0 1.安装remi源2.列出php版本3.变更php版本&#xff0c;Rocky8有提供php8版本&#xff0c;所以切换Rocky8提供的版本&#xff0c;而不是remi提供的版本&#xff0c;不过remi有提供php8.1和php8.2版本。4.切换成remi提供的8.0版本5.安装phpendl 1.安装rem…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...