ABPLC编程软件RSLOGIX5000入门7UDT用户自定义数据.docx
《ABPLC编程软件RSLOGIX5000入门7UDT用户自定义数据.docx》由会员分享,可在线阅读,更多相关《ABPLC编程软件RSLOGIX5000入门7UDT用户自定义数据.docx(47页珍藏版)》请在冰豆网上搜索。
ABPLC编程软件RSLOGIX5000入门7UDT用户自定义数据
ABPLC编程软件RSL0GIX5000入门7――UDT用户自定义数据类型
在本章中,我们将介绍如何通过用户自定义数据类型和数据范围划定来规划标签数据库。
这里将学到
了解使用UDT的优势
学习如何优化UDT规划
使用数据范围划定帮助简化并加快开发工作
我们现在将重点关注Logix控制器中的数据规划。
打开现有控制器文件
2.双击名为Conveyor_Program_S3.ACD的现有项目。
这样将在RSLogix5000中启动该项目。
为传送带创建用户自定义数据类型
您已重新组织了程序规划以更好地利用Logix,现在已准备好开始对数据规划进行重新组织。
可注意到,工程师规划数据的方式仍像使用带有整数、实数和定时器数据表的传统PLC—样。
问题是,当与设备关联的数据分布到控制器内存中的各处时便很难进行跟踪。
您已再次决定
充分利用Logix,使用用户自定义数据类型。
用户自定义数据类型
用户自定义数据类型也称为UDT或结构,借此按逻辑方式对数据进行组织或分组,以便所
有与设备关联的数据都可组合在一起。
例如,每个传送带都有8个整数值、3个实数值、2个定时器和11个与其关联的布尔值。
在传统PLC中,可能需要4个不同的数据表。
然后,当您具有多条传送带时,您可能需要详细地将传送带映射到各个数据表中。
这样就会变得很难管理。
通过UDT能够实现的是将不同的数据类型(整数、实数、定时器、布尔等)组合到一起,共同作为用户自定义数据类型。
然后便可创建该UDT类型的数组。
这可使得编程工作、代
码的记录和数据的跟踪都更加轻松。
1.在控制器项目管理器中,双击”控制器标签"(ControllerTags)。
匕OCortrolerConveyorProgram
UCentrolerF*H^ftdlerQPower-UpHandter■_:
二Tarlnr
PLC非常类似。
将出现标签编辑器。
可注意到,标签数据库的外观与传统
Logix标签数据库
在传统PLC中,用物理地址标识各个数据项,例如N7:
0或B3:
0/0。
不使用地址注释或符号,
就很难阅读逻辑。
在Logix控制器中没有固定的内存N7:
0或B3:
0/0。
Logix内存是基于标签的系统。
标签名称本
身就可以标识数据。
借此便能够组织数据以模拟机器。
您可在实际中
使用分配的标签名称记录代码,例如Nozzle_1_Temperature。
巨参考信息
指导原则
详细信息:
创建Logix项目标签的指导原则
用户自定义数据类型(结构)使您可以组织数据以匹配机器或进程。
用户自
定义数据类型提供以下优势:
这样将相关数据保存在一起便
一个标签包含系统特定方面的所有相关数据。
于查找,不考虑其数据类型。
定义数据用型户自每个数据(成员)得到一个描述性名称。
这样自动为逻辑创建初始水平的文档。
可以使用该数据类型创建具有相同数据规划的多个标签。
压力、阀门
例如,使用用户自定义数据类型存储罐的所有参数,包括温度、位置和预设值。
然后基于该数据类型为每个罐创建标签。
数组在一个公共标签名称下创建数据类型的多个实例。
数组使您可以组织一组使用相同数据类型并执行类似功能的标签。
2)使用数组快速创建一组类似
标签。
以一维、二维或三维组织数据以匹配数据表示的内容。
例如,使用二维数组组织油库的数据。
数组的每个元素表示一个油罐。
元素
在数组中的位置表示罐的地理位置。
重要说明:
尽量减少使用BOOL数组。
许多数组指令不能在BOOL数组上使
用。
这使得更难以初始化和清除BOOL数据数组。
通常对PanelView屏幕的位级别对象使用BOOL数组。
否则,使用DINT标签的各个位或DINT数组。
3)利用程序范围标签。
如果希望多个标签具有相同名称,请在每个不同程序的程序范围定义每个标签(程序标签)。
这使您可以在多个程序中重新使用逻辑和标签名称。
避免同时为控制器标签和程序标签使用相同的名称。
程序标签与控制器标签名称相同,则不能引用控制器标签
某些标签必须是控制器范围(控制器标签)。
在程序中,如果程序的春。
如果希望将标签用于:
则分配此范围:
项目中的多个程序中
消息(MSG)指令中
控制器范围(控制器标
在控制器之间产生或使用数据与PanelView终端
通信
签)
以上都不是
程序范围(程序标签)
4)对于整数,使
用DINT数据
类型。
要提高逻辑效率,请尽可能少用SINT或INT数据类型。
条件允许时,对整数使用DINT数据类型。
Logix5000控制器通常将值作为32位值(DINT或REAL进行比较或操作。
控制器在使用值前,通常会将SINT或INT值转换为DINT或REAL直。
如果目标是SINT或INT标签,则控制器通常会将该值转换
回SINT或INT值。
与SINT或INT的转换自动进行,无需额外编程。
不过将占用额外的执行时间和内存。
5)限制标签名称为40个字符。
下面是标签名称的规则:
仅字母字符(A-Z或a-z)、数字字符(0-9)和下划线(_)必须以字母字符或下划线开始不能多于40个字符
不能连续出现下划线字符(_)或以下划线字符(_)结尾
不区分大小写
6)使用混合大小与。
尽管标签不区分大小写(大写A和小写a相同),但混合大小写更容易
阅读。
这些标签更容易阅读:
相比这些标签:
Tank1
TANK1
Tank1
TANK1
tank1
tank1
7)考虑标签的字母顺序。
RSLogix5000软件以字母顺序显示相同范围的标签。
要更容易监视相关标签,请对要保存在一起的标签使用类似的开始字符。
对罐的每个标签以Tank开始将标签保存在一起。
否则,标签可能彼此分隔。
标签名称
标签名称
TankSouth
SouthTank
2.在标签编辑器中单击N7旁边的+。
这将展开N7数组,显示其中的所有元素。
可注意到从N7[0]到N7[7]的数据已定义。
然后
是从N7[20]到N7[27]和从N7[40]到N7[47]。
这些区域分别对应3个传送带,是传统的PLC数据表布局。
SMfieI3SweyodPg日宜|Sbov*Al
1制MWr
VaMe*IFoic号[S(i4e
0砒Type
Demotion
I-HN7
I...1DectiMl
INT[G4J
1+
0
Dednal
INT
MotorSpeedLow
±呵1
i0
Oearul
INF
MotorSpeedHigh
.+:
N7I2J
0
■>
Decjnsl
INT
MotorSp»edScafedLew
1.
I0
.:
Oearnal
'iNT
MotorSpeedH沙
+1IN7t4]|
0
Cecvnal
INT
MotorSpeedScaled
'$N7I5]
0
0«arna'l
WT
MotorSpeedFeedback
+NTlGi
o|
Oecmrial
INT
MotOfSpeedFeedbackHigh
M7]
D
Dectfndl
INT
州伙OfFeedback
+:
N7I8]
o|
Oecfnal
INT
土制湎
0
Dectnal
INT
+柯4|
o|
Oecmal
INT
+N7I11II
0
Deomal
INT
0
Dcmdl
INT
+;IN7(131
I
0
t
OectfAAl
INF
iWTIHJ
0
Decwna'I
INT
+;IN7I15|
Oedfhal
INT
+IN7(iei
0
Oecmdl
INT
+;W7I17]
0
Oeonal
INT
+IN71181
0
Oecwnal
iwr
+〔肘7I19I
0
Oecifndl
IHT
+;N7I3OI
o|
Qeanal
INT
MotorSpeedILow
+[阿21]
0
Decfhdl
INT
WotOfSpeedH绅
+N7I2?
|
o|
De«ftal
INT
Wrt«'SpeedScafedLow
3.也仔细查看B3、F8和T4。
它们都将采用相同的格式:
传送带1从[0]开始,传送带2从[20]开始,传送带3从[40]开始。
这样做的目的是使得在标签数据库中查找传送带数据更加容易。
这样确实有一定作用,但是您为传送带使用了4个数据表,浪费内存。
而通过创建UDT可更好地实现这一点。
我们现在就来创建
UDT。
4.在控制器项目管理器中的”数据类型"(DataTypes)文件夹下,单击”用户自定义"(User-Defined)旁边的+。
E-QDatoTypes
S母User-DeFineda鼻Strings-a-耳Predefined
■qjModule-Defined
您将注意到这里有一个名为Conveyor的UDT(已为您启动UDT的创建)。
曰已iDataTypes
H细User-Oefredl韵城題a
+1Mftstfg
a:
Predefined
;Ntodie-Oefiied
5.双击Conveyor。
这将为Conveyor数据类型打开UDT编辑器。
可以看到,UDT混合不同的数据类型。
在编程时这是非常有用的工具。
Name:
|Coriveyof
Descjiphon
ThisISusedtop(M|
togethefrioone
placeallhedata
that讯u$edlga
Conveyornsteadlof
mrig4胡曰曲
Name|
lOataTi:
pc|
|S隅1Oeicription
Ok^ToStdrtMobr
BOOL
Oecind
Mot(xRumingLSpeed
real
Float
Moto(Oivefload
BOOL
Deomd
MotcwStoppedSpeed
REAL
Flo詁
MotoeooL
Oecmai
Motoc^En自虬Manegemeot^Speed
Ftoal
WotwUndeiGpeed
BOOL
Decimal
HSl3rtPkJshJ0UlonTimef
timer
0Eneca^lWanagenrienLTinrtei
TIMER
DataTvpeSize52创來)
Members:
用户自定义数据类型的指导原则
§创建用户自定义数据类型时,记住以下指导原则:
§如果包括表示I/O设备的数据,则必须使用逻辑将数据复制到UDT中。
UDT中不可为I/O
指定别名。
§如果要在UDT中包括数组,应将数组限制为一维。
UDT不支持多维数组。
UDT。
§创建UDT时,将类似的数据类型组合到一起。
这将创建更为紧凑的
查看UDT后,您会注意到,类似的数据类型并未组合到一起。
BOOL和REAL数据类型混在
一起。
UDT的当前大小是52个字节。
将BOOL组合在一起可降低这一数字。
6.要进行此操作,单击Motor_Overload的左侧。
这样将选中整行。
Name
DataType
Style[Description|
OkavToStarLMoto(
BOOL
Decimd
MoIolFIunningL^peed
REAL
Float
Molor_0verload
|BOOL
Decimal
M□忙l£toppedSpeed
REAL
Fb凸
McilCir07efSpeed
BOOL
Decimal
M□lorEner37MaragemerrSp
REAL
Float
MolOLUnderSpeed
BOOL
Deci前al
田Et3rtPuttonTinner
TIMER
QJEner3yMariagemertTimer
TIMER
Members:
DataTypeS血:
7.单击”向上移动"(MoveUp)按钮。
这会在UDT中将MotorOverload标签向上移动。
Members:
Name
D^taType
Style1
Description
Okav_To_StarLMotor
BOOL
Decimal
1
Motoi^Dverload
|BODL
Decimal
MolorRjnringLSpeed
REAL
Float
M□(□(£bppedSpeed
REAL
Float
Motoi^DverSpeed
BOOL
Decimal
M□torEnergiiManagementSp
REAL
Float
MotoiUnderSpeed
BOOL
Decimal
田StartPushButtonTimer
TIMER
国EnergyManagemerTimer
TIMER
8.对其它BOOL标签重复此操作,直到它们均组合到一起。
9.单击”应用"(Appiy)。
现在请注意一下UDT的大小。
您已节省了12个字节。
10.完成对BOOL标签的移动后,验证UDT的显示如下:
Name:
Description:
pConvevot
Thisisusedtopull
togetherintoone
placealllthedata
thatisusedbya
Coovevorinsteadof
using4different
Name|
|DataT^ipe|
Style
Description丨
0k5VToStarLMota
BQOL
Dedmal
MotcirOvedoad
BOOL
Decimal
Moror0verSpeed
BOOL
Decimal
MotorUnderSpeed
BQOL
Dedmal
MctOf-RunningSpeed
REAL
Flo^t
MororStoppedSpeed
REAL
Float
MotorEnergvManagementSpeed
REAL
Float
田StaflPushGuttoriTimer
TIMER
0EnergjJManagementTimer
TIMER
Wembers:
D3也TypeSize:
40byte[sj
11.回到”控制器标签"(ControllerTags),展开N7标签并注意N7[0]到N7[7]及其描述。
12.使用标签的描述将这些标签添加到UDT。
手动执行行此操作(并要记住参考前文中的
指导原则4)。
13.
N«ne
0號刖-T
Mob^verlMdMobr^OveLSpeedMotor_UnderSpeedMolar_Runnrig_SpeediMobr_Sbpped_SpeedMM-E榆他帳nLSp
Star(_Push_Bff\«
邑IErtefgy_ManAa«wrt_Tiffter
M(ibr_Speed_LowMolar_Speed_Hi^Mobr_Sc^«LLM0泊」peed_Sc^dMobr_SpMd_Fdbk_LowMo>or_5pwd_IFdbk_HighMotorFeedback
DataType£吐7囚呷甸
[Description|
BOOLDeomdl
REALiFlodt
IREALfkwl
TIMER,TIMERDINTDINTDINTDiNTDINT
DecimalDecimalDecimalDecimal
DtNrDINT
DINT
Pecifral
IDecItnal
]D擱aTypeGOOL—BQQLBOOL
Occ血
IDec盹I
Decirnal
您现在已拥有一个在程序中定义传送带的完整
UDT。
完成后,单击”应用"(Apply)接受所做更改并验证UDT应类似下图。
14.单击”确定"(OK)关闭UDT编辑窗口。
15.在"文件"(File)菜单中选择”关闭"(Close)。
软件将询问您是否要保存对文件所做的更改,选择"否"(No)。
使用传送带UDT
现在您将使用刚创建的UDT传送带。
您意识到UDT将帮助优化标签数据库,并使代码的故障处理和开发更容易。
1.在RSLogix5000的工具栏菜单中,选择”文件>打开"(File>Open)。
2.双击名为Conveyor_Program_S4.ACD的现有项目文件。
这样将在RSLogix5000中启动该项目。
3.在控制器项目管理器中,双击”控制器标签"(ControllerTags)。
这将打开标签编辑器。
匸ControJterCorw^w_Pro5fam
二ControllerHander—JPower-UpHwller
P'flasks
查看标签编辑器,您将发现数据库中有一个新标签
Conveyor_1。
Scope:
I3匚廿¥矽0^円口卽cSbsw…IShowAl
)Decani
Name
+B3
+Cofive^_1
+Fg
+F9
;+N7
>PD
匚T10
:
+T4
L.I
JFtaat
jFi^
T;
}Decind
4.单击ConveyoM旁边的+展开该标签。
]D曲Type
BDOLa)Convej^cfREAUE4]REAUG4]|liNT|[B4jRD
TIMER[&4]TIME!
Rte4J
IDesuiii但an
丽驾ISusedipullfo...
Scope:
[nConvey0f_HoofI3bm...\
ShwAl
匕1VakK*1ForceIMask^|Styte
1DataT坯J电
Name
+B3
Decimal
B00ME4]
►
NConveyor1
仁…Ji
匚orKveyor
ConveyoLl0kap^To^StariMo0i
Decimal
BOOL
ConveyoLlMotoc^Ovetload|
0
Decimal
GOiOL
Conve4H>r_l.Mot«_0vejSpeed
1
0
Decimal
eooL'
Coriveyor_l.Wotar_UndecSpeed
0
Decimal
eoiOL'
Conveiwr_l.M^tor_R(rniing_Speed
0.0
■*—
Float
REAL
Conveyor1MoteTStoppedSpeed
0.0
■
Fkwt
REAL
Conveyor_1n«f®J_Mi*nag^tfceril_See«<)l
0・Q
REAL
[+iConveyor_1,SUrt_Pu$h_BuHon_Tim刽
{…}
TWER
1
田Coriveyor_1Erie(gji_ManaQemefM_Timtt
{…・J
'tuner
1
出Conveyor_1IMotor_Sf>eed_Low
0
Decimal
DIHIT
"-+-IConvwF-lIMoto(_SpeedH绅
0
Decimal
'DINIT
l+iConvfliWLlIMo<«^Scated^L0
Dccirrid
'dinit
l+JConvejciLl.IMotof^Scaled^H妙
0
Decirnal
OINiT
由Convc^kjlIWotCT_Speed_Scated
0
Decimal
DINT
f
i!
+jConveyor_1Moitof_Speecl_Fdbk_Ljow
0
Decimal
DINIT
[+JConveyor_1Wotof_Speed_Fdbk_H^
0
Decimal
DINIT
T
[+jConveyor_1Wotof_Fee(l)ack
0
Decimal
OINIT
在控制器项目管理器中,单击各个程序的+,展开连续任务中的3个传送带程序。
5.
-运Mainlask三争Conveyor.I
齒Pro^^Tags
:
團Cl_Alarm^5tatus圓G-Eheryy-Mag慟Cl_StArt_Stop
£ProgramTagsDCooveyw_2圖C2^Alatm„St3tus爾CZJEfwroy^Manafl色CS^Start^op
Z£#Conveyor
③Pro^amTags
DConveyoOaCa_Akfm_5tatusac」「_._
1C3_5tait_5topH的SimJation
lEnerg/J^anag