什么叫做带参数的子程序?

我的提问请看以下链接:http://www.gongkong.com/Forum/ForumTopic.aspx?Id=2009042219011500001
 大家有关于这方面的资料发我邮箱里,谢谢了。邮箱:lzhosky@qq.com

最佳答案

比如有十二个压力传感器,或更多的传感器,量程是0到1MPa ,变送输出的标准模拟信号是4到20MA,那么怎么计算实际压力值?像下面一样将计算过程写12遍?
 网络1: 
 LD     SM0.0
 MOVD   0, AC0
 MOVW   AIW0, AC0
 -I     +6400, AC0
 DTR    AC0, AC0
 MOVR   AC0, VD0
 /R     25600.0, VD0      //VD0就是第一个压力传感器的实际压力值   
 网络2:
 LD     SM0.0
 MOVD   0, AC0
 MOVW   AIW2, AC0
 -I     +6400, AC0
 DTR    AC0, AC0
 MOVR   AC0, VD4
 /R     25600.0, VD4      //VD4就是第二个压力传感器的实际压力值   
 网络3:
 LD     SM0.0
 MOVD   0, AC0
 MOVW   AIW4, AC0
 -I     +6400, AC0
 DTR    AC0, AC0
 MOVR   AC0, VD8
 /R     25600.0, VD8     //VD8就是第三个压力传感器的实际压力值 

 等等

 其实不用这样,他们的特点是计算过程相同,但数值不同,所以就不需要将计算过程写12遍,只要写一遍就可以了,将AIW值传入到子程序,然后从子程序输出一个结果就可以了。
 ORGANIZATION_BLOCK 主程序:OB1
 TITLE=程序注释
 BEGIN
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.0
 CALL   SBR0, AIW0, VD0
 CALL   SBR0, AIW2, VD4
 CALL   SBR0, AIW4, VD8
 CALL   SBR0, AIW6, VD12
 CALL   SBR0, AIW8, VD16
 CALL   SBR0, AIW10, VD20
 CALL   SBR0, AIW12, VD24
 CALL   SBR0, AIW14, VD28
 CALL   SBR0, AIW16, VD32
 CALL   SBR0, AIW18, VD36
 CALL   SBR0, AIW20, VD40
 CALL   SBR0, AIW22, VD44

 END_ORGANIZATION_BLOCK
 SUBROUTINE_BLOCK SBR_0:SBR0
 TITLE=子程序注释
 VAR_INPUT
 输入:INT;
 END_VAR
 VAR_OUTPUT
 输出:REAL;
 END_VAR
 BEGIN
 Network 1 // 网络标题
 // 网络注释
 LD     SM0.0
 MOVD   0, AC0
 MOVW   LW0, AC0
 -I     +6400, AC0
 DTR    AC0, AC0
 MOVR   AC0, LD2
 /R     25600.0, LD2

 将以上程序复制到记事本里,然后将后缀改为.awl,将编程软件打开,文件--导入即可查看该程序。

 
 

提问者对于答案的评价:
谢谢怀工的指教

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午1:05
下一篇 2021年7月5日 上午1:05

相关推荐

  • 与S7200通讯的触屏哪款可实现历史趋势

    S7200采集位移信号,需要在一个循环结束时能看到曲线,在下一个循环开始时更新曲线,如何实现? 问题补充:smart700的屏能实现这种要求吗? 最佳答案 与任何的西门子触摸屏均可…

    SIMATIC S7-200 2017年7月25日
  • 高速计数器与高速脉冲

    我刚入行不久,看了系统手册也能不懂,想请教各位:我用向导生成高速脉冲PTO,单速连续输出,速度1000选择和高速计数器关联;用向导生成高速计数器HSC0,模式12,预置值50000…

    SIMATIC S7-200 2020年11月5日
  • 数据存储问题34

    如图:为什么当I0.0的脉冲停止一段时间后,当I0.0的脉冲重新来到时,VD64中的数据会从0开始累加,而不是在I0.0的脉冲停止前的基础上进行累加呢?如果要在I0.0的脉冲停止前…

    2017年6月24日
  • s7-200里用PID向导之后,不会了,要控制水箱液位

    线都连好了 图片说明:    最佳答案 关于200PID的使用,可以参考文档:PID常见问题(PID功能、PID向导、PID给定-反馈设置、PID自整定、手动调…

    2017年5月31日
  • PC access 与S7200无法通信,客户机端测试变量时总是提示出错

    整个项目组态设置是按照教程文档步骤进行的,用的软件是S7200 WIN V4.0 SP6 及PC access &nbs…

    2021年7月5日
  • 西门子200模拟量输入

    有八路一样的压力仪表,结果因为外部线路其他两路液位仪表短路导致模拟量模块烧坏,后换了模拟量输入模块,把八路压力仪表接进去其中两路显示正常值,另外6路显示32767,把正常的两路接到…

    SIMATIC S7-200 2017年10月24日
  • HSC的两个参数CV,PV?

    HSC组态时有两个参数CV,PV,当CV=PV时会自动中断吧,想这个值不管是什么,不要影响HSC一直计数下去,该如何处理。 最佳答案 只要使中断程序在条件成立的时候,不要把CV清零…

    SIMATIC S7-200 2020年11月5日
  • S7-200 重新下载数据块后,数据不丢失?

    S7-200 重新下载数据块后,数据不丢失? 最佳答案 下载数据块时:M区,数据不丢失,不用做额外处理。V区,可以通过从CPU上传数据块功能将V区数据存储在数据块中,下载…

    SIMATIC S7-200 2021年7月5日
  • 在校很多不明白来这里讨教

    西门子S7-200的模拟输入模块的最大点数是多少?如果点数受限制将如何扩展接口?另外有谁知道LTM-8000这个模块是干什么的吗?在网上找不到好的回答只好来这里碰碰运气.麻烦大家了…

    SIMATIC S7-200 2021年7月5日
  • S7-200PLC的自由口通讯

    S7-200PLC的自由口通讯-获取扫描枪的数据,我的硬件是这么连的,232串口扫描枪连接串**叉线(自己制作的),后面连接232转485模块(淘宝买的,无源转换),再连接到PLC…

    2021年7月5日

发表回复

登录后才能评论