施耐德PLC应用,在程序中定义变量和数据!
(一)基本知识
1、变量分类
变量是在程序执行时可以修改的内存区域。Unity Pro 软件编程可以使用两种类型的变量:
1) 定位变量:是与 I/O 硬件模块输入输出通道相关联的,或者与内存引用相关联的变量。例如:“启动电机”与输入模板通道 %I 0.5.0 相关联,“启动电机”就是定位变量。
2) 非定位变量:是既不与I/O 硬件模块输入输出通道相关联,也不与内存引用地址相关联的变量,即没有地址关联的变量成为非定位变量。非定位变量在内存中的位置不可知。这种变量定义类型可以使您在编写程序时抛开地址的束缚,完全专注于您的应用。
2、通用数据类型和范围
BOOL/EBOOL : 布尔变量必须为 FALSE (0) 或 TRUE (1). EBOOL处理强制和边沿检测
WORD : 代表 “位串16”, 意味着数据长度为 16 位
INT : 代表整型数. 数值范围从 -32768 至 +32767
UINT : 代表无符号整型数. 数值范围从 0 至 65535
REAL : 代表浮点值. 数值范围从 -3.40e+38 至 3.40e+38
3、 通用数据类型的立即值语法
通常基本数据类型(EDT)的实例采用变量名或拓扑地址的方式引用,而在数据编辑器或程序段中也可以通过立即值的方式赋值和引用。如下图所示。
4、定义变量的三种方式
方式一,在项目浏览器中鼠标双击“变量和FB实例”,在弹出的‘数据编辑器窗口’定义,编辑、修改变量,如下图。
方式二,在项目浏览器中双击CPU或I/O模块,如下图查看相应模块的地址,在模块的I/O对象表格里定义,这种方式只能生成,不支持修改和删除。
方式三,在”程序编辑窗口”中定义,这种方式只能生成,不支持修改和删除。
(二)实际操作
1、在项目浏览器中点击“变量和FB实例”,在右侧“名称”下输入start,类型选 EBOOL,在下一行输入 stop,类型选 EBOOL,然后关闭窗口。如下图:
2、从硬件属性中书写:在项目浏览器中双击DDO3202k;左键点右侧“BMX DDO3202k”,选择I/O对象,再选择%Q,然后点击“更新网络”。在该界面右侧%Q0.2.0名称下,改写为cmd_motor,再用鼠标左键选中第2行,按着鼠标左键下拉,选择右侧Q0.2.1、Q0.2.2、Q0.2.3;然后在左侧“名称前缀”框中输入cmd_,点击“创建”。即可形成cmd_0、cmd_1、cmd_2;如下图:
3、关闭所有窗口,点击“变量和FB实例”,会显示刚才所有的定义变量名。
4、按保存按钮,保存项目。
寄存器PLC地址与寄存器modbus协议地址
寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以是触摸屏,或是文本显示器。PLC地址一般采用10进制描述,共有5位,其中第一位代码寄存器类型。第一位数字和寄存器类型的对应关系如表1所示。PLC地址例如40001、30002等。
寄存器modbus协议地址指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址一般使用16进制描述。再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002。在实际编程中,由于前缀的区分作用,所以只需说明后4位数,而且需转换为4位十六进制地址。
支持 Modbus 协议的设备或软件,使用时用户直接设置或看到的应 当是 Modbus 数据地址。Modbus 地址所访问的数据,是通过各种 “功能”读写而来。 功能码是 Modbus 地址的底层。 如果 Modbus 通 信的一方提供的所谓 Modbus 协议只有功能码,则需要注意了解此 功能号与 Modbus 地址间的对应关系。
使用 modbus 地址时应注意下述问题:
1)40001~4xxxx 是美国 modicon 公司和 ge 公司 plc 使用的 modbus 地址,它是基于1的地址,即同类元件的首地址为1。西门子 plc 的 modbus 地址是基于0的地址。
2)美国的 modbus 地址左起第2位用来表示元件的类型,例如 i0.0的 modbus 地址为010001。 因为数据类型已经包含在功能码中了, 西门子的 i0.0的 modbus 地址实际上为000000, i2.0的 modbus 地址为 000016(或十六进制数16#0010) ,而不是010017。
3)、无论V寄存器还是M寄存器,里面的不同数据类型(VB、VW、VD、MB、MW、MD)都是基于寄存器内存总字节地址为偏移地址。
4)、在数据报文中,所有的modbus地址都是从0开始的。也就是首次出现的数据项在报文中的地址为0。比如:(All data addresses in Modbus messages are referenced to zero. The first occurrence of a data item is addressed as item number zero.)
5)、Modbus地址实际上分为两种情况。
第一种情况:PLC作Modbus主站,Modbus地址和PLC手册里的地址一致,例如作主站的S7-200的MBUS_MSG指令用于向Modbus从站发送请求消息,和处理从站返回的响应消息。要读取从站(另一台S7-200)的I0.0开始的地址区时,它的输入参数Addr(Modbus地址)为10001。S7-200从站保持寄存器的V区起始地址为VB200时,要读取从站VW200开始的V存储区时,保持寄存器的地址是40001。
第二种情况:PLC作从站,PLC不用管什么Modbus地址,等着主站来读写它的地址区就是了。
主站的计算机软件(例如DCS或组态软件)的编程人员需要编写实现Modbus通信的程序,首先需要确定Modbus RTU的报文结构。他们一般不熟悉PLC,因此PLC的编程人员往往需要和上位机软件的编程人员一起来讨论Modbus的报文结构。
最容易出问题的就是报文里Modbus地址与PLC存储区地址的对应关系。
S7 PLC手册给出的Modbus地址与Modicon公司和GE公司PLC使用的地址相同,是基于1的地址,即同类元件的首地址为1。而西门子PLC采用的是基于0的地址,即同类元件的首地址为0。Modbus报文中西门子PLC的Modbus地址也采用基于0的地址。
PLC系统手册中的Modbus地址的最高位用来表示地址区的类型,例如I0.0的Modbus地址为10001。因为地址区类型的信息已经包含在报文的功能码中了,报文中S7-200的I0.0的Modbus地址不是10001,而是0。报文中其他地址区的Modbus地址也应按相同的原则处理。例如当S7-200从站保持寄存器的V区起始地址为VB200时,VW200对应的保持寄存器在报文中的Modbus地址为0,而不是40001。
施耐德plc modbus地址对照表
000001至000XXX是实际输出,对应%QX0.0-%QXX.X
010001至010XXX是实际输入,对应%IX0.0-%IXX.X
030001至030032是模拟量寄存器,对应%AIW0,16位一路依次类推
040001至040XXX是保持寄存器,对应%MX0.0-%MXX.X,1对1,要是%MW就对应16位,依次类推。施耐德PLC中 W表示字 16位,D表示双字 32位。比如:%MW10和%MD10。B表示字节 8位,X表示位。比如:%MB0和%MX0.0~%MX0.7
%MW10.4
%MW10是指一个字,一个字分为2个字节,一个字节8个位,也就是说%MW10中有16个位,从%MW10.0~%MW10.15。
%QW0.5.1.0.10
Q是输出 ,0是机架,5是0号机架的第五个模块,1是第五号模块的第一个通道,0是第一个通道的第0个字,10是第0个字的第10个位。
无论MX、MB、MW、MD都是基于内存总字节地址为偏移地址,也就是以%MB之后的地址为偏移地址。
施耐德plc寄存器地址对应的modubs地址
寄存器地址 modubs 说明 公式
%QX1.0 000001.0 开关量输出 %QXx.y=000001+x.y
%IX1.0 010001.0 开关量输入 %IXx.y=010001+x.y
%AIW0 030001 模拟量输入 %AIWx=030001+x
%MD40 0400801 保持寄存器 %MDx.y=040001+x*2.y
%MW50.0 040051.0 保持寄存器 %MWx.y=040001+x.y
%MX100.0 040051.0 保持寄存器 %MXx.y=040001+x/2.y
注意:
1、%MX100.0表示某个字节地址,因为%MW50这个地址中包含了%MB100、%MB101,%MX100.0其实是%MW50的第0位即40051.0
2、%MD40表示双字,%MD40对应的首地址是%MW*2,也就是%MW80,%MD40对应的modbus地址为0400801
西门子s7系列plc modbus地址对照表
例如:地址:40040;对应S7200地址:VW78;对应S7300地址:DB1.DBW78;
三菱FX系列PLC modbus地址对照表
OMRON PLC地址转MODBUS协议对照表
将OMRON PLC接入支持MODBUS协议的上位DCS系统中,通过ASC模块可满足用户的这一需求。具体地址对照关系参考下面链接。
https://wenku.baidu.com/view/3ff1d16da5e9856a5712601d.html
台达PLC寄存器地址与Modbus寄存器地址对照表
具体地址对照关系参考下面链接。
https://wenku.baidu.com/view/f884db6d102de2bd97058836.html
永宏PLC寄存器Modbus地址表
具体地址对照关系参考下面链接。
https://wenku.baidu.com/view/4843e77c30126edb6f1aff00bed5b9f3f90f72c8.html
信捷PLC寄存器Modbus地址表
相关问答
施耐德都有什么系列的PLC?都有什么编程软件?-ZOL问答
施耐德都有什么系列的PLC?都有什么编程软件?施耐德施耐德PLC主要有以下系列:1、NEZAPLC(TSX08系列)2、QuantumPLC(140系列)3、MicroPLC(TSX...
施耐德pLCtr模块介绍?
施耐德PLCtr模块是一款可编程逻辑控制器(PLC)模块,广泛应用于工业自动化领域。它具有高性能、稳定可靠、易于编程和维护等特点。PLCtr模块采用模块化设计,支...
plc模块有哪些牌子?
PLC有四大知名品牌:西门子、施耐德、AB、GE。1、中型PLC:西门子、施耐德、欧姆龙、三菱。2、小型PLC:西门子、欧姆龙、三菱、LS、松下、台达。扩展资料:P...
施耐德PLC扩展模拟量模块在编程中是怎样应用?
在程序中读取那个点啊。比如%IW0.4.0啊意思就是第一个机架,第四个模块的第一个点,施耐德是0开始读取的在程序中读取那个点啊。比如%IW0.4.0啊意思就是第一个...
施耐德plc模块坏了换一下是否就好?
只要不是存储程序用的EEPROM损坏的话,程序是还可以拷贝出来的。只是要把你烧坏的这台EEPROM换到好的PLC上去只要不是存储程序用的EEPROM损坏的话,程序是还可...
plc通讯模块灯闪怎么解决?
PLC损坏(或是输出端有损坏),你可以写一个简单的自锁程序来进行端口好坏的验证。2、误判,对于PLC,输出方式有两种,一种是继电器输出,一种是晶体管输出,前...1...
plc中cps是电源模块吗?
plc的CPS不是电源模块,cps是采用模块化的单一产品结构型式,集成了传统的断路器(熔断器)、接触器、过载(或过流、断相)保护继电器、起动器、隔离器等的主要...
施耐德plc如何正确选型?
[回答]如果侧重于相plc的功能要求,就应该注意一下几点:1)可编程控制器控制系统I/O点数估算:I/O点数是衡量可编程控制器规模大小的重要指标。根据被控对象...
施耐德PLC与西门子S7-200之间能通讯么?
西门子端口2定义成MODBUS协议输出,然后用一个像摩莎A52的模块将信号转换成RS232,在施耐德PLC里面用XXMIT功能块进行通信!西门子端口2定义成MODBUS协议输出,然...
施耐德nrp是什么模块?
施耐德nrp(NRP)是施耐德电气公司推出的一种用于电力行业的模块产品,主要用于电力监控和管理系统中。NRP模块通过集成多种电力参数检测功能,可以实时监测电力...