C#上位机与欧姆龙PLC的通信04---- 欧姆龙plc的存储区

1、存储区概念

欧姆龙PLC将整个数据存储器分为10个区:输入继电器区、输出继电器区、内部辅助继电器区、特殊继电器区、保持继电器区、暂存继电器区、定时/计数器区、数据存储区、辅助存储继电器区、链接继电器区。

输入输出继电器区

CP1E系列PLC输入继电器区有16个通道,通道号为000~099,每个通道有16个输入继电器,位号为00~15。继电器号=通道号+位号

输出继电器区有16个通道,通道号为100~199,每个通道有16个输出继电器,位号为00~15。继电器号=通道号+位号(例如10003)

内部辅助继电器区W

通道号为W0~W99,位号为00~15

定时/计数器区TC

定时器和计数器分别可用256个,定时器号0~255,计数器号0~255一个编号只能分配一次(例TIM000)

数据存储区D

E型数据存储区通道号为D0~D2047

N型数据存储区通道号为D0~D8191

保持继电器区H

通道号为H0~H49

主要特性:可通过专用软件CX-Programmer for CP1E进行编程监控。

2、分区介绍

AR:特殊辅助继电器区;
HR:保持继电器区;
IO:CIO区,用作控制I/O点的数据,也可以用作内部处理和存储数据的工作位;
LR:链接继电器区
TR,暂时存储继电器区;
DM:动态数据存储器区;
EM:扩展数据存储区;
CNT:计数器区;
TIM:定时器区;
IR:变址寄存器;
DR:数据寄存器。

欧姆龙采用通道概念存储数据,所存储数据的单元称为通道(CH),也叫字。每个存储单元都有一个地址,就叫做首地址,简称通道号,用3位数字表示。每个通道有16位(bit),分别称为00,01,02,15位。每个位就是一个软继电器,简你继电器。因此一个通道就有16个软继电器。通道也可用来存储十进制数据,由于十进制数可用特定的二进制编码BCD表示,因此,当用通道存储十进制数时,每4位分成1组,存储1个由BCD码表示的十进制数,将每4位称为1个数字位。也就是说,一个通道有4个数字位,可存储4位十进制数。

3、认识内存区

3.1 CIO存储区

 

点击“在线”,选择“监视“

 

这里的CIO区我们选择的数据类型是2进制,即每个位只能是1或0,它可以表示设备状态是停止还是启动,将它修改为以下内容

这里的意思是将CIO存储区的0开始地址的第0,1,3位设置为1,即0.0为1,0.1为1,0.3为1,联合起来的意思就是指CIO0.0为1,CIO0.1为1,CIO0.3为1,其他默认都是0,你可以认为CIO0.0表示电机当前状态为启动, CIO0.1表示水轮正在转动,随便怎么理解都可以,总之1,0是布尔类型,换到JAVA或C#就是布尔类型true,false,CIO0.3中CIO0表示CIO区中的第0个寄存器,3表示寄存器中的第3位,因为我们设置了CIO区为2进制类型,所以只能设置为1,0,如果设置为其他类型,则可以有不同设置。

 

这一段内存地址表示的含义内容

3.2 DM区

 DM区即数据内存区( “DM”是Data Memory的简称),为欧姆龙产PLC的I/O内存的一种,字(16位)单位中能够提供的读写的通用数据区域。PLC的电源在ON/OFF时也可以保持数据。作为“数据”的“内存”,可以保存接点以外的各种设定数据、运行数据。与其它区域不同,DM内的数据作为DM的地址,可以间接指定DM区域。

双击D,设置为10进制,输入数据

这里要注意监视时设置的进制也是10进制  

 注意:这个10进制是没有符号的,在C#是用ushort类型表示,在C#占2个字节,在PLC中占一个寄存器,PLC中寄存器占2个字节,用word表示,简称字,10.0是第1个寄存器,10.9是第10个寄存器,D区中的第10个地址共占10个寄存器。

3.3 W区

PLC中的W区是掉电不保存区,DM区在电池有电的情况下是掉电保存的。W该区可以像DM区那样按字操作,也可以按位操作。

 双击W,设置为浮点类型的,输入有关数据,浮点型其实是包括有符号的10进制和无符号的10进制,以及有无符号的小数,如300,-987,12.43,-9.53,它占2个word,即占4个寄存器,即占8个字节,在C#中用float表示

 

D区的地址是D10,D11,D12这样编号下去的,每个占1个寄存器

W区的地址是W0,W2,W4这样编号下去的,每个地址占2个寄存器

注意它们的区别,这些数字你们可以表示为电机转速,温度,水位高度,什么都可以。

一个浮点数占4个字节,即占32位,必须要占用两个连续的寄存器,1个寄存器占2个字节 

这里注意,并不是说CIO区只能是2进制,D区是10进制,W区是float,每个区都可以设置为2进制或10进制有符号无符号或浮点,这里只是拿最常用的3种类型来说明PLC寄存器的地址表示及数制。

3.4 C#与PLC中的数据类型比较 

知识:

C#中:

float 单精度浮点 32bit,
double 双精度浮点64bit,
decimal是高精度 128bit,浮点型。
float double 是 基本类型(primitive type),decimal不是。
float 有效数字7位,范围 ±1.5 × 10E−45 to ±3.4 × 10E38
double 有效数字15/16 位,范围 ±5.0 × 10 E−324 to ±1.7 × 10E308
decimal 有效数字 28/29 位,范围 ±1.0 × 10E−28 to ±7.9 × 10E28
( E -- 下接几次方)

decimal的有效位数很大,达到了28位,但是表示的数据范围却比float和double类型小。
使用的时候会对计算时的性能有影响。
常数写法:
float f = 12.3F; (带F)
double x=12.3; (不带就是double)
decimal d = 12.30M; (带M)
--------------------------------------------------------------------------------------------------
PLC与C#数据类型对应
Bit      =>     bool
Byte     =>     byte
word     =>     ushort
DWord     =>     uint
Int     =>     short
DInt     =>     int
float=>     float 
String     =>     string 
 --------------------------------------------------------------------------------------------------

一个英文字母,无论大写和小写都是一个字符、一个字节,8位。
一个汉字是一个字符、两个字节,16位

PLC中:

位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写  B  来表示,1B(byte,字节)= 8bit(位)

字符:是指计算机中使用的字母、数字、字和符号

B是字节(8位),即byte

W是字(16位),即PLC中的word,占一个寄存器,在C#占2个字节,用short或ushort表示,用来表示整数(不用带小数),short分为有符号(如-89)和无符号(如75)两种,ushort只有无符号一种,如79

DW是双字(32位),即PLC中的dword,占两个寄存器,在C#中占4个字节,用float表示,用来表示带有小数的数,分为有符号(如-28.5)和无符号(如29.6)两种

一个浮点数占4个字节,即占32位,必须要占用两个连续的寄存器,1个寄存器占2个字节  

(1)1个字节=8个位,用B(byte)表示

(2)1个字=16个位,用W(word)表示

(3)1个双字=32个位,用D(double word)表示


 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java】深入理解i++、++i

先看两个例子 示例一 public class Test {public static void main(String[] args) {int i 0;int j i;System.out.println("i" i);System.out.println("j" j);} } 示例二 public class Test {public static void main(String[] args) {int i 0;i…

.Net Core webapi RestFul 统一接口数据返回格式

在RestFul风格盛行的年代,大部分接口都需要一套统一的数据返回格式,那么我们怎么才能保证使用统一的json数据格式返回呢,下面给大家简单介绍一下: 假如我们需要接口统一返回一下数据格式: {"statusCode": …

LEFT JOIN

通過中間表説明 biz_email_sent table1 biz_email table2 biz_email_sent_address 中間表 LEFT JOIN 是 JOIN 左邊的記錄(biz_email_sent id52)全部查出,比如52 的記錄全部查出。 即使中間表se.sa_email_id 在 table2中找不到&#xff0c…

Centos7配置静态ip地址

目录结构 Centos7配置静态ip地址查看网关进入存放ip地址的目录修改ip地址的文件重启网络检查ip地址 Centos7配置静态ip地址 查看网关 编辑–>虚拟网络编辑器–>NAT设置 记住这个网关地址 进入存放ip地址的目录 cd /etc/sysconfig/network-scripts/ 修改ip地址的文件 …

Windows下安装MongoDB实践总结

本文记录Windows环境下的MongoDB安装与使用总结。 【1】官网下载 官网下载地址:Download MongoDB Community Server | MongoDB 这里可以选择下载zip或者msi,zip是解压后自己配置,msi是傻瓜式一键安装。这里我们分别对比进行实践。 【2】ZI…

LeetCode 19 删除链表的倒数第 N 个结点

题目描述 删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1…

什么是OEM分区?能不能删除OEM分区?

在某些电脑中,打开磁盘管理时会发现有一个OEM分区,那么这个OEM分区是什么意思呢?能不能删除呢?下面我们就来了解一下。 什么是OEM分区? OEM分区通常是品牌机厂商预装系统或软件以及一键还原的分区。OEM分区中的文件可…

在线更换Proxmox VE超融合集群Ceph OSD磁盘

因为资源紧张的原因,担心一旦关机,虚拟机因为没有空闲的资源而被冻结,以致于不能漂移,导致部分服务停止,只好让机房帮忙热插拔。 幸运的是,插上去能够被系统所识别(/dev/sdf就是新插入的硬盘&am…

【MYSQL】-表的操作

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

acwing-蓝桥杯C++ AB组辅导课Day2-递归习题+递推+二分

感谢梦翔老哥的蓝桥杯C AB组辅导课~ 递归习题: 1.递归实现组合型枚举 题意: 题目要求输出组合枚举,与排列不同,排列具有顺序之分,对于组合来说,是没有顺序之分的,所以[1,2,3]和[3,2,1]被看成同…

PyQt6 QTableWidget表格控件

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

神经网络:优化器和全连接层

SGD(随机梯度下降) 随机梯度下降的优化算法在科研和工业界是很常用的。 很多理论和工程问题都能转化成对目标函数进行最小化的数学问题。 举个例子:梯度下降(Gradient Descent)就好比一个人想从高山上奔跑到山谷最低…

23年12月AI烟火识别系统应用案例-北京梅兰芳故居防火系统

AI烟火识别智能视频分析系统在文化遗产保护领域的应用,尤其是在梅兰芳故居防火系统的部署,是现代科技与传统文化保护结合的典范。这篇文章将详细介绍富维烟火识别系统的设计、实施及其在23年12月在北京梅兰芳故居中的应用。 背景介绍 ● 梅兰芳故居的重要…

Ubuntu20.04.2-mate上Lazarus安装与测试

简言 Lazarus采用RAD方式界面开发,一套代码可交差编译出windows、ios、android、solaris、BSD等 各平台运行的程序,在unbuntu的repo中有2.2.0版本可用,在sourceforge上有2.2.6版本和3.0.0的Rolling版可下载安装,但感觉上2.2.0和2…

【实时绘画】comfyUI 实时绘画工作流 - 投屏

原理:(可用方案) 1:利用DesignDoll(人体控制模型)comfyUI实现 实时绘制人物对话场景 2:利用krita投影 实时绘制 场景人物 3:利用posemy.art进行实时绘画 设置有关模型。如果要开启lora&#xff…

C/C++与MySQL:多线程、大并发和异步操作的实践

C/C与MySQL:多线程、大并发和异步操作的实践 在前面的文章中,我们介绍了如何使用C/C调用MYSQL API进行基本的数据库操作。然而,在实际应用中,特别是面对大量用户请求和高并发场景时,单线程的数据库操作往往显得力不从…

内网离线部署Ant Design离线文档离线api antd离线组件api

我们经常会遇到需要在内网开发不方便查看api的尴尬情况,文本用最简单的nginx,让你十分钟部署好本地的离线antd文档,想在哪用在哪用,妈妈在也不用担心我啦 1.x及以下的只要到官网下载gh-pages分支,放到nginx里&#xf…

在centos7.9上安装Jenkins的安装过程

1.jenkins的安装和配置: 安装JDK: yum install -y fontconfig java-11-openjdk # 安装目录:/usr/lib/jvm # fontconfig 是 Linux 系统中用于配置和管理字体的一种工具 下载jenkins安装包: sudo wget -O /etc/yum.repos.d/jenkins…

2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序

2017年第六届数学建模国际赛小美赛 B题 电子邮件中的笔迹分析 原题再现: 笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电…

Ubuntu 常用命令之 tar 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 tar 命令在 Ubuntu 系统中是用来打包和解包文件的工具。tar 命令可以将多个文件或目录打包成一个 tar 文件,也可以将 tar 文件解包成原来的文件或目录。 tar 命令的常用参数如下 c:创建一个新的 tar 文件…