• 恩施州西门子网线6XV1840-2AH10
  • 恩施州西门子网线6XV1840-2AH10
  • 恩施州西门子网线6XV1840-2AH10

    恩施州西门子网线6XV1840-2AH10

  • 2023-02-22 12:12 27
  • 产品价格:666.66
  • 发货地址:上海市松江区包装说明:全新
  • 产品数量:不限产品规格:模块式
  • 信息编号:101288203公司编号:4273974
  • 浔之漫智控技术(上海)有限公司 销售经理
    15221406036 (联系我请说明是在阿德采购网看到的信息)
  • 进入店铺 在线咨询 QQ咨询
  • 信息举报
    产品描述

    恩施州西门子网线6XV1840-2AH10

    在S7-200编程中,子程序想必大家都用过,使用子程序可以较好地组织程序结构,便于阅读和调试,也可以缩短程序代码。但是使用子程序也有一些需要注意的地方,除了子程序在同一周期内被多次调用时,不能使用上升沿、下降沿、定时器和计数器之外,还有子程序中局部变量的特点,在编程多次调用带参数子程序时要特别注意。下面就是前些天热线上遇到的一个Case,非常有代表性,在这里跟大家分享。
    E:您好,西门子技术支持。
    C:您好,我想问下,200子程序是不是多次调用时会不好使?
    E:不会啊,您是不是在子程序里使用了沿指令或者定时器?
    C:没有啊,我就编了一句很简单的开关程序,开关闭合,线圈导通,然后主程序里调用了两次这个子程序,结果**个I点闭合了,两个Q点都导通了。
    E:(心里活动:看来是和子程序的局部变量有关了,估计客户程序逻辑有问题)那请您描述一下您的子程序吧,我帮您看看。
    于是客户描述了一下自己的程序,大致了解了之后告知客户我这边测试下,稍后回复。
    客户的程序是这样的:
    子程序:是个常见的自保持逻辑,接口参数如红框所示。

    图. 01
    主程序:调用了两次上面的子程序,实现I0.0和I0.1控制Q0.0的闭合和断开,I0.2和I0.3控制Q0.1的闭合和断开。

    图. 02
    那么在线测试下程序执行情况,发现果然如客户所描述的,I0.0为1后,Q0.0和Q0.1都为1了。见下图.03所示。而如果闭合I0.2,则Q0.0和Q0.1都断开。

    图. 03
    为什么会这样呢?首先我们先明确子程序局部变量的特点。局部变量的变量类型分为四种:IN,IN_OUT,OUT和TEMP,局部变量存储区是在子程序调用时开辟的,子程序调用完成,局部变量占用的存储空间释放。
    我们来分析下客户的子程序。
    在主程序**次调用子程序时,如果I0.0为1,I0.1为0,它们将自身值分别传给输入局部变量#AA和#BB,子程序中程序逻辑执行如下图.04所示。此时局部变量#CC值为1,子程序完成,#CC将值传送到输出参数Q0.0上,使其置1。根据局部变量的特点,子程序**次调用完成后,局部变量存储区释放。

    图.04

    那么当主程序*二次调用该子程序时,开辟临时存储空间,但是此时的存储空间与**次调用时开辟的不一定一致。可是,也有可能由于程序简单,仍然使用**次调用时占用的存储空间。如果这种情况发生了,那么**次调用时已经将#CC的L0.2置了1,而此值依旧存在,那么*二次调用时虽然输入参数I0.2和I0.3为0 ,但是#CC(L0.2)为1,由于客户的子程序逻辑有自保持部分,所以最后L0.2的逻辑结果仍然是1。子程序完成后,#CC将值传送到输出参数Q0.1上,使其置1。所以就会出现客户反映的那种问题。
    那么该如何避免这种情况呢?
    大家是否还记得刚刚介绍局部变量参数类型时除了IN, OUT类型外,还有一种类型叫IN_OUT,这种类型的参数是先读入,然后再写出,这里我们就可以利用它的特点解决上面的问题。
    下面对子程序的参数进行修改,将原先的#CC变量类型改为IN_OUT。如下图所示:

    图.05
    主程序结构不变,如下所示,可以看到由于#CC的类型是IN-OUT,它在子程序块的接口位置也转到了左侧输入侧。

    图.06
    下面再次将I0.0置1,其他输入都为0,监控程序状态,如图.07所示,可以看到只有Q0.0为1,Q0.1状态为0。而如果将I0.1置1, Q0.0被复位,Q0.1还是0,这样就符合客户的控制要求了。

    图.07
    同样,如果只给I0.2置1,那么也只有Q0.1会亮,不会再影响Q0.0。
    了解了IN_OUT类型变量的特点,就不难分析以上的结果。因为每次调用子程序时,局部变量#CC都会先去读取输入参数Q0.0或Q0.1的状态,所以即使两次调用子程序时,#CC变量使用的同一区域,该区域的值也会在开始被Q点的状态所修改,就不存在两次调用相互影响的情况了。
    另外,如果在子程序一开始就添加一条指令,对局部变量#CC进行赋初值(如图.08),也可以避免临时变量区数值不定的问题,您可以尝试测试下。

    图.08
    所以,在编写200子程序时要特别注意局部变量的特点,一旦出现多次调用不正常的情况,就可以从局部变量的特点出发分析,看看是不是存在隐患。善加利用IN_OUT变量也许可以解决许多问题

    202210281445062893284.jpg202210281445058730574.png


    请问一下这条指令(附件中有图)中的16#F8是什么意思呀?怎么理解?

    答:SMB47为高速计数器HSC1的控制字,其每位含义如下:
    SM47.7:启用HSC:0 = 禁止HSC , 1 = 启用HSC
    SM47.6将新的当前值写入HSC:0 = 无较新 ,1 = 较新当前值
    SM47.5将新预设值写入HSC:0 = 无较新, 1 = 较新预设值
    SM47.4将计数方向写入HSC:0 = 无较新 ,1 = 较新方向

    SM47.3计数方向控制位:0 = 减计数 ,1 = 增计数
    SM47.2正交计数器的计数速率选择:0 = 4X计数速率 ,1 = 1X计数速率
    SM47.1用于启动的有效电平控制位1:0 = 启动为高电平有效,1 = 启动为低电平有效
    SM47.1用于复位的有效电平控制位1:0 = 复位为高电平有效,1 = 复位为低电平有效
    16#F8含义为:启用高速计数器HSC1并改写计数器初始值、预设值和计数方向



    SIEMENS浔之漫智控技术有限公司
    本公司长期销售大量*西门子.保证原装**工厂直销.售后有保证本公司可签订:原装**- -罚十
    本公司库存优势产品:西门子SMART200、ET200、S7-200、 S7-200CN、 S7 -300、S7. -400、S7-1200S7-1500PLC、 6XV触摸屏、 6EP电
    源、DP电缆、接头、网线、6FC、6SN、 S120、 V20、 V90、G110、 G120、 G120X. 6RA、6GK、6GT、 低压系列、软启动器、伺服数控
    备件、NCU. MM420、MM430、MM440系列、 LOGO系列,欢迎选购!


    欢迎来到浔之漫智控技术(上海)有限公司网站,我公司位于历史文化悠久,近代城市文化底蕴深厚,历史古迹众多,有“东方巴黎”美称的上海市。 具体地址是上海松江公司街道地址,联系人是聂经理。
    主要经营浔之漫智控技术(上海)有限公司主要经营:西门子PLC代理商、西门子PLC模块代理商、西门子中国一级代理商、西门子低压电器总代理商、西门子DP通讯电缆代理商、西门子中国总代理商等;欢迎大家来电咨询。。
    本公司主营:浔之漫智控技术(上海)有限公司主要经营:西门子PLC代理商、西门子PLC模块代理商、西门子中国一级代理商、西门子低压电器总代理商、西门子DP通讯电缆代理商、西门子中国总代理商等;欢迎大家来电咨询。等产品,是优秀的电子产品公司,拥有最优秀的高中层管理队伍,他们在技术开发、市场营销、金融财务分析等方面拥有丰富的管理经验,选择我们,值得你信赖!

    本页链接:http://www.cg160.cn/vgy-101288203.html
    以上信息由企业自行发布,该企业负责信息内容的完整性、真实性、准确性和合法性。阿德采购网对此不承担任何责任。 马上查看收录情况: 百度 360搜索 搜狗
SIEMENS浔之漫智控技术有限公司
本公司长期销售大量*西门子.保证原装**工厂直销.售后有保证本公司可签订:原装**- -罚十
本公司库存优势产品:西门子SMART200、ET200、S7-200、 S7-200CN、 S7 -300、S7. -400、S7-1200S7-1500PLC、 6XV触摸屏、 6EP电
源、DP电缆、接头、网线、6FC、6SN、 S120、 V20、 V90、G110、..
相关分类
附近产地