『7x24小时有问必答』
"三阶段"优秀工程师之路
1、基础阶段:博途PLC技术。
2、中级阶段:博途与C#高级语言技术。
3、高级阶段:PLC标准化编程方法。
标准化方法之路!
         相信大家对111报文通过SinaPos指令实现伺服电机的简易精准定位已经烂熟于心,今天谈一下利用SinaParaS指令对驱动器参数进行读写。
         实际项目中大部分驱动器参数是设定好的,设备运行时无需在对参数进行修改。但为了适应各种工况,提高系统开放度,有时也会为用户提供一些伺服驱动器参数更改权限。这时要求用户通过驱动器上的按键进行参数调整会增加参数调整难度和参数错写几率。
         这时通过PLC和触摸屏(或上位机)的搭配进行驱动器参数读写无疑是最好选择,事实上西门子PLC也为大家提供了驱动器参数读写指令:SinaPara和SinaParaS。其中SinaPara可读写16个驱动器参数,用法参照博途帮助用法比较简单。但很遗憾目前很多主流驱动器是不支持SinaPara指令同时读写16个驱动器参数的(如图1中驱动器文档的介绍)。那能不能通过SinaParaS指令实现与SinaPara指令类似的功能呢?答案是肯定的。
             这里敢竭鄙怀,恭疏短引,希望会对大家有所帮助。登高作赋,还是所望于群公。

第一步:组态硬件和网络

第二步:程序编写
         程序主要特点是自动检测参数的写入值和读取值,当检测到写入值和读取值不一样时,自动将写入值写入,方便省时无需在触摸屏(或上位机)中设置参数写入按钮。
功能说明:
1)使用西门子111报文时,利用Sina_ParaS指令读写16个Dint参数
  2)当读取到的16个参数和写入值不同时自动写入1次
  3)输入参数地址从 paramAddress_in[0] 开始填写,注意:地址为0和地址为0以后的索引均不能写入驱动器。
例如你需要写入 4 个驱动器参数,请将4个驱动器参数地址分别对应写入到paramAddress_in[0]到paramAddress_in[3]。
1、形参部分

2、程序内容部分

子程序中分别写了三个Region。
第一个Region:计算要写入参数的数量。当输入的地址大于0时默认地址有效,并让输入参数的数量+1。

第二个Region:检测参数写入值和读取值是否相同,不同时进行写入。

第三个Region:写了读写参数的具体实现,需要注意的是利用SinaParmS读写多个参数时其实是类似轮询的,本质上还是读写完一个在读写一个。这里利用上一个参数的读取完成信号作为下一个参数的写入信号。但在实际操作过程中可能是由于读写速度太快会有有些参数写入失败的情况,不得已加了延时,每个参数写入完成后需要等待2ms。

第三步:通过驱动器厂商提供的软件监控一下,发现参数已经成功写入到驱动器。

总结:程序优化
当然程序目前还存在很多问题可以去优化。
例如:多个参数写入时调用了多个SinaParaS指令。
为了分支0-15不同数量的参数写入,采用了很多GOTO语句。
欢迎大家给与批评,并作出斧正。
加入博途之友,与优秀工程师有约
  芮老师的书籍(京东和当当可以购买)  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码