plc配料程序

plc配料程序,第1张

下面列出了配方示例程序的先决条件:

1.一个存储所有配方记录的配方数据块。配方数据块存储在装载存储器中。

2.在工作存储器中存储一个配方副本的活动配方数据块。

有关配方数据块和相应 CSV 文件的详细信息,请参见“配方数据块实例 ”

创建活动配方数据块

1.在“添加新块”(Add new block) 窗口中:

2.在“添加新块”(Add new block) 窗口中,选择“数据块”(Data block)按钮

3.在“类型”(Type) 下拉菜单中,选择您先前创建的“Beer_recipe”PLC数据类型。

不需要起始值。在将一个配方从配方数据块传送到活动配方数据块时,数据块数据值将置位。在本实例中,活动配方数据块是 READ_DBL 的目标数据并为 WRITE_DBL 提供源数据。下图显示 Active_Recipe 数据块。

背景数据块

指令 RecipeExport ("RecipeExport_DB") 和 RecipeImport ("RecipeImport_DB") 使用的背景数据块是在将指令置于程序中时自动创建的。 背景数据块用于控制指令的执行,不在程序逻辑中引用。

示例配方程序

程序段1REQ 上升沿启动导出过程。CSV 文件由配方数据块数据生成并被置于 CPU存储器配方文件夹。

程序段2捕获 RecipeExport 执行的 STATUS输出,考虑到该指令仅在一个扫描周期内有效。

程序段3REQ 上升沿启动导入过程。 现有配方数据块载入读取自 CPU存储器配方文件夹的相应 CSV 文件中的所有配方数据。

程序段4捕获 RecipeImport 执行的 STATUS输出,考虑到该指令仅在一个扫描周期内有效。

程序5READ_DBL 从配方“Recipe_DB”中复制起始值。 结果值[1](在 CPU 的装载存储器中)至 Active_Recipe DB 的当前值(在 CPU 的工作内存中)。READ_DBL 执行后,程序逻辑通过在 Active_Recipe 数据块中寻址可以访问配方成分值。

例如,符号地址 ("Active_Recipe".productname) 和 ("Active_Recipe.water) 为程序逻辑提供当前配方名称和用水量。

程序段6运行期间,HMI 设备可以修改 Active_Recipe 数据块中存储的成分值。可以通过执行 WRIT_DBL 存储改进的配方数据。 本例中, Recipe_DB 的全部起始值都用于这一个配方 "Recipe_DB"。 结果值 [1] 被 "Active_Recipe" 数据块中的当前值覆盖。

x0为启动按钮,x1为停止按钮。y0~y7为8盏灯。程序在按下启动按钮后,灯1先亮,1秒(T0延时)后灭,1秒后(T1延时)灯2亮,依次循环。当按下x1后,循环结束。

按下x0后,m0得电为1并自保持,此时1秒计时器T0计时,1秒后T0常开点闭合1秒计时器T1计时,再过1秒T1计时结束常闭点断开T0线圈,

T0失电复位并断开T0常开点,此时T1线圈也失电复位,T1常闭点又闭合,T0得电重复上述计时过程。

第二个程序块:

当M0为1时,在T0触点的上升沿来时k3M10这个二进制数乘以2再写入k3M10中。

K3M10代表M10~M21共12个辅助继电器的组合,那么可以将K3M10看作是一个二进制数。程序未启动时,M10~M21均为0,那么这个二进制数为0;当程序启动时,在下一个程序块中利用了M0的上升沿置位M10,此时M10~M21为1,当T0触点的上升沿来时k3M10(此时为1)这个二进制数乘以2再写入k3M10中(写入后为2),2在二进制数中为10,此时M10失电,M11得电,可以认为M10把"1"交给了M11,以此类推。当第8个M17得电时,完成了一次循环。下一个T0上升沿来到时,M18得电,M17失电。此时下面的程序块利用了M18的上升沿重新置位M10并且将M18复位。这样程序又从M10得电开始循环下去了。

这个程序块的作用就是每次T0的上升沿来到时,“1”在M10~M17之间转移。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7745246.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存