- 自动化系统
- 驱动技术
- 低压电气
- 工业服务
- 其他
S200 PN驱动的参数读写





- 0
- 435
S200 PN驱动的参数读写
1、通过SinaPara(S)非周期读写参数
1.1、SinaPara读写多个参数(单次最多读写16个参数)
引脚名称 | 类型 | 说明 |
Start | BOOL | Start:在参数操作过程中 start 的上升沿会启动参数操作任务 |
ReadWrite | BOOL | 参数=0 表示读取操作,如果等于 1 对应写入操作 |
ParaNo | INT | 读写参数数量,范围1~16 |
AxisNo | BYTE | 驱动编号对于S200填1 |
hardwareId | HWIO | 硬件标识符 |
Parameter | Array[1..16]ofSinaParameter | 参数列表可在DB块中定义 |
Ready | BOOL | 程序块没有执行读或写操作,处于准备状态 |
Busy | BOOL | 当写入参数执行时为 1,如果完成或者故障后变成 0 |
Done | BOOL | 任务执行完成,可以用于编写程序时复位请求使用 |
Error | BOOL | 出错标志位 |
ErrorId | DWORD | 返回值 |
DiagId | WORD | 扩展通讯错误 |
注意:
hardwareId从S200的硬件组态中找到:在“设备视图”中右键点击“X150网口”处选择“属性”,然后在“系统常数”中可找到报文的硬件标识符。
Parameter参数数据结构:
如何建立Parameter变量:
1、在“程序块”中添加新块并添加一个全局数据块
2、在全局数据块中建立一个变量,其中数据类型为“Array[1..16] of SinaParameter”
演示实例:
通过SianPara功能块读取参数P2000(实型)和P2505(整型),功能块引脚设置:
Parameter数据结构变量填写及触发start引脚后读取到的实际结果:
1.2、SinaParaS读写单个参数
引脚名称 | 类型 | 说明 |
Start | BOOL | Start:在参数操作过程中 start 的上升沿会启动参数操作任务 |
ReadWrite | BOOL | 参数=0 表示读取操作,如果等于 1 对应写入操作 |
Parameter | UINT | 需要读写的参数号 |
Index | UINT | 参数下标 |
ValueWrite1 | REAL | 此处写入DWORD或DINT类型之外的参数值 |
ValueWrite2 | DINT | 此处写入DWORD或DINT类型的参数值 |
AxisNo | BYTE | 对于S200填1 |
hardwareId | HW IO | 硬件标识符 |
Ready | BOOL | 程序块没有执行读或写操作,处于准备状态 |
Busy | BOOL | 当写入参数执行时为 1,如果完成或者故障后变成 0 |
Done | BOOL | 任务执行完成,可以用于编写程序时复位请求使用 |
ValueRead1 | REAL | 此处读实型的参数值 |
ValueRead2 | DINT | 此处读整型的参数值 |
Format | INT | 所读参数的格式 |
ErrorNo | INT | 错误代码 |
Error | BOOL | 出错标志位 |
Status | DWORD | 状态值 |
DiagId | WORD | 扩展通讯错误 |
演示实例:
通过SinaParaS读取参数P2000(实型),将“ReadWrite”设置成0,在参数号引脚“Parameter”中填写2000;触发“start”引脚后在输出侧“ValueRead1”中得到实际数据
通过SinaParaS写入参数P5308(整型),将“ReadWrite”设置成1,在参数号引脚“Parameter”中填写5308,在输入侧“ValueWrite2”中填写想要更改的参数值;触发“start”引脚即可。
1847视频教学链接:
https://1847.siemens.com.cn/course/detail/1/1811048/6888
2、通过LAcycCom库非周期读写参数
LAcycCom库下载链接及功能块说明:
https://support.industry.siemens.com/cs/document/109479553/
对于非循环(非循环)通信,每个设备只允许一个 DPV1(异步 PROFIBUS 通信)请求。如果同时向设备发出两个或多个 DPV1 请求,则在处理设备中的请求时可能发生冲突。然后,这些冲突导致不同的 DPV1 请求相互干扰。为了防止这种总线冲突的发生,用户有责任避免这种冲突,并且必须对每个新的 DPV1 请求进行检查,看另一个请求是否已经在相关设备上处于活跃状态。
针对一个PLC对多个驱动器,通过DPV1服务进行非周期循环数据交换的应用, 为了帮用户减轻这一任务,我们有一个用来处理请求任务管理的应用库(LAcycCom),它解决了PLC非周期数据交换资源的管理问题,优化利用SIMATIC有限的通信资源,避免数据传输中的冲突。
请求管理的基本原则是提供和管理一个请求缓冲区,这其中使用 DPV1 服务的每个 应用程序都将进入自己的缓冲区。然后,中央管理向每个应用程序颁发使用 DPV1 服务的授权,从而保证使用通道时不会发生任何冲突 (即没有冲突)。
2.1、LAcycCom库的添加
在全局库中打开LAcycCom库后,依次将库下的“模板副本”中的功能块、变量及数据类型都添加到对应PLC的组态中(选中后拖入对应文件夹下即可)。对于非周期读写参数来说,不需要添加所有功能块,下文将根据不同要求调用不同的功能块。
2.2、用FB30510读取单个参数
引脚名称 | 类型 | 说明 |
execute | BOOL | TRUE: 上升沿启动功能一次 |
driveObjectId | INT | 驱动对象标识号,S200填1 |
hardwareId | HW IO | 硬件模块的硬件标识符, |
parameterNumber | UINT | 参数编号 |
index | UINT | 参数索引 |
Busy | BOOL | FB 处理还未完成 |
Done | BOOL | 任务执行完成 |
Error | BOOL | TRUE: FB 执行过程中出现错误 |
Status | WORD | 状态标识符 |
realValue | REAL | 参数值(实际值) |
dWordValue | DWORD | 参数值(双字节值) |
errorValue | BYTE | 错误标识 |
diagnostics | 诊断结构 |
演示实例:
通过FB35010读取参数P2000(实型),首先在OB1中调用FB30501并触发“enable”引脚激活非循环数据资源管理,然后在FB35010的参数号引脚“ParameterNumber”中填写2000;触发“execute”引脚后在输出侧“realValue”中得到实际数据。
2.3 通过FB35011写入单个参数
引脚名称 | 类型 | 说明 |
execute | BOOL | TRUE: 上升沿启动功能一次 |
driveObjectId | INT | 驱动对象标识号,S200填1 |
hardwareId | HW IO | 硬件模块的硬件标识符, |
parameterNumber | UINT | 参数编号 |
index | UINT | 参数索引 |
value | REAL | 参数值(REAL格式) |
dWordValue | DWORD | 参数值(双字节值) |
Done | BOOL | TRUE: 完成参数写入 |
Busy | BOOL | FB 处理还未完成 |
Error | BOOL | TRUE: FB 执行过程中出现错误 |
Status | WORD | 状态标识符 |
errorValue | BYTE | 错误标识 |
diagnostics | 诊断结构 |
演示实例:
通过FB35011写入参数P2000(实型),首先在OB1中调用FB30501并触发“enable”引脚激活非循环数据资源管理,然后在FB35011的参数号引脚“ParameterNumber”中填写2000;在“value”引脚填写更改的参数值,最后触发“execute”引脚。
2.4通过FB30512读取多个参数
引脚名称 | 类型 | 说明 |
execute | BOOL | TRUE: 上升沿启动功能一次 |
parameterCount | INT | 读取参数数量 |
driveObjectId | INT | 驱动对象标识号,S200填1 |
hardwareId | HW IO | 硬件模块的硬件标识符 |
dateset | 要读取参数的数据集 | |
Done | BOOL | TRUE: 完成参数写入 |
Busy | BOOL | FB 处理还未完成 |
Error | BOOL | TRUE: FB 执行过程中出现错误 |
Status | WORD | 状态标识符 |
diagnostics | 诊断结构 |
演示实例:
通过FB35012读取参数r21/r26/r27/p2000(实型),首先在OB1中调用FB30501并触发“enable”引脚激活非循环数据资源管理,然后在FB35012的“dateset”引脚中填写对应格式类型的数组变量, 其中读取实数型变量建立Array[0..X] of "LAcycCom_typeDriveDatasetReal"类型变量;读取整型变量建立Array[0..X] of "LAcycCom_typeDriveDatasetDWord"类型变量(X为读取个数上限),并在数组变量中填写对应参数号,最后触发“execute”引脚。
2.5通过FB30513写入多个参数
引脚名称 | 类型 | 说明 |
execute | BOOL | TRUE: 上升沿启动功能一次 |
parameterCount | INT | 读取参数数量 |
driveObjectId | INT | 驱动对象标识号,S200填1 |
hardwareId | HW IO | 硬件模块的硬件标识符 |
dateset | 要写入参数的数据集 | |
Done | BOOL | TRUE: 完成参数写入 |
Busy | BOOL | FB 处理还未完成 |
Error | BOOL | TRUE: FB 执行过程中出现错误 |
Status | WORD | 状态标识符 |
diagnostics | 诊断结构 |
演示实例:
通过FB35013写入参数p1460/p2000(实型),首先在OB1中调用FB30501并触发“enable”引脚激活非循环数据资源管理,然后在FB35013的“dateset”引脚中填写对应格式类型的数组变量, 其中写入实数型变量建立Array[0..X] of "LAcycCom_typeDriveDatasetReal"类型变量;写入整型变量建立Array[0..X] of "LAcycCom_typeDriveDatasetDWord"类型变量(X为读取个数上限),并在数组变量中填写对应参数号和参数值,最后触发“execute”引脚。
1847视频教学链接:
https://1847.siemens.com.cn/course/detail/1/1811048/7022
- 评论
扫码分享