全国服务热线: 15821971992

西门子中国代理|低压总代理商

发布日期 :2023-07-19 17:06发布IP:114.95.101.251编号:11744961
品牌:
西门子
型号:
模块
产地:
德国
分 类
工控系统及装备
单 价
电议
有效期至
长期有效
咨询电话
15821971992
手机
15821971992
Email
2724917714@qq.com
让卖家联系我
详细介绍

S7-200CN PTO 脉冲输出驱动器 1驱动器 0利用 Micro/Win 指令库实现简单组态脉冲输出用于 √ 控制步进或饲服电机的转速50%Off50%On50%Off50%On周期单速连续转动由程序进行控制,直至新的命令(如放弃)发出相对位置开始位置结束位置从开始点测量SM0.0I0.0Q0_0_MoveRel˜ENEXECU˜Num_P˜VelocityDirectionDoneQ0.0Q0.0Q0.1S7-200CN PWM(脉宽调制)放大器 1放大器 0通过 Micro/Win 组态向导令组态过程更加简便!PWM 用于 √ 速度控制√ 位置控制√ 占空比控制通过 PWM√ 电机从停止到全速运行整个过程的速度控制√ 阀门从关闭到完全打开整个过程的位置控制SM0.0I0.0ENRUN1010000CyclePusleErrorVB10PWM0_RUN脉冲宽度时间周期脉冲宽度时间Q0.0Q0.1S7-224XP CN 或 S7-224XPsi CNS7-224XP CNS7-224XPsi CN

近在热线上遇到一个Case。

         客户用300PLC+WInCC(7.4.1.0)来检测现场的液位变化,当检测到液位超过一定值过后,在程序中将PLC中一个Bool量置位,再用这个Bool量来触发一条WinCC报警消息,用于提示液位超限。在这条报警消息中,客户使用了一个过程值块用于显示报警当时的实时液位数值,但是,客户发现,在每次报警消息到来的时候,当前消息里的过程值变量,永远都是显示的上一个周期的液位值。

         对于客户的这个需求,一般会直接建议客户在WinCC中做模拟量报警,能够比较直观的显示限位值和当前值。如图1所示,例如用MW100来表示液位,液位的上限值为50,这样就组态好一条简单的模拟量报警,在模拟量报警消息中的消息文本中,已自动生成要显示的限位和当前值内容,如图2所示。值得说明的是,对于模拟量报警,编号1-3的过程值块是系统占用的,而其余的过程值块并不能使用(详见帮助-建立消息系统-限制值监控的消息)。

1.jpg

图1 组态模拟量报警

2.jpg

图2 模拟量报警消息文本

        虽然问题很容易解决,但是出现上述问题的原因却是值得深思的。试想客户若不是做这样的功能,而是对于该变量有很高的实时性要求,那这样的现象是肯定不允许发生的,鉴于这一点,我复现了客户的问题,尝试去了解一下深层次的原因。

         在Step7(V5.6)和Portal(V15)中分别为300和1500编写了一样的程序,用于对比两款PLC表现是否*。其中MW90代表液位,MW100代表比较值,M80.0用于触发报警消息,300的程序如图3所示(经测试1500的表现和300*,这里不再赘述)。

3.jpg

图3 300PLC液位比较程序

        采用Step7的仿真器仿真程序,测试后发现情况如客户所言,程序里涉及到的三个变量,在报警控件里显示的都是上一个周期的值,如图4所示。

图4 通过程序触发过程值显示的值

        尝试避开程序,在WinCC中通过IO域直接给MW90和MW100赋值,并手动将M80.0置位,以此触发报警,同时记录MW90和MW100的值,发现记录正常,没有延迟(图5),但是, M80.0依然是上一个周期的值。

图5 避开程序触发过程值显示的值

        在报警消息历史记录中可见,当消息离开时,显示的都是实时值,如图6。

图6 报警离开时过程值显示的值

        综上,考虑是变量扫描周期的问题,查询手册得知:WinCC写入变量到PLC中,不需要参与循环周期,除开通讯时间和PLC执行周期(ms级),几乎是实时的;但是,报警消息里面的变量(包括触发变量、确认变量、状态变量以及过程值),它们默认有1s的扫描周期。

         在一次测试中,消息已经触发,但过程值变量都没有及时刷新;

         在第二次测试中,由于MW90和MW100在消息触发时已经有值,所以消息到来时及时刷新了;而消息触发时,过程值变量M80.0(也是触发变量)没有刷新,这也就说明了,即使WinCC已经知道M80.0置位了(因为消息已经触发),但它并不知道,同时作为过程值的M80.0的当前值。

         按理说,触发变量和过程值的默认扫描周期都是1s,应该在消息触发时,同时更新过程值才对,但是事实并非如此。那么,可以推测,报警触发时,过程值还没有到,也就是说触发变量和过程值虽然都是1s的扫描周期,但其实每次触发变量都会比过程值变量先到一点点,即触发变量的轮询周期要快于或等于过程值的轮询周期。

        去注册表内修改这两个变量的轮询周期,注册表的路径如下:

        HKEY_LOCAL_MACHINESOFTWAREWow6432NodeSIEMENSWINCCAlarm LoggingConstants

 

        在这里添加触发变量和过程值变量的轮询周期值:

        "CycleAlarms"= "00000000" // 触发变量

        "CyclePValues"= "00000000" // 过程值变量

        并将触发变量的值改为大于过程值变量的值,例如(图7):

        "CycleAlarms"= "00000003" // 触发变量,1s

        "CyclePValues"= "00000002" // 过程值变量,500ms

7.jpg

图7 在注册表中修改轮询时间

        修改后再次测试,显示正常,如图8。

         通道诊断里的扫描周期显示如图9,可以看到,因为有三个过程值(M80.0, MW90, MW100),所以500ms的扫描周期注册了三个变量,而触发变量只有一个,所以1s的扫描周期注册了一个。

图8 修改注册表后过程值显示正常

9.jpg

图9 WinCC注册的扫描周期

        测试到这里先告一段落,但是依然还是有个问题没有解决,那就是默认都是1s扫描周期的触发变量和过程值,为什么到报警消息中的时间会有一个差值,从而导致过程值的刷新永远慢一个周期,还是说有其他什么因素影响?这是需要进一步探讨的问题。

S7-200CN PWM(脉宽调制)放大器 1放大器 0通过 Micro/Win 组态向导令组态过程更加简便!PWM 用于 √ 速度控制√ 位置控制√ 占空比控制通过 PWM√ 电机从停止到全速运行整个过程的速度控制√ 阀门从关闭到完全打开整个过程的位置控制SM0.0I0.0ENRUN1010000CyclePusleErrorVB10PWM0_RUN脉冲宽度时间周期脉冲宽度时间


相关分类
推荐产品
信息搜索
 
智能科技新闻
浔之漫智控技术(上海)有限公司
  • 地址:上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
  • 电话:15821971992
  • 邮件:2724917714@qq.com
  • 手机:15821971992
  • 联系人:聂聪
中国代理新闻
中国代理相关搜索