n
一、驱动器参数的读取及写入
1.应用概述
SIMOTION中读取及写入驱动器参数的函数为:_readDriveParameter,_readDriveMultiParameter,_writeDriveParameter ,_writeDriveMultiParameter。SIMOTION最多可以同时处理16个参数读写任务,每个DP站只能允许一个任务。
SIMOTION通过_readDriveParameter,_readDriveMultiParameter函数可方便读取驱动器中的单个或多个参数值;通过_writeDriveParameter ,_writeDriveMultiParameter函数可修改驱动器中的单个或多个参数值。n
2.通讯报文的配置
在硬件配置中配置好驱动器的通讯报文n
3.建立程序
在D435中的“PROGRAM”中插入编程单元“LAD/FBD UNIT”,如”RWPar”,在“UNIT”中插入程序如“readparameter”和“writeparameter”编写读取和写入驱动器参数的程序如图1所示,也可以将读取和写入驱动器参数的程序编写在同一个程序中。n
图1: SIMOTION 程序的创建n
本例中在“readparameter”程序中编写读取驱动器参数的程序,在“writeparameter”程序中编写写入驱动器参数的程序,相应的函数在函数库中的位置如图2所示:n
图2: 函数块的位置n
3.函数介绍
3.1 _readDriveParameter:读取驱动器中的一个参数值
在“readparameter”程序中调用_readDriveParameter函数来读取驱动器中的一个参数值(如P314),与STEP7编写方式相似,将函数拖曳到LAD网络中,枚举类型变量的赋值可以使用MOVE指令,如图3所示:n
图3. _readDriveParameter 函数块n
给所有的参数赋值,变量可以任意定义,如“Rnextcommand”变量,键入后选择变量类型如图4所示:n
图4: 配置参数类型n
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址
parameterNumber:
UDINT数据类型,指定要读取驱动器的参数号
umberOfElements (optional):
UDINT数据类型,指定要读取驱动器参数的索引数目。
0: 读取无索引号的参数不需填写。
1: 读取subIndex索引的参数。
(n≥2):从subIndex中指定的索引号开始读取n个参数值。
subIndex (optional):
UDINT数据类型,指定要读取驱动器参数的索引号。对于读取无索引号的参数不需填写。
NEXTCOMMAND:
枚举数据类型,元素中包括“IMMEDIATELY ”和“WHEN_COMMAND_DONE”,
“IMMEDIATELY”:下一个命令同步执行。
“WHEN_COMMAND_DONE”:命令执行后执行下一个命令,异步执行。
COMMANDID:
COMMANDID数据类型,可以跟踪命令的状态。n
函数的输出变量 “RPOUT”为结构体数据类型,元素参考表1:n
表1 函数RPOUT参数结构体数据n
结构体元素 名称 数据类型
functionResult 函数调用的返回值 DINT
parameterResult 参数指定的返回值 DINT
dataLength 读取参数的长度(字节数) UDINT
data 从驱动器中读取的数据
(Big Endian) ARRAY [0..233] OF BYTEn
3.2 _readDriveMultiParameter:读取驱动器中的多个参数值
在“readparameter”程序中调用_readDriveMultiParameter 函数来读取驱动器中的多个参数值(如P314,r0026),将函数拖曳到LAD网络中,如图5所示:枚举类型变量的赋值可以使用MOVE指令。n
图5. _readDriveMultiParameter函数块n
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或本地变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址
umberOfParameters:
UDINT数据类型,指定要读取驱动器参数的数量,设定范围:1-39。
parameterNumber:
ARRAY [0..38] OF UDINT数据类型,指定要读取驱动器的参数号。
umberOfElements:
ARRAY [0..38] OF UDINT数据类型,指定要读取驱动器参数的索引数目。
0: 读取无索引号的参数不需填写。
1: 读取subIndex索引的参数。
(n≥2):从subIndex中指定的索引号开始读取n个参数值。
subIndex:
ARRAY [0..38] OF UDINT数据类型,指定要读取驱动器参数的索引号。
NEXTCOMMAND ,COMMANDID:
与_readDriveParameter函数输入参数意义相同。
函数的输出变量 “RMOUT”为结构体数据类型,元素参考表2:n
表2 函数RMOUT参数结构体数据n
结构体元素 名称 数据类型
functionResult 函数调用的返回值 DINT
parameterResult 参数指定的返回值 ARRAY [0..38] OF DINT
dataLength 读取参数的长度(字节数) ARRAY [0..38] OF UDINT
data 从驱动器中读取的数据
(Big Endian) ARRAY [0..233] OF BYTEn
3.3 _writeDriveParameter:写驱动器中的一个参数值
在“writeparameter”程序中调用_writeDriveParameter函数来写入一个驱动器参数值(如P0120),将函数拖曳到LAD网络中,如图6所示:枚举类型变量的赋值可以使用MOVE指令。n
图6. _writeDriveParameter函数块n
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或本地变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址。
parameterNumber:
UDINT数据类型,指定要写入驱动器的参数号。
umberOfElements (optional):
UDINT数据类型,指定要写入驱动器参数的索引数量。对于写入无索引号的参数不需填写。
0: 写入无索引号的参数不需填写。
1: 写入subIndex索引的参数。
(n≥2):从subIndex中指定的索引号开始写入n个参数值。
subIndex (optional):
UDINT数据类型,指定要写入驱动器参数的索引号。对于无索引号的参数不需填写。
NEXTCOMMAND ,COMMANDID:
与_readDriveParameter函数输入参数意义相同。
dataLength:
UDINT数据类型,指定要写入驱动器参数的数据长度(字节数)。
Data:
ARRAY [0..227] OF BYTE数据类型,指定被写入数据的起始地址(byte array)。
函数的输出变量 “WOUT”为结构体数据类型,元素参考表3:n
表3 函数WOUT参数结构体数据n
结构体元素 名称 数据类型
functionResult 函数调用的返回值 DINT
parameterResult 参数指定的返回值 DINTn
3.4 _writeDriveMultiParameter:写驱动器中的多个参数值
在“writeparameter”程序中调用_writeDriveMultiParameter函数来写入多个驱动器参数值(如P0120,P0140),将函数拖曳到LAD网络中,如图7所示:枚举类型变量的赋值可以使用MOVE指令。n
图7. _writeDriveMultiParameter函数块n
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址。
umberOfParameters:
UDINT数据类型,指定要写入驱动器参数的数量,设定范围:1-23。
parameterNumber:
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器的参数号。
umberOfElements:
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器参数的索引数量。对于写入无索引号的参数不需填写。
0: 写入无索引号的参数不需填写。
1: 写入subIndex索引的参数。
(n≥2):从subIndex中指定的索引号开始写入n个参数值。
subIndex (optional):
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器参数的索引号。对于无索引号的参数不需填写。
dataLength:
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器参数的数据长度(字节数)。
Data:
ARRAY [0..227] OF BYTE数据类型,指定被写入数据的起始地址(byte array)。
NEXTCOMMAND ,COMMANDID:
与_readDriveParameter函数输入参数意义相同。
函数的输出变量 “WMOUT”为结构体数据类型,与_writeDriveParameter函数输出参数意义相同。n
程序编写完成之后,将整个程序进行编译,并将其分配到系统执行集中,如图8所示,然后联机下传程序。可以通过:watch table或相关程序的symbaol brower进行变量赋值及在线监控。n
图8: 分配程序n
本例中将驱动器参数读写程序放置于“BackgroundTask”中运行(循环运行)。注意:
(1)因读出的驱动器参数的数据类型为:ARRAY OF BYTE ,用户需使用数据转换函数将其转换成驱动器参数中定义的数据类型。
(2)写入驱动器参数时也需先将写入的数据转换成ARRAY OF BYTE数据类型。
请参看数据类型转换函数的使用说明。n
4.示例程序
示例程序请参考附带文件:Read_wri.zip ( 744 KB ) n
二、Simotion中数据类型的转换
1.应用概述
SIMOTION中将“ byte array ”类型数据转换成任意类型数据的函数为:BigByteArray_to_AnyType(Big Endian-type byte array )(siemens为此类型),LittleByteArray_to_AnyType(Little Endian-type byte array)。n
2.建立程序
在D435中的“PROGRAM”中插入编程单元“LAD/FBD UNIT”,如”Conver”,在“UNIT”中插入程序如“matshalling”编写数据转换程序如图1所示。
图1: SIMOTION 程序的创建
相应的函数在函数库中的位置如图2所示:
图2: 函数块的位置
3.函数介绍
在“matshalling” 程序中调用“BigByteArray_to_AnyType”函数将“ byte array ”类型数据转换成任意类型数据。本程序示例将数据类型为“ARRAY OF BYTE ”的数据转换为“REAL” 类型(如将_readDriveParameter函数读出的驱动器r0026中的数值转换成“REAL” 类型,用户可用转换后的值进行比较或判断。
将函数拖曳到LAD网络中,枚举类型变量的赋值可以使用MOVE指令,如图3所示:
图3. “BigByteArray_to_AnyType”函数块
给所有的参数赋值,变量可以任意定义,如“outvar”变量,键入后选择变量类型如图4所示:
图4. 配置参数类型
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
byteArray:
ARRAY [..] OF BYTE数据类型,指定需转换的数据。
offset (optional) :
UDINT数据类型,指定数组中需转换的开始元素位置,必须设定为常数。
OUT:
函数的输出变量,任意数据类型。
程序编写完成之后,将整个程序进行编译,并将其分配到系统执行集中,如图5所示,然后联机下传程序。可以通过:watch table或相关程序的symbaol brower进行变量赋值及在线监控。
图5. 分配程序
本例中将数据转换程序放置于“BackgroundTask”中运行(循环运行)。
4.示例程序
示例程序请参考附带文件:Read&wri.zip
关键词
SIMOTION、驱动器参数读写、数据类型转换
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc328129.html