AI小西
热门搜索
1847工业学习平台选型定位器资料汇总PLC编程过程调节器选型产品信息

签到有奖

  • 移动端入口

  • 工业服务小程序
  • 支持中心移动端首页
  • 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 G2技术主页
    • 应用主题
    • 自动化标准机型应用中心
    • 运动控制专区
    ×

西门子商城

技术论坛首页 最新发帖 精华帖 发新帖
登录注册
  • 西门子中国
  • 支持与服务门户网站
    我的支持中心
    下载中心首页
    全球技术资源
    1847工业学习平台
    产品入门新手必读
    找答案
    技术论坛
    售后服务
    网络资源新手必读
    高级搜索
  • 技术论坛
    论坛公告
    论坛使用指南
    最新发帖
    精华帖
    分享帖
    高赞帖
    热门帖
    高端推荐帖
    最高收藏帖
  • 咱工程师的故事 / 网友专栏
  • 【小型自动化漂流瓶】+ PLC程序结构与框架之 解耦

技术论坛

 • 产品分类
自动化系统
  • 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 合作伙伴专区

故事作者:yang9188论坛推荐作者

最近创作

看看TA的故事

【小型自动化漂流瓶】+ PLC程序结构与框架之 解耦

yang9188

西门子1847工业学习平台

  • 帖子

    56
  • 精华

    2
  • 被关注

    31

论坛等级:侠客

注册时间:2020-08-31

钻石 钻石 如何晋级?

【小型自动化漂流瓶】+ PLC程序结构与框架之 解耦

18

2

2026-06-09 11:55:02

PLC程序结构与框架之 解耦    


    在PLC编程这个领域中探讨的帖子比较多,我的前几篇帖子都偏重PLC编程的基础知识。这一篇换个打法,我们探讨稍微有些虚的话题,程序解耦。

    聊程序解耦就太抽象乏味了。本贴通过一个具体例子来探讨和体会程序的解耦问题。这个例子与上一个帖是一个项目。上一个帖的链接如下

            https://www.ad.siemens.com.cn/club/bbs/post_2010333_25_0_0.html#anch

1.    需求

    这里简单介绍一下项目中一个需求。项目要控制5个ModbusRTU通讯的伺服小电机。这个    电机虽然是RTU通讯,但是内核是CanOpen。

    项目的思路是用1个ET200SP的PTP模块连接5个小伺服电机。要求通过通讯对电机进行控制。

    分析一下需求,很容易把以上的要求划分为2大块功能:

    1,        电机通讯功能;

    通讯的功能包括单个电机的通讯功能、各个电机的轮询功能、通讯异常处理功能、是否写    数据判断功能(这在上一帖中探讨的)。

    2,        电机控制功能。

    电机控制功能包括电机启停、回零以及多个电机协调运行功能。


2.    构思

    在构思程序时,我的设想是将这2块功能的代码解耦。

    解耦的目的就是要将2大功能各自编写代码,互不干扰。在电机控制代码模块中,代码专注于:如何控制电机;电机如何回零;如何协调电机之间的动作;不操心电机通讯的问题。同样在电机通讯模块中,代码关注如何通讯;如何轮询;如何缩短轮询周期;如何提高通讯强壮性;不关心电机控制的问题。


3.    详解

    本项目是按照以上解耦思路进行代码的编写。

图 1


    电机通讯模块在图1中83目录中,电机控制模块在71目录中。这2个模块的代码通过数据通道进行耦合,除此以外没有任何代码的关联,这就实现了解耦的目的。


3.1.      数据通道

    先看看数据通道,数据通道在图2中展示


图 2


注:虽然小伺服电机是MODBUSRTU通讯接口,但电机内部是CANOPEN的架构,所以熟悉CANOPEN的同行看着很眼熟。


    图2中总共有7个数据通道,每个电机占用一个数据通道(另外2个通道做预留)。电机和数据通道可以任意分派。每个数据通道包含一个伺服电机读写数据及控制数据,控制数据包括:

    Enable:本通道是否使用

    ComOK:本通道通讯状态

    Addr:本通道对应的modbus地址

 

    前文介绍过数据通道是2个代码模块唯一连接点。下面分别介绍电机通讯代码模块和电机控制模块。


3.2.      电机通讯模块

    在通讯模块中(图1中的83文件夹),FB29中编写代码如图3


    

图 3


    图3中,先说明通道与通讯的关系。

    每个通道都如NETWORK5。以通道1为例。

如图3中的红框内,需要将数据通道1与FB(PollingTriger_Modbus_RW_PDO_Nimotion)的一个实例做连接,这样就完成了通道1的数据与伺服电机进行通讯。

程序中配置了7个通道。所以共有7个FB(PollingTriger_Modbus_RW_PDO_Nimotion)实例。每个实例对应一个通道。这些实例之间是轮询关系。7个实例的轮询号码是:100、200..700。

    在这个电机通讯模块中,除了有单个电机的通讯代码和轮询代码外,还有初始化代码(NETWORK1)、PTP端口配置代码(NETWORK2)、异常处理代码(NETWORK4)。总之凡是与通讯有关的代码都在图3中。


3.3.      电机控制模块

    前面探讨了电机通讯模块的编程。另外一方面,在电机控制模块中(图1的71文件夹),如图4

图 4


    在图4中,FB15内部是工艺名称为TRANSFER伺服电机的工艺控制代码。将这个工艺电机的控制与通道1通过红框的方式做了连接,连接后就实现了TRANSFER伺服电机的控制通过数据通道1与通讯模块的代码进行了耦合。换句话说:在电机控制模块内部,将TRANSFER的过程数据传输给通道1,电机通讯模块将通道1中的过程数据通过通讯程序与电机做数据交换。在FB15中,我们可以编写代码控制电机启停、复位、回零等工艺动作。

    其他工艺电机如LIFT1,LIFT2,RT的情况也是如此。


4.    解耦的好处

    以上介绍了例子项目中如何实现电机控制模块和电机通讯模块的代码解耦,以及模块之间的数据耦合。

    这种解耦的程序架构有什么好处呢?

    1,        使得程序看起来简洁,易于分块,条理清晰,层次分明。

    2,        2个模块无程序之间的耦合。2个模块在独立开发过程中,无需考虑对方模块的任何内容,每个模块只要专注自己模块的开发。容易实现多人共同开发。

    3,        易于移植。电机通讯模块可以认为是底层基础模块。电机控制模块是高层工艺应用模块。底层模块可以轻松移植到其他项目中,缩短了项目开发周期。每个项目不同之处只在于高层工艺模块。

    4,        调试方便。以电机通讯模块为例,只要有2个电机通讯正常,那么可以肯定电机通讯模块就不会存在BUG。如果出现问题,那么在电机控制模块中找BUG。

    5,        模块更换简单。如果未来伺服电机不用MODBUSRTU通讯而改用CANOPEN通讯,那么无需修改电机控制模块中的任何内容,只需修改电机通讯模块中的一少部分内容即可完成整个程序的修改。

    既然解耦的程序架构有这些好处。我们在构思一个新的PLC程序架构时应优先考虑解耦的架构。


5.    解耦的手段

    在本例中,我们利用了博途提供的数据接口实现解耦。

    在其他开发环境下,如SIMATIC AX开发环境提供OOP开发。OOP开发环境都支持函数的接口。函数接口为我们提供了定义功能和实现功能的解耦手段。

函数接口和数据接口都为程序的解耦提供了很好的工具方法。由于现阶段博途尚未开放OOP,所以本贴仅仅探讨了数据接口实现解耦。


6.    解耦在程序标准化中的作用

    解耦是一种程序架构。谈到程序架构也容易联想到程序的标准化。程序的标准化也是当下的热门话题。其中一个问题是PLC程序为什么要标准化?如何标准化?我觉得,程序解耦是一个重要的优化方向。


7.    小结

    好了,关于PLC程序的解耦先谈这些了,做个小结。

    本篇通过一个例子讨论了程序解耦的一种方法。这只是抛砖引玉。希望各位同行也谈谈自己对程序解耦的体会。

 

博途项目:

    如果有需要本博途项目的,留下邮箱。邮箱留在跟帖中,不要留在评论中。因为系统不会提醒“有新的评论”。

 

通讯编程:

    本帖专注于PLC程序解耦的探讨,关于通讯编程的探讨(如通讯信号联锁、通讯轮询、通讯异常处理等)不在本贴关注的范围。如果想对通讯编程有更多的了解,可以浏览我的通讯编程系列帖,连接如下:

https://www.ad.siemens.com.cn/club/bbs/PostStory_1963674_80.html#anch


如果觉得本文还有用,请点个赞。也可以关注我,后续会有更多技术分享。



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

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

上传附件要求

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

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

 
发分享帖
爱工控,乐分享,
分享您的经验与案例
发故事
发表您的精彩故事,
参与征文活动
技术探讨帖
阐述您的观点,
表达我的看法
西家杂谈
海侃天南地北,
闲聊工控世界
发求助帖
求道解惑,“刨根问底”
解决问题
发投票帖
邀投票,做调查,
网友帮您来作主
取消原因:
【小型自动化漂流瓶】+ PLC程序结构与框架之 解耦
编辑推荐: 关闭

请填写推广理由:

活动公告 查看全部公告>

玩赚618|学问聊抽大奖,会员买一赠一

1,872,548 条
海量精彩技术内容

100,000+ 网友与你交流

助你技有所长,论有所获

热门视频,猜你喜欢

本版热门话题

网友专栏

共有3443条技术帖

更多

评选标准

相关推荐

换一换

热门标签

换一换

相关帖子推荐

换一换
正在加载...
guzhang

恭喜,你发布的帖子

被评为精华帖!

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

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

  • 分享

  • 只看
    楼主

top
X 图片

下载中心

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

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

1847工业学习平台

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

培训与认证

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

技术论坛

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

找答案

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

售后服务

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

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

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

欢迎您访问支持中心!

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

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

感谢您的支持!

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