当前位置: 首页 > 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…...

从外卖配送看算法实战:Python+NetworkX解决简化版VRP问题

外卖配送路径优化实战&#xff1a;用PythonNetworkX解决简化版VRP问题 中午12点&#xff0c;城市里的外卖订单如潮水般涌来。配送员小张的手机上瞬间出现了8个不同方向的订单&#xff0c;他盯着地图上分散的标记点皱起了眉头——怎样才能用最短的时间送完所有外卖&#xff1f;这…...

STM32 RTC硬件自检工具CheckRTC:轻量级实时时钟可信度验证

1. 项目概述CheckRTC 是一个面向 STM32 系列微控制器的轻量级 RTC&#xff08;实时时钟&#xff09;模块自检与功能验证程序。其核心目标并非提供通用 RTC 驱动&#xff0c;而是作为嵌入式底层开发中关键的硬件可信度验证工具——在系统启动早期、固件升级后、或长期运行出现时…...

【深度解析】DeepSeek API 悄然分叉:开发者该如何正确评估与接入最新大模型?

摘要 本文基于近期 DeepSeek API 更新及官方文档变更&#xff0c;从「API 版本 ≠ Web/App 版本」这一关键细节出发&#xff0c;梳理大模型多版本部署策略背后的技术与成本逻辑&#xff0c;并给出基于兼容 OpenAI 协议的实战接入示例&#xff08;使用 claude‑sonnet‑4‑6&…...

SGLang-v0.5.6实战体验:5种预装镜像,哪个最适合你的项目?

SGLang-v0.5.6实战体验&#xff1a;5种预装镜像&#xff0c;哪个最适合你的项目&#xff1f; 选型会上&#xff0c;技术负责人又抛出了那个经典问题&#xff1a;“我们到底用哪个环境来部署SGLang&#xff1f;” 会议室里立刻热闹起来。有人坚持用PyTorch 2.1&#xff0c;说它…...

机器学习期末考突击指南:从线性回归到SVM的实战解题技巧

机器学习期末考突击指南&#xff1a;从线性回归到SVM的实战解题技巧 期末考试临近&#xff0c;面对机器学习课程中纷繁复杂的算法和公式&#xff0c;许多同学感到无从下手。本文将从实际考题出发&#xff0c;手把手带你攻克线性回归、朴素贝叶斯和SVM三大核心考点&#xff0c;不…...

手把手教你用STM32驱动迪文屏:从RS232配置到页面控件交互全流程

STM32与迪文屏深度开发实战&#xff1a;工业级GUI交互全解析 迪文屏作为工业控制领域广泛采用的HMI解决方案&#xff0c;其与STM32的协同工作能力已成为嵌入式开发者的必备技能。不同于传统TFT-LCD的简单驱动&#xff0c;迪文屏通过串口协议实现的动态交互&#xff0c;为设备控…...

BilibiliDown:B站音视频资源管理的全场景解决方案

BilibiliDown&#xff1a;B站音视频资源管理的全场景解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...

Elasticsearch IK 分词器远程词典

一、背景 在使用 Elasticsearch IK 分词器进行中文检索时&#xff0c;默认词库往往无法覆盖业务中的专业词汇&#xff08;如&#xff1a;知识库、RAG架构、向量检索等&#xff09;。 如果不进行扩展&#xff0c;这些词可能被错误拆分&#xff0c;导致&#xff1a; 检索结果不准…...

OV5640摄像头SCCB配置详解:告别照抄寄存器表,教你读懂数据手册进行个性化设置

OV5640摄像头SCCB高级配置实战&#xff1a;从寄存器表解读到图像优化全解析 1. 深入理解OV5640寄存器架构 OV5640作为OmniVision推出的500万像素图像传感器&#xff0c;其强大功能背后是超过200个可配置寄存器。许多开发者习惯直接套用现成的寄存器配置表&#xff0c;但当遇到图…...

跨模态迁移学习在超声目标检测中的落地实践(附乳腺超声数据集处理技巧)

跨模态迁移学习在医学超声检测中的实战指南&#xff1a;从自然图像到乳腺超声的模型迁移 医学影像分析领域长期面临标注数据稀缺的困境&#xff0c;尤其对于超声影像这类高度依赖操作者经验的模态。当我在去年参与一个乳腺癌早期筛查项目时&#xff0c;团队仅能获取到200例标注…...