AI小西
热门搜索
1847工业学习平台与计算机连接SIWAREX MSPLC编程温度仪表资料汇总选型

签到有奖

  • 移动端入口

  • 工业服务小程序
  • 支持中心移动端首页
  • AI小西-AI智能问答助手
  • SIEMENS工业找答案小程序
  • 工业培训与认证
  • 西门子工业1847俱乐部
  • SIEMENS工业技术支持与服务
@CurrentUser.EmailCount@

消息提醒

登录 | 注册
@CurrentUser.NickName@
1847会员:未开通
VIP等级 @CurrentUser.vipLevel@
西币
@CurrentUser.coin@
  • 我的支持中心
  • 我的1847会员
  • 我的技术论坛
  • 我的找答案
  • 我的下载中心
  • 我的售后服务
  • 我的培训认证
  • 我发的帖子
  • 我跟的帖子
  • 我的论坛设置
  • 论坛用户指南
  • 我的下载中心
  • 我的培训认证
  • 我的提问
  • 我的回答
  • 已经帮助了@CurrentUser.allAnswercount@人我要回答
  • 已连续活跃@CurrentUser.allLoginDayCount@天我要提问
  • 首次回答问题获得双倍西币积分
  • 个人设置
  • 退出
  • 技术支持

    技术支持

    • 技术支持
    • AI小西
    • 风驰卡
    ×
  • 售后服务

    售后服务

    • 我要报修
    • 服务进度查询
    • 质保及权益查询
    • ASP工程师验证
    • ASP公司证书验证
    • 全球服务指南
    • 售后服务常见问题
    ×
  • 下载中心

    下载中心

    • 下载中心首页
    • 下载中心精选主题
    • 常见问题大全
    ×
  • 学习与培训

    学习与培训

    • 1847工业学习平台
    • 取证训练营
    • 教室培训
    ×
  • 备件与增值服务

    备件与增值服务

    • 标准备件采购
    • DCMA变频器健康管家
    • 风驰卡
    • 百数达
    • 孔明策
    • 西服无忧
    • SIMACAS@智维宝
    ×
  • DIOMIS订单管理

    DIOMIS订单管理

    • DIOMIS订单管理
    ×
  • 用户互动

    用户互动

    • 找答案
    • 技术论坛
    ×
  • 精选主题new

    精选主题

    • 产品主题
    • 产品入门
    • 产品技术专题
    • SMART系列产品
    • WinCC官方网站
    • WinCC Unified技术主页
    • SIMATIC S7-1200技术主页
    • 应用主题
    • 自动化标准机型应用中心
    • 运动控制专区
    ×

西门子商城

技术论坛首页 最新发帖 精华帖 发新帖
登录注册
  • 西门子中国
  • 支持与服务门户网站
    我的支持中心
    下载中心首页
    全球技术资源
    1847工业学习平台
    产品入门新手必读
    找答案
    技术论坛
    售后服务
    网络资源新手必读
    高级搜索
  • 技术论坛
    论坛公告
    论坛使用指南
    最新发帖
    精华帖
    分享帖
    高赞帖
    热门帖
    高端推荐帖
    最高收藏帖
  • 谈天说地 / 谈天说地
  • 【实用FC系列】之三,判断BUFFER中数据是否更改

技术论坛

 • 产品分类
自动化系统
  • SIMATIC S7-1500系列 
  • SIMATIC S7-1200系列 
  • SIMATIC S7-200
  • SIMATIC S7-200 SMART 
  • SIMATIC S7-300/400 
  • 通信与网络组件
  • Profinet技术开发专区
  • 工业边缘计算
  • SIMATIC WinCC / Panel 
  • SIMATIC WinCC OA (原PVSS)
  • DCS/SIMATIC PCS7
  • IPC/PG
  • LOGO!
  • 物联网(IOT)
  • 工业电源
驱动技术
  • SINAMICS 
  • SINAMICS S200 
  • 直流调速器
  • 电机
  • SIMOTION
  • MicroMaster
  • 驱动技术综合产品
  • MasterDrives 
  • DCMA 变频器健康管家 维护智库
数控系统
  • SINUMERIK 
  • SIMODRIVE
低压电气
  • 低压电气
  • 低压数字化
传感器与通讯
  • 过程仪表
  • 分析仪器
  • 工厂传感器
谈天说地
  • 谈天说地
  • 新产品探秘 
 • 咱工程师的故事
咱工程师的故事
  • 网友专栏 
  • 工程师随笔
1847大咖专栏
  • 崔工谈博途与PLC
  • PROFINET工业通信详解
  • 冯工聊工业网络
  • 电磁兼容问题及处理
  • 大咖专栏合集
特别专题
  • 专家大讲堂课后探讨
  • 西门子工业1847俱乐部
  • 特别专题合集
 • 培训与认证答疑专区
培训与认证答疑专区
  • PLC编程精英训练营
  • MA 小型自动化系统
  • WinCC系统开发工程师精英训练营
  • V90精英训练营
  • WinCC精英训练营
  • S7-1200精英训练营
  • G120变频器精英训练营
  • S7-200SMART精英训练营
 • 服务合作伙伴专区
服务合作伙伴专区
  • FA合作伙伴共创社区
  • Networks and Communication
  • GMC蓝黄带考试-G120
  • GMC蓝黄带考试-V90
  • GMC 合作伙伴专区

【实用FC系列】之三,判断BUFFER中数据是否更改

yang9188

西门子1847工业学习平台

  • 帖子

    56
  • 精华

    2
  • 被关注

    31

论坛等级:侠客

注册时间:2020-08-31

钻石 钻石 如何晋级?

【实用FC系列】之三,判断BUFFER中数据是否更改

398

0

2026-03-26 13:35:08


    之前2篇实用FC的帖效果都不错。今天再分享一个实用FC。

    今天说的这个FC用于判断buffer中的数据是否更改了。为什么开发这个小FC呢,今天就说说这事。

    事情源于一个小项目。小项目包括5个24V供电的小伺服电机。电机内核是CANOPEN协议。但是可以用modbusRTU写入控制字和读取状态字。于是我用了ET200SP的PTP模块与这些小电机做硬件上的RS485连接。用“Modbus_Master”指令向每个电机读写数据。项目可以顺利的运行,通讯也没    有什么问题。在这个小项目中每个电机用2个“Modbus_Master”指令与伺服电机对话,一个用于读伺服数据,另一个用于写数据。5个电机需要10个“Modbus_Master”指令。在程序中编写了代码用于统计耗时,每个“Modbus_Master”指令大约耗时50-70毫秒。那么整个轮询就需要500-700毫秒,这意味着每个电机的读写和控制的间隔时间接近1秒。在上位软件中经常能感觉到点击运行指令后的延迟。人机的体验很不好。为此我思考有什么办法可以缩短轮询时间。

    CANOPEN通讯有个特点。每个CANOPEN通讯点都可以保存接收到的数据,并且在下次接收数据之前始终保持这些数据。这个特点意味着,只要控制字不变化,就无需每个轮询周期都向伺服电机写控制字。为此在PLC程序中需要判断这次向伺服电机写的控制字与上一次是否相同,如果相同那么就无需调用“Modbus_Master”指令向伺服电机写数据。于是就有了本贴中这个主题FC。


图1


    图1是这个FC Judege_DataChenged的引脚图。

        Buffer_This中给出这次需要向伺服电机写的数据。

        Buffer_Pre是一个buffer,存储上一次向伺服电机写的数据。

        Count_Word告知这个FC需要比较buffer中多少个字。注:因为modbus是以字为单位发送和接收数据的。如果需要我们也可以将之更改为byte。

        Changed代表buffer中的数据更改了。

 

    图2给出这个FC的内部代码

图2


    然后我们说说在这个项目中如何使用这个块。

图3

    图3是一个FB(PollingTriger_Modbus_RW_PDO_Nimotion)的内部代码。每个FB的实例都会被赋予一个轮询号码。当轮询到这个FB实例时,执行这个FB中的代码。每个轮询号码代表一个电机。也就是当轮询号码等于本FB实例的轮询号码时,就会执行本FB中的任务。任务中首先读取该伺服电机的数据。这在NETWORK1中执行。

    在NETWORK2中,如果能正常读取伺服的数据,那么执行2个FC(FC1,FC18)。通过“Buf_<>PDO”块将读取的数据放到“#INTF_PDO_RW.Read”数据区中,供高层代码使用,同时这个块还负责将高层代码需要写入的数据(#INTF_PDO_RW.Write)放入到“buffer_MB_This”中。然后通过FC Judege_DataChenged判断高层代码写入的数据是否更改。如果更改了,那么在NETWORK3中执行向伺服电机写入的任务。如果没有更改,则免去执行写入的任务。

    以上就是使用FC Judege_DataChenged块的情况。

    对5个电机在程序中添加了数据更改的判断后,整体的轮询时间缩短近一半,平均轮询时间在300-400毫秒左右。在上位机点击运行也没有延迟感了。

    以上就是本主题要分享的FC(Judege_DataChenged)块。 

    总结:本篇给出了一个实用小FC,该FC可以判断缓冲区中的数据是否被更改了。

剩余80%未阅读, 请登录阅读

回帖加入探讨技术论坛守则

上传附件要求

1. 文件大小:上传文件的大小请限制在2M以内。

2. 文件格式:请不要上传.exe文件,系统支持的格式有:
.avi,.wmv,.mp3,.rar,.zip,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.wma,.asf,.txt,.7z

 
发分享帖
爱工控,乐分享,
分享您的经验与案例
发故事
发表您的精彩故事,
参与征文活动
技术探讨帖
阐述您的观点,
表达我的看法
西家杂谈
海侃天南地北,
闲聊工控世界
发求助帖
求道解惑,“刨根问底”
解决问题
发投票帖
邀投票,做调查,
网友帮您来作主
取消原因:
【实用FC系列】之三,判断BUFFER中数据是否更改
编辑推荐: 关闭

请填写推广理由:

活动公告 查看全部公告>

【免费得】提交调研结果免费得电子版《西门子自动化产品500问》

1,875,083 条
海量精彩技术内容

100,000+ 网友与你交流

助你技有所长,论有所获

热门视频,猜你喜欢

本版热门话题

谈天说地

共有14379条技术帖

更多

评选标准

相关推荐

换一换

热门标签

换一换

相关帖子推荐

换一换
正在加载...
guzhang

恭喜,你发布的帖子

被评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片

下载中心

  • 首页
  • 查找文档
  • 常见问题大全
  • 精选主题
  • 全球技术资源

  • 首页
  • 知识库
  • 订阅文档

1847工业学习平台

  • 首页
  • 了解会员权益
  • 立即开通1847会员
  • 课程中心
  • 学习路线
  • 初级工程师认证
  • 高级工程师认证

培训与认证

  • 首页
  • 教室培训课
  • 取证训练营
  • 在线自学课
  • 认证证书查询
  • 培训伙伴验证

技术论坛

  • 首页
  • 发帖
  • 最新发帖
  • 精华帖
  • 高赞贴
  • 当前热门帖
  • 高端推荐帖
  • 用户荣誉榜

找答案

  • 首页
  • 提问
  • 精华问答
  • 高赞问答
  • 新解决问题
  • 待解决问题
  • 总积分排行榜

售后服务

  • 我要报修
  • 服务进度查询
  • 质保及权益查询
  • 备件商城
  • ASP工程师验证
  • ASP公司证书验证
  • 支持中心网站重要声明

西门子中国   © 西门子(中国)有限公司 1996 – 2026   企业信息    隐私政策   使用条款   京ICP备06054295号   京公网安备 11010502040638号
 
支持中心新发布“关注”功能了!实时查看彼此动态,更方便地进行技术交流。
不管是“关注”与“被关注”,相信都是一个美好的开始!
还有多重奖励派送,快快行动起来吧!

20秒帮我们优化支持中心!

欢迎您访问支持中心!

丰富的视频,全方位的文档,大量的网友交流精华……

为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!

感谢您的支持!

您收到0封站内信:
×
×
图片
立即
签到
已签到
已签到0天
累计可抽西币次数:0次抽奖机会
累计可抽惊喜实物奖次数:0次抽奖机会
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。