- {{item.name}}
在SIMOTION中读取、写入驱动器参数及数据类型的转换
- 0
- 1025
- 7035
一、驱动器参数的读取及写入
1.应用概述
SIMOTION中读取及写入驱动器参数的函数为:_readDriveParameter,_readDriveMultiParameter,_writeDriveParameter ,_writeDriveMultiParameter。SIMOTION最多可以同时处理16个参数读写任务,每个DP站只能允许一个任务。
SIMOTION通过_readDriveParameter,_readDriveMultiParameter函数可方便读取驱动器中的单个或多个参数值;通过_writeDriveParameter ,_writeDriveMultiParameter函数可修改驱动器中的单个或多个参数值。
2.通讯报文的配置
在硬件配置中配置好驱动器的通讯报文
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 函数块
给所有的参数赋值,变量可以任意定义,如“Rnextcommand”变量,键入后选择变量类型如图4所示:
图4: 配置参数类型
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址
parameterNumber:
UDINT数据类型,指定要读取驱动器的参数号
numberOfElements (optional):
UDINT数据类型,指定要读取驱动器参数的索引数目。
0: 读取无索引号的参数不需填写。
1: 读取subIndex索引的参数。
n(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 BYTE
3.2 _readDriveMultiParameter:读取驱动器中的多个参数值
在“readparameter”程序中调用_readDriveMultiParameter 函数来读取驱动器中的多个参数值(如P314,r0026),将函数拖曳到LAD网络中,如图5所示:枚举类型变量的赋值可以使用MOVE指令。
图5. _readDriveMultiParameter函数块
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或本地变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址
numberOfParameters:
UDINT数据类型,指定要读取驱动器参数的数量,设定范围:1-39。
parameterNumber:
ARRAY [0..38] OF UDINT数据类型,指定要读取驱动器的参数号。
numberOfElements:
ARRAY [0..38] OF UDINT数据类型,指定要读取驱动器参数的索引数目。
0: 读取无索引号的参数不需填写。
1: 读取subIndex索引的参数。
n(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数据类型,指定要写入驱动器的参数号。
numberOfElements (optional):
UDINT数据类型,指定要写入驱动器参数的索引数量。对于写入无索引号的参数不需填写。
0: 写入无索引号的参数不需填写。
1: 写入subIndex索引的参数。
n(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函数块
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量。
参数含义如下:
ioId (optional):
可选项,不必填写
logAddress:
DINT数据类型,指定驱动器的逻辑地址。
numberOfParameters:
UDINT数据类型,指定要写入驱动器参数的数量,设定范围:1-23。
parameterNumber:
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器的参数号。
numberOfElements:
ARRAY [0..22] OF UDINT数据类型,指定要写入驱动器参数的索引数量。对于写入无索引号的参数不需填写。
0: 写入无索引号的参数不需填写。
1: 写入subIndex索引的参数。
n(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、驱动器参数读写、数据类型转换
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- SIMOTION 时间数据类型转换
- 如果在集成的 WinCC flexible 项目无法再访问 STEP 7 中的符号及数据块时需要如何处理?
- 如何在SIMOTION程序中读写工艺对象的配置数据
- TIA 博图数据块中数据类型的定义
- 在运动控制应用中使用DB_ANY数据类型的好处是什么?
- SIMATIC S7-1200 / S7-1500 的 OPC UA 服务器中 SIMATIC 数据类型的类型描述在哪个节点 ID 下?
- 如何从AOP中读取参数组
- 如何从CP 1242-7 GPRS V2中读取高级诊断数据?
- 什么类型的HMI可以与SIMOTION设备连接
- ET 200SP 电机启动器:通过 HMI 连接读取和写入数据集
{{item.nickName}}