首页 > 其他分享 >西门子S7-1200 PLC控制步进电机 MD-4240-PN (番外) 仿SinaPos (FB284) 块编写

西门子S7-1200 PLC控制步进电机 MD-4240-PN (番外) 仿SinaPos (FB284) 块编写

时间:2024-12-11 16:02:46浏览次数:6  
标签:MD 番外 FB284 4240 SinaPos Static PN variables

一、前言

本文是本系列 《西门子S7-1200PLC 控制步进电机 MD-4240-PN》的番外篇—— 仿SinaPos (FB284) 块编写。

MD-4240-PN是一款支持profinet 总线的一体式闭环步进电机,还不了解MD-4240-PN的可以翻看我往期的文章,有详细的从开箱到使用;这一篇番外是记录我为了更好的使用它而参考SinaPos仿写了一个操作逻辑类似的块。我为什么要写这个块? 原因是SinaPos的接口简单,易上手,很多项目都是基于它来写的,使用起来也更习惯,它具有和SinaPos相似的管脚,并且我会开放出来给大家使用。

 原创博主博客

小小小小小6-CSDN博客

往期的文章可以看

西门子S7-1200PLC 控制步进电机 MD-4240-PN (1) 电机开箱

西门子S7-1200 PLC控制步进电机 MD-4240-PN (2) 硬件搭建

西门子S7-1200 PLC控制步进电机 MD-4240-PN (3) 软件组态

西门子S7-1200 PLC控制步进电机 MD-4240-PN (4) 抓包分析

西门子S7-1200 PLC控制步进电机 MD-4240-PN (5) 报文分析

西门子S7-1200 PLC控制步进电机 MD-4240-PN (6) 触摸屏项目搭建

二、什么是SinaPos

经常使用 V90 PN 的朋友应该都不陌生,它是西门子提供的可以实现V90 PN基本定位控制的功能块,能够让电机以 相对定位、绝对定位、连续运行、主动回零、直接设置回零位置、程序段、速度点动、距离点动模式进行运动。

通过编写程序控制块的管脚就能够对V90 PN 进行控制。

它的接口定义如下:

三、仿SinaPos(FB284)块

进入正题,要仿写SinaPos(FB284)块,就要明确块的大致需求,以下是我对需求的总结:

1、管脚大致相似。 (这样能以极低甚至是零学习成本来使用)

2、最好有中文与注释。(SinaPos块的管脚是英文的,这让我这个英语不好的要经常翻帮助文档)

3、自由度高。(块的如何对接我自己能够掌控,有问题可以随时查看)

综合以上我就按照这样的方向去写这个块。

1、输入接口定义

2、输出接口定义

对于一些接口我选择了隐藏,这样不展开时块就会比较简洁。

3、接口展示

展开后如下(隐藏的都是警告、报警、故障,便于使用,不需要是可以收起来)

来个横向对比SinaPos(FB284)

其中需要关注的是块的左下角设备模块硬件标识符,它和前几篇中提到的,调用scl生成的块所需填入的是一样的,

需要注意的是!如果使用了厂家提供的SCL生成的块则不能使用我写的块。因为会造成抢控制权的问题。

这里我做好了中文注释,有不清楚这个管脚的可以将鼠标放在管脚上,提示就能够显示了。

包括有一些管脚它能填写的范围都有提示。

4、部分代码

ModePos设定值判断

IF #ModePos > 8 THEN
    //选择的运行模式不正确 将“ModePos”设置为0至8
    #Error := True;
    #"Static variables".swStatus := 16#8202;
ELSIF #ModePos < 0 THEN
    //选择的运行模式不正确 将“ModePos”设置为0至8
    #Error := True;
    #"Static variables".swStatus := 16#8202;
ELSE
    #"Static variables".siModePos := #ModePos;
    
    //使能标志位
    IF #EnableAxis THEN
        #out._2_motion_mode := #"Static variables".siModePos;
    ELSE
        #out._2_motion_mode := 0;
    END_IF;
    
    //一旦触发撤消错误 无故障
    IF #"Static variables".swStatus = 16#8202 THEN
        #"Static variables".swStatus := 16#7002;
        #Error := False;
    END_IF;
END_IF;

OverV输入值判断

//检查OverV是否在可能的速度超控范围内(0到199%)
IF (#OverV < 0) OR (#OverV > 199) THEN
    #"Static variables".swStatus := 16#8203;
    #Error := True;
ELSE
    //速度转换用于匹配报文
    #"Static variables".siOverV := INT_TO_SINT(#OverV - 100);
END_IF;

 OverAcc输入值判断

// 检查OverAcc是否在可能的速度超控范围内 (0% - 100%)
IF (#OverAcc < 0) OR (#OverAcc > 100) THEN
    #"Static variables".swStatus := 16#8203;
    #Error := True;
ELSE
    #"Static variables".siOverAcc := INT_TO_SINT(#OverAcc - 100);
END_IF;

错误恢复

//一旦触发撤消错误 无故障
IF NOT (#OverV < 0) AND NOT (#OverV > 199) AND NOT (#OverAcc < 0) AND NOT (#OverAcc > 100) THEN
    IF #"Static variables".swStatus = 16#8203 THEN
        #"Static variables".swStatus := 16#7002;
        #Error := False;
    END_IF;
END_IF;

Postive、Negative管脚功能实现

// 3=速度模式下速度由#Positive #Negative来控制旋转方向
IF #"Static variables".siModePos = 3 THEN
    #"Static variables".sdVelocity := ABS(#Velocity);
    IF #Positive AND NOT #Negative THEN
        #out._1_VTarget_mdi := #"Static variables".sdVelocity;
    ELSIF #Negative AND NOT #Positive THEN
        #out._1_VTarget_mdi := -#"Static variables".sdVelocity;
    ELSE
        #out._1_VTarget_mdi := 0;
    END_IF;
ELSE
    //其它模式直接赋值位置与速度
    #out._0_XTarget_mdi := #Position;
    #out._1_VTarget_mdi := #Velocity;
END_IF;

由于篇幅问题这里不再进行过多描述。

我写的块中有大量的注释,能够让使用的人能够自由地修改这个块,如果有好的想法也可以大家一起完善。

这样就符合了我的设计需求。

1、管脚大致相似

2、最好有中文与注释

3、自由度高

四、调用MD-Ctrl

就像使用SinaPos(FB284)类似,把这个块放在一个OB块中,可以是Main[OB1],也可以是自己创建的周期调用的OB块中。

这里我放在了之前创建的块中。

这里大家可能有疑问,为什么我放了两个块,不是说它们不能同时被调用吗?

在它的“设备符号硬件标识符”中,我并未填写参数,也就是说这个块会被运行,但是它没有控制对象,只有当我给定了相应的“设备模块硬件标识符”后,这个块才能控制设备。

这里我选择“md42-dev~Module_1”

这样就基本完成了对接。

我将这个块导出为scl文件,如果有什么疑问欢迎评论区讨论,有需要这个scl的可以在私信找我,人多的话我就上传网盘。

 往期的文章可以搜索《西门子S7-1200PLC 控制步进电机 MD-4240-PN》找到我的CSDN博客

CSDN博主:小小小小小6-CSDN博客

四、结尾

本番外篇主要是将了我仿SinaPos(FB284)做了一个块,在使用上更熟悉,能够快速上手。1200控制的系列到这里就差不多完结了。我准备开坑一个新系列,用S7-200 SMART来控制MD-4240-PN,并且把这个块也移植到S7-200 SMART上使用。

标签:MD,番外,FB284,4240,SinaPos,Static,PN,variables
From: https://blog.csdn.net/weixin_44969644/article/details/144267344

相关文章

  • docker 部署的 蓝鲸bk-cmdb 的一些注意事项
    官方地址:https://github.com/TencentBlueKing/bk-cmdb/blob/master/docs/wiki/container-support.md官方的一些安装文档的槽点1、没有告知docker部署的登录用户和密码。2、什么信息也不给就直接恭喜你能用了:假设系统的地址是192.168.1.100,我部署时将端口映射为“-p8090:809......
  • 什么是日志MDC?一句话简单解释MDC
    官方文档:Chapter8:MappedDiagnosticContext为什么要写这篇文章呢?因为目前互联网上全是从官方文档里机器翻译然后转载的。但实际上我只是想知道什么是MDC,一句话解释一下MDC就可以了。以下内容是我本人对MDC的简单总结MDC的字面意思:MappedDiagnosticContext映射诊断上下......
  • 快速上传本地 md 文件到博客园
    使用pycnblog-master可以快速上传本地md文件到博客园,可以解决直接复制粘贴不能将文件里的图片传上去的问题,非常方便项目下载地址:dongfanger/pycnblog下载下来后最主要是修改config.yaml文件的前四项blog_url:https://rpc.cnblogs.com/metaweblog/ve1kconblog_id:ve1k......
  • 使用patoon的一些技巧和MMD Editor的一些技巧
    首先我们将模型导入mmdeditor中,翻到材质这一个地方,然后呢:我们将脸部的相关贴图都换成toon05.bmp,其他的都02吧!这样是对的!然后呢,保存模型一定要保存和原来位置一样的地方!不然会出现白模!2D就是把圆润的东西变得割裂人物主渲染呢我们选择标准上面的二选一(看截图)神奇!已经有效果了......
  • XCVM1302-3HSEVFVB1369通过业界领先的 DDR 内存接口实现高数据吞吐量 - AMD Versal Pr
    XCVM1302-2MLIVSVF1369XCVM1302-2MSEVSVF1369XCVM1302-2MSIVFVB1369XCVM1302-2MSIVSVF1369XCVM1302-3HSEVFVB1369明佳达Versal自适应SoC兼具可编程逻辑和加速引擎的灵活处理能力,以及先进的内存和接口技术,可为各类应用实现定制化、强大的异构加速。VersalPrime系列是基......
  • MySQL元数据锁MDL导致无法操作数据库的解决方法
    本文主要介绍元数据锁MDL导致无法操作数据库的解决方法以及如何避免元数据锁阻塞。MetaDataLock主要为了保证元数据的一致性,用于处理不同线程操作同一数据对象的同步与互斥问题。MySQL5.5版本开始,引入了MDL锁,MDL锁是表级别的锁,有些类型的MDL锁会导致读写操作都无法进行,导致S......
  • cmd命令中输入很多命令都没有结果返回
    问题现象现象1:无任何结果返回,命令结束1routeprint 现象2:阻塞,光标闪烁,一直在等待结果返回,也不报错1java-version 排查过程网上找了很多贴子,都没解决问题,以为操作系统坏了,都想重装系统了,但是电脑装了很多东西,重装系统好多东西得重整太麻烦了。最后无意中发现是因......
  • 在 MMDetection 中,数据增强
    在MMDetection中,数据增强是提升模型性能的关键部分。除了你提到的基本数据增强方法外,MMDetection提供了许多其他数据增强方式。以下是一些常用的数据增强方法:常用数据增强方法调整尺寸Resize:调整图像大小,可以指定固定尺寸、最大短边或按比例缩放。MinIoURandomCrop:随机......
  • python: Multi Document Interface (MDI) using PyQt6
     #encoding:utf-8#版权所有2024涂聚文有限公司#许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎#描述:pipinstallpyqt6#Author:geovindu,GeovinDu涂聚文.#IDE:PyCharm2023.1python3.11#os:windows10#database:my......
  • 输出与文件编码的兼容性 在 .CMD 文件中,通过正确的编码方式(如 UTF-8),可以确保脚本与外
    在计算机科学和技术领域,.CMD和.BAT文件都属于批处理脚本文件格式,它们是Windows操作系统中用于执行命令的一种文件类型。虽然这两者非常相似,但.CMD文件有一些相对于.BAT文件的优势,特别是在Windows2000及以后版本中。下面将分析.CMD文件相对于.BAT文件的一些优势,并......