20个信号做先入先出,那位高手可以帮我写一个STL程序

20个信号做先入先出,那位高手可以帮我写一个STL程序
谢谢
我的QQ 819115643

问题补充:
阿鸣,我打开你的博客看了,按照你的博客里面去写了,但是我发现,我做好的FB00在OB1中调用,填地址不会填,还有做DB200的时候,有一些地址问题,我的QQ819115643
如果可以,你把你的程序发给我看看。

最佳答案

FUNCTION_BLOCK FB 100
TITLE =
//此功能块完成20字节的FIFO功能
AUTHOR : 
VERSION : 0.1

VAR_INPUT
  SOURCE_DB : BLOCK_DB ; 
  INPUT : BOOL ;   
  OUTPUT : BOOL ;      
  SIZE : INT ;    
END_VAR

VAR_OUTPUT
  DONE_IN : BOOL ;    
  DONE_OUT : BOOL ;       
  ERROR : BOOL ; 
  FULL : BOOL ;     
  EMPTY : BOOL ;  
END_VAR

VAR_IN_OUT
  LOCATION : INT ;      
END_VAR

VAR
  IN_START : BOOL ;    
  IN_ACTIVE : BOOL ; 
  OUT_START : BOOL ;       
  OUT_ACTIVE : BOOL ;    
  COUNT : INT ;     
  RET_VAL1 : INT ;       
END_VAR

BEGIN
NETWORK
TITLE =
      A     #INPUT; 
      AN    #IN_ACTIVE; 
      =     #IN_START; 
      A     #INPUT; 
      =     #IN_ACTIVE; 
      A     #OUTPUT; 
      AN    #OUT_ACTIVE; 
      =     #OUT_START; 
      A     #OUTPUT; 
      =     #OUT_ACTIVE; 
      AN    #INPUT; 
      AN    #OUTPUT; 
      JC    END1; 
NETWORK
TITLE =OUTPUT FIFO
//20字节的数据从FIFO存储区域中读出
      AN    #OUTPUT; 
      O     #DONE_OUT; 
      JC    IN_1; 
      AN    #OUT_START; 
      JC    OP_1; 
      OPN   #SOURCE_DB; 
      L     DW#16#0; 
      T     DBD   40; 
      T     DBD   44; 
      T     DBD   48; 
      T     DBD   52; 
      T     DBD   56; 
      T     DBD   60; 
      T     DBD   64; 
      T     DBD   68; 
      T     DBD   72; 
      T     DBD   76; 
      L     #LOCATION; 
      L     0; 
      <=I   ; 
      S     #EMPTY; 
      JC    EROR; 
      OPN   #SOURCE_DB; 
      CALL "BLKMOV" (
           SRCBLK                   := P#DBX 80.0 BYTE 40,
           RET_VAL                  := #RET_VAL1,
           DSTBLK                   := P#DBX 40.0 BYTE 40);
      L     #RET_VAL1; 
      L     0; 
      <>I   ; 
      JC    EROR; 
      L     0; 
      T     #COUNT; 
OP_1: L     #LOCATION; 
      L     0; 
      <=I   ; 
      JC    EROR; 
      L     #LOCATION; 
      L     #COUNT; 
      <=I   ; 
      JC    OP_3; 
      L     #COUNT; 
      L     2; 
      +I    ; 
      ITD   ; 
      L     P#40.0; 
      *D    ; 
      LAR1  ; 
      OPN   #SOURCE_DB; 
      L     DBD [AR1,P#40.0]; 
      T     DBD [AR1,P#0.0]; 
      L     DBD [AR1,P#44.0]; 
      T     DBD [AR1,P#4.0]; 
      L     DBD [AR1,P#48.0]; 
      T     DBD [AR1,P#8.0]; 
      L     DBD [AR1,P#52.0]; 
      T     DBD [AR1,P#12.0]; 
      L     DBD [AR1,P#56.0]; 
      T     DBD [AR1,P#16.0]; 
      L     DBD [AR1,P#60.0]; 
      T     DBD [AR1,P#20.0]; 
      L     DBD [AR1,P#64.0]; 
      T     DBD [AR1,P#24.0]; 
      L     DBD [AR1,P#68.0]; 
      T     DBD [AR1,P#28.0]; 
      L     DBD [AR1,P#72.0]; 
      T     DBD [AR1,P#32.0]; 
      L     DBD [AR1,P#76.0]; 
      T     DBD [AR1,P#36.0]; 
      L     #COUNT; 
      L     1; 
      +I    ; 
      T     #COUNT; 
      L     #SIZE; 
      L     -1; 
      +I    ; 
      L     #COUNT; 
      <=I   ; 
      JC    OP_2; 
      JU    END2; 
OP_2: L     W#16#0; 
      T     DBD [AR1,P#40.0]; 
      T     DBD [AR1,P#44.0]; 
      T     DBD [AR1,P#48.0]; 
      T     DBD [AR1,P#52.0];
      T     DBD [AR1,P#56.0]; 
      T     DBD [AR1,P#60.0]; 
      T     DBD [AR1,P#64.0]; 
      T     DBD [AR1,P#68.0]; 
      T     DBD [AR1,P#72.0]; 
      T     DBD [AR1,P#76.0]; 
OP_3: SET   ; 
      S     #DONE_OUT; 
      L     #LOCATION; 
      L     -1; 
      +I    ; 
      T     #LOCATION; 
      JU    END2; 
NETWORK
TITLE =INPUT FIFO
//20字节的数据写入FIFO存储区表中
IN_1: AN    #IN_START; 
      JC    END2; 
      L     #LOCATION; 
      L     #SIZE; 
      >=I   ; 
      S     #FULL; 
      JC    EROR; 
      L     #LOCATION; 
      L     2; 
      +I    ; 
      ITD   ; 
      L     P#40.0; 
      *D    ; 
      LAR1  ; 
      OPN   #SOURCE_DB; 
      L     DBD    0; 
      T     DBD [AR1,P#0.0]; 
      L     DBD    4; 
      T     DBD [AR1,P#4.0]; 
      L     DBD    8; 
      T     DBD [AR1,P#8.0]; 
      L     DBD   12; 
      T     DBD [AR1,P#12.0]; 
      L     DBD   16; 
      T     DBD [AR1,P#16.0]; 
      L     DBD   20; 
      T     DBD [AR1,P#20.0]; 
      L     DBD   24; 
      T     DBD [AR1,P#24.0]; 
      L     DBD   28; 
      T     DBD [AR1,P#28.0]; 
      L     DBD   32; 
      T     DBD [AR1,P#32.0]; 
      L     DBD   36; 
      T     DBD [AR1,P#36.0]; 
      L     #LOCATION; 
      L     1; 
      +I    ; 
      T     #LOCATION; 
      SET   ; 
      S     #DONE_IN; 
      JU    END2; 
NETWORK
TITLE =
EROR: SET   ; 
      =     #ERROR; 
      JU    END2; 
END1: CLR   ; 
      =     #DONE_IN; 
      =     #DONE_OUT; 
      =     #ERROR; 
      =     #EMPTY; 
      =     #FULL; 
END2: NOP   0; 
END_FUNCTION_BLOCK

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc307614.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日 下午1:56
下一篇 2020年11月1日 下午1:57

相关推荐

  • 3RW2230-1AB15替代

    3RW2230-1AB15停产了,是否有替代型号 最佳答案 建议咨询技术支持确认。 提问者对于答案的评价:==

    自动化系统综合 2020年11月1日
  • 485通讯与DP

    我的设备的接口是485接口,是三菱的FX1N型PLC,请问怎么才能和DP总线相连,需要什么样的模块,大概怎么做,谢谢指教。还有就是通讯协议通常包括什么?谢谢 最佳答案 三菱的FX1…

    自动化系统综合 2020年11月1日
  • LOGO!的高速计数

    LOGO!-OBA7中的高速计数功能块能与编码器配用吗?怎样实现高速计数呢?谢谢各位高手! 最佳答案 0BA7刚出不久,建议拨打西门子热线4008104288咨询。《LOGO!&n…

    自动化系统综合 2020年10月31日
  • 历史曲线标签更改

    在“wincc在线趋势控件的属性”中——数值轴——趋势(选择你的曲线名称)——标签(填写显示的曲线名称)  运行后在wincc曲线数值轴上面会显示你填写的名称,…

    自动化系统综合 2020年11月1日
  • Wincc flexible里的层是做什么的?

    在Wincc flexible里发现了层,可以参考图片,不知道这个“层”是做什么用的,有什么功能,请高手指教,谢谢! 问题补充:请问“层”可以通过变量来控制吗? 图片说明…

    2017年6月13日
  • PID模拟软件

    请问哪位大哥有PID的模拟软件,能不能和200的PLC配合使用。 最佳答案 请到下面链接处下载PID模拟软件—— http://www.rdlm.com.cn/bbs/t…

    自动化系统综合 2020年11月1日
  • SONPROG软件

    那位给个SONPROG软件吧?非常感谢!!! 我的邮箱是sjb2003an@yahoo.com.cn 最佳答案 你可以到西门子网站下载,下载连结:http://www.a…

    自动化系统综合 2020年11月1日
  • PLC系统不用UPS行不?不用有什么影响?

    PLC系统不用UPS行不?不用有什么影响? 最佳答案 PLC系统一般不需要UPS,当电源失电时,UPS仅给供PLC是没用的,PLC能正常运行,设备没电,系统是无法工作的。 提问者对…

    自动化系统综合 2020年10月31日
  • 关于DB块显示值的问题

    我看别人的300程序,在OB1里调用了FB102,它的背景数据块是DB102,我在线看DB102的值时,有INITIAL,ACTAL和@ACTAL。第一个应该是初始值,冷启动时把它…

    自动化系统综合 2020年11月1日
  • TIA PORTAL V13 使用AR2编辑STL程序出现警告

    如附图,STL中 LAR2 P#变量 语句在STEP7 V5.5中很正常,但转到博图中后编译时一直出现警告信息,AR2 在程序的起…

    自动化系统综合 2017年6月6日