SCL程序: 检测存储区的填充量示例介绍

发布者:SereneGardener最新更新时间:2024-07-22 来源: elecfans 手机看文章 扫描二维码
随时随地手机看文章

检测存储区的填充量

下图显示的系统中包含两条传送带和一个临时存储区,临时存储区位于两条传送带之间。传送带 1 将包裹传送到该存储区。传送带 1 末端靠近存储区的光电屏蔽,负责检测传送到存储区的包裹数量。

传送带 2 将包裹从临时存储区域传输到装载台,包裹将在此装载到卡车上。存储区出口处的光电屏蔽,负责检测离开存储区传入装载台的包裹数量。五个指示灯用于指示临时存储区的容量。

6ce560ae-2624-11ee-962d-dac502259ad0.png

实施

下表列出了所用变量的定义:

名称声明数据类型说明
PEB1InputBOOL光电屏蔽 1
PEB2InputBOOL光电屏蔽 2
RESETInputBOOL复位计数器
LOADInputBOOL将当前计数器值调整为 PV 参数的值。
MAX STORAGE AREA FILL AMOUNTInputINT存储区中最大可能的包裹数
PACKAGECOUNTOutputINT存储区中的包裹数(当前计数值)
STOCK_PACKAGESOutputBOOL当前计数值大于或等于变量“MAX STORAGE AREA FILL AMOUNT”的值时置位。
STOR_EMPTYOutputBOOL指示灯:存储区为空
STOR_NOT_EMPTYOutputBOOL指示灯:存储区非空
STOR_50%_FULLOutputBOOL指示灯:存储区已用 50 %
STOR_90%_FULLOutputBOOL指示灯:存储区已用 90 %
STOR_FULLOutputBOOL指示灯:存储区已满
VOLUME_50InputINT比较值:50 个包裹
VOLUME_90InputINT比较值:90 个包裹
VOLUME_100InputINT比较值:100 个包裹

以下 STL 程序说明了如何实现此示例:

当一个包裹传送到存储区时,“PEB1”处的信号状态从“0”变为“1”(信号上升沿)。“PEB1”在信号上升沿时,将启用“加计数”计数器,同时“PACKAGECOUNT”的当前计数值递增 1。

当一个包裹从存储区传送到装载台,“PEB2”处的信号状态从“0”变为“1”(信号上升沿)。“PEB2”在信号上升沿时,将启用“减计数”计数器,同时“PACKAGECOUNT”的当前计数值递减 1。

只要存储区中没有包裹(“PACKAGECOUNT”=“0”),则“STOR_EMPTY”变量的信号状态置位为“1”同时点亮“存储区为空”指示灯。

“RESET”变量的信号状态置位为“1”时,会将当前计数值复位为“0”。

如果“LOAD”变量的信号状态设置为“1”,则会将当前计数值设置为“MAX STORAGE AREA FILL AMOUNT”变量的值。如果当前计数值大于或等于“MAX STORAGE AREA FILL AMOUNT”变量的值,则“STOCK_PACKAGES”变量的信号状态为“1”。

SCL
'VOLUME_50' := 5; // 为比较值预先赋值 50 个包裹(对于测试仅使用 5 个包裹)
'VOLUME_90' := 9; // 为比较值预先赋值 90 个包裹(对于测试仅使用 9 个包裹)
'VOLUME_100' := 10; // 为比较值预先赋值 100 个包裹(对于测试仅使用 10 个包裹)
'MAX STORAGE AREA FILL AMOUNT' := 10; // 为存储区中的最大数量预先赋值 100 个包裹(对于测试仅使用 10 个包裹)

'IEC_Counter_0_DB'.CTUD(CU := 'PEB1',
CD := 'PEB2',
R := 'RESET',
LD := 'LOAD',
PV := 'MAX STORAGE AREA FILL AMOUNT',
QU => 'STOCK_PACKAGES',
QD => 'STOR_EMPTY',
CV => 'PACKAGECOUNT');

只要存储区中有包裹,“存储区非空”指示灯就会点亮。

SCL
'STOR_NOT_EMPTY' := NOT 'STOR_EMPTY'

如果存储区中的包裹数低于 50%,“存储区已用 50 %”、“存储区已用 90 %”和“存储区已满”报警指示灯就会熄灭。

SCL
IF 'PACKAGECOUNT' < 'VOLUME_50' THEN
'STOR_50%_FULL' := 0;
'STOR_90%_FULL' := 0;
'STOR_FULL' := 0;
END_IF;

如果存储区中的包裹数大于或等于 50 %,则“存储区已用 50 %”指示灯将点亮。

SCL
IF 'PACKAGECOUNT' >= 'VOLUME_50' AND 'PACKAGECOUNT <= 'VOLUME_90' THEN
'STOR_50%_FULL' := 1;
'STOR_90%_FULL' := 0;
'STOR_FULL' := 0;
END_IF;

如果存储区中的包裹数大于或等于 90 %,则“存储区已用 90 %”指示灯将点亮。“存储区已用 50 %”的指示灯仍然点亮。

SCL
IF 'PACKAGECOUNT' >= 'VOLUME_90' AND 'PACKAGECOUNT < 'VOLUME_100' THEN
'STOR_50%_FULL' := 1;
'STOR_90%_FULL' := 1;
'STOR_FULL' := 0;
END_IF;

如果存储区中的包裹数达到 100 %,则“存储区已满”消息指示灯将点亮。“存储区已用 50 %”和“存储区已用 90 %”的指示灯仍然点亮。

SCL
IF 'PACKAGECOUNT' >= 'VOLUME_100' THEN
'STOR_50%_FULL' := 1;
'STOR_90%_FULL' := 1;
'STOR_FULL' := 1;
END_IF;


引用地址:SCL程序: 检测存储区的填充量示例介绍

上一篇:欠压保护和失压保护的区别 欠压保护电路设计作用
下一篇:电力拖动的不同控制方式的比较和区别讨论

推荐阅读最新更新时间:2024-11-11 20:26

SCL程序: 检测存储填充示例介绍
检测存储区的填充量 下图显示的系统中包含两条传送带和一个临时存储区,临时存储区位于两条传送带之间。传送带 1 将包裹传送到该存储区。传送带 1 末端靠近存储区的光电屏蔽,负责检测传送到存储区的包裹数量。 传送带 2 将包裹从临时存储区域传输到装载台,包裹将在此装载到卡车上。存储区出口处的光电屏蔽,负责检测离开存储区传入装载台的包裹数量。五个指示灯用于指示临时存储区的容量。 实施 下表列出了所用变量的定义: 名称 声明 数据类型 说明 PEB1 Input BOOL 光电屏蔽 1 PEB2 Input BOOL 光电屏蔽 2 RESET Input BOOL 复位计数器 LOAD Input BOOL 将当前计数器
[嵌入式]
<font color='red'>SCL</font><font color='red'>程序</font>: <font color='red'>检测</font><font color='red'>存储</font><font color='red'>区</font>的<font color='red'>填充</font><font color='red'>量</font>示例介绍
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved