您好,欢迎访问一九零五行业门户网

在SIMOTION中读取、写入驱动器参数及数据类型

一、驱动器参数的读取及写入
1.应用概述
simotion中读取及写入驱动器参数的函数为:_readdriveparameter,_readdrivemultiparameter,_writedriveparameter ,_writedrivemultiparameter。simotion最多可以同时处理16个参数读写任务,每个dp站只能允许一个任务。
simotion通过_readdriveparameter,_readdrivemultiparameter函数可方便读取驱动器中的单个或多个参数值;通过_writedriveparameter ,_writedrivemultiparameter函数可修改驱动器中的单个或多个参数值。
2.通讯报文的配置
在硬件配置中配置好驱动器的通讯报文n
3.建立程序
在d435中的“program”中插入编程单元“lad/fbd unit”,如”rwpar”,在“unit”中插入程序如“readparameter”和“writeparameter”编写读取和写入驱动器参数的程序如图1所示,也可以将读取和写入驱动器参数的程序编写在同一个程序中。
图1: simotion 程序的创建
本例中在“readparameter”程序中编写读取驱动器参数的程序,在“writeparameter”程序中编写写入驱动器参数的程序,相应的函数在函数库中的位置如图2所示:
图2: 函数块的位置
3.函数介绍
3.1 _readdriveparameter:读取驱动器中的一个参数值
在“readparameter”程序中调用_readdriveparameter函数来读取驱动器中的一个参数值(如p314),与step7编写方式相似,将函数拖曳到lad网络中,枚举类型变量的赋值可以使用move指令,如图3所示:
图3. _readdriveparameter 函数块n
给所有的参数赋值,变量可以任意定义,如“rnextcommand”变量,键入后选择变量类型如图4所示:
图4: 配置参数类型
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
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数据类型,可以跟踪命令的状态。
函数的输出变量 “rpout”为结构体数据类型,元素参考表1:
表1 函数rpout参数结构体数据
结构体元素 名称 数据类型
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:
表2 函数rmout参数结构体数据
结构体元素 名称 数据类型
functionresult 函数调用的返回值 dint
parameterresult 参数指定的返回值 array [0..38] of dint
datalength 读取参数的长度(字节数) array [0..38] of udint
data 从驱动器中读取的数据
(big endian) array [0..233] of byte
3.3 _writedriveparameter:写驱动器中的一个参数值
在“writeparameter”程序中调用_writedriveparameter函数来写入一个驱动器参数值(如p0120),将函数拖曳到lad网络中,如图6所示:枚举类型变量的赋值可以使用move指令。
图6. _writedriveparameter函数块
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或本地变量。
参数含义如下:
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:
表3 函数wout参数结构体数据
结构体元素 名称 数据类型
functionresult 函数调用的返回值 dint
parameterresult 参数指定的返回值 dint
3.4 _writedrivemultiparameter:写驱动器中的多个参数值
在“writeparameter”程序中调用_writedrivemultiparameter函数来写入多个驱动器参数值(如p0120,p0140),将函数拖曳到lad网络中,如图7所示:枚举类型变量的赋值可以使用move指令。
图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函数输出参数意义相同。
程序编写完成之后,将整个程序进行编译,并将其分配到系统执行集中,如图8所示,然后联机下传程序。可以通过:watch table或相关程序的symbaol brower进行变量赋值及在线监控。
图8: 分配程序
本例中将驱动器参数读写程序放置于“backgroundtask”中运行(循环运行)。注意:
(1)因读出的驱动器参数的数据类型为:array of byte ,用户需使用数据转换函数将其转换成驱动器参数中定义的数据类型。
(2)写入驱动器参数时也需先将写入的数据转换成array of byte数据类型。
请参看数据类型转换函数的使用说明。
4.示例程序
示例程序请参考附带文件:read_wri.zip ( 744 kb )
二、simotion中数据类型的转换
1.应用概述
simotion中将“ byte array ”类型数据转换成任意类型数据的函数为:bigbytearray_to_anytype(big endian-type byte array )(siemens为此类型),littlebytearray_to_anytype(little endian-type byte array)。
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、驱动器参数读写、数据类型转换
其它类似信息

推荐信息