设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子1200PLC蛋糕配方案例
返回列表
发新帖
[西门子]
西门子1200PLC蛋糕配方案例
[复制链接]
84342
|
0
|
2024-8-20 10:20:29
|
显示全部楼层
|
阅读模式
1. 定义一个 PLC 数据类型(UDT)
配方数据块的设计需灵活包含数组结构,这些数组能够模拟菜谱中的复杂配料列表,既支持一维也支持多维数组形式,以适应不同层级和类型的配方参数。数组中的每个元素均基于PLC支持的数据类型或自定义结构体构建,确保数据在PLC系统中的有效存储与处理。首先,我们来创建一个PLC数据类型,用来定义配方中的配料组成,我们以制造蛋糕为例,如图1所示。
图1.定义 PLC 数据类型
数据模板定义了后续配方数据块中反复使用的数据类型,这些类型构成了配方成分的基础结构。在创建不同的产品配方时,我们只需输入共用的成分名称及其数据类型,然后通过调整这些成分的具体数值来区分各个配方。这样,一个统一的数据模板能够灵活支持多个实例配方的生成,每个配方因其成分数值的不同而独一无二。
2. 使用 PLC 数据类型创建配方数据块
我们设定了一个全局性的配方数据块,名为“DB1_蛋糕配方”,并在其属性中特别指定了“仅存储在装载内存中”的选项,以确保数据处理的效率。在“DB1_蛋糕配方”中,我们定义了一个数组类型的变量,该数组的元素类型为自定义的“蛋糕配方”结构体。数组的大小被设置为0到7的限值,意味着可以存储最多8个不同的蛋糕配方。这一设计提供了灵活性,允许根据实际需求调整配方数量,满足多样化的生产需求。
注意,如果需要使用RecipeExport和RecipeImport导入导出,配方DB块的名称中尽量不出现中文字符,否则在WEB页面操作会略微麻烦一些,具体详见配方数据的管理。本例为显示直观,所以使用了“DB1_蛋糕配方”的名字。
图2.定义数据块属性
图3.创建配方数据块
3. 在工作存储器中创建活动配方 DB,并通过“READ_DBL”和“WRIT_DBL”指令实现对装载存储区配方数据块的读写操作
我们准备了一个全局数据块“DB2_活动配方”,位于工作存储器中,专门用于配方数据的实时写入与读取操作。该数据块的数据类型直接设定为“蛋糕配方”,这样可以直接与我们的配方结构体相匹配,便于数据的直接交互与处理,如图4所示。
图4.添加活动配方块
确定后,就可以得到活动配方数据块,该块只由一组配方组成,如图5所示。
图5.活动配方数据块
注意,因为指令“READ_DBL”和“WRIT_DBL”的缘故,要求活动配方数据块与配方数据块的优化属性必须相同,即都同时是优化数据块,或者同时是非优化数据块。
将此DB块作为连接工作存储器与装载存储器中配方数据的关键接口,使用“WRIT_DBL”指令可即时将当前活动的配方数据从工作区写入到装载区的配方DB块中,反之,“READ_DBL”指令则能迅速从装载区读取配方数据至工作区的活动配方DB块,实现配方数据的动态读写操作。
4. 导出配方数据块
S7-1200 V4.0及以上版本的CPU支持RecipeExport与RecipeImport指令,方便地将配方数据块导入导出,便于通过EXCEL或ASCII编辑器等电脑工具进行灵活编辑与管理。
对于S7-1200 V4.0之前的版本,用户通常需直接在配方数据块中设置初始配方值,因此可跳过部分步骤直接操作。在本例中,若需在编程中调用RecipeExport或RecipeImport功能,建议先创建一个DB块(如"DB3_操作"),其中定义必要的结构体(如"Export")及请求、状态等变量,以支持这些操作的调用。调用可在主程序OB1中通过LAD实现,亦可在FC/FB或FB的多重背景中灵活使用,编程语言则不限于LAD,FBD、SCL亦可,如图6所示。
图6. 建立结构体
在 OB1 调用RecipeExport,以及捕捉是否完成及错误代码等程序,如图7所示。
图7.调用RecipeExport指令
5. 配方csv文件的导入和导出
通过Web服务器或存储卡,用户可轻松实现CSV文件的导入导出,进而在Excel等电脑上的软件中便捷地编辑配方数据。
6. 导入配方数据块
配方文件经WEB上传或存储卡导入后,可进一步导入配方数据块。类似地,在"DB3操作" DB块中构建与"Export"结构相同的"Import"结构体及其相关变量,用于RecipeImport的请求与状态管理,如图8所示。
图8. 建立结构体
在 OB1 调用RecipeImport,以及捕捉是否完成及错误代码等程序,如图9所示。思路同第4步。
图9.调用RecipeImport指令
7. 读取配方数据
配方数据在PLC装载存储器中编辑或设置后,需通过READ_DBL指令读取。在"DB3操作" DB块中定义Int型变量Index作为配方编号,范围限定在0至7,以匹配配方数组索引。此编号既可在HMI界面上设定,也可通过程序逻辑设置。同时,在"DB3_操作" DB块中构建"Read"结构体及其变量,用于READ_DBL操作的请求与状态监控,如图10所示。
图10.建立Index变量及结构体
利用数组索引功能,通过设定Index变量的值来指定需从配方数组中读取的配方编号,并将其内容传输至活动配方数据块。例如,若需加载配方0至活动配方,则将Index设为0;若需配方1,则Index设为1,以此类推。具体实现程序如图11所示。
图11.读配方
然后就可以直接使用活动配方了,不论是程序中,还是HMI画面中。例如本例中,当Index=0时,读出的活动配方DB,如图12所示。
图12.活动配方数据
8. 在线修改配方
若需微调配方数据而非全面更新,可利用WRIT_DBL指令直接在PLC中修改。通过DB块"DB3_操作"的Index变量指定待修改配方,此变量亦可在HMI界面上设定。在HMI上,用户可选择配方编号,将活动配方映射至IO域以便修改,随后通过按钮触发READ_DBL读取配方,修改后,再触发WRIT_DBL将更新后的活动配方写回指定配方编号位置,如图13所示为操作界面示例。
图13.HMI画面
同样在DB块"DB3_操作",建立结构体"Write",以及相关变量,结构同"Read",用于WRIT_DBL的请求与状态位,如图14所示。
图14.建立结构体
最后,通过数组索引功能,将已修改的活动配方数据写入到配方数组中的指定位置。具体地,设置Index变量为欲修改的配方编号(如0表示配方0),修改活动配方数据块后,执行写入操作。如需修改其他配方,只需更改Index值并重复上述过程,如图15所示为相应程序示例。
图15.写配方
本例如图16所示,读出Index为0的配方,然后修改黄油数据为2.0,点击“写入配方”按钮即可修改配方DB的值。
图16.HMI修改数据
到这里我们蛋糕配方案例就结束啦,同学们跟上老师的节奏了吗?
来源:技成培训网,作者:胡志豪,未经允许不得转载
免费领取
小编今天整理了西门子案例及学习资料、三菱案例及学习资料、热门仿真软件、PLC培训课件等电气人必备资料,扫描下方二维码即可领取!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
西家支持与服务
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』