电工学习网

 找回密码
 立即注册
查看: 4118|回复: 1
打印 上一主题 下一主题

同样的程序在不同PLC中有不同的响应

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-28 11:39:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
        plc编程是基于硬件系统的,不同的硬件系统有不同的处理行为方式,编程不严谨就会造成结果的偏差,所以编程一定要规范化,规范化的好处就是可以避免这些偏差,同时编程的规范化也是标准化的一部分。
      很久以前遇到一个问题,用户在OB1中调用PID程序块,调试完成后效果良好,后来更换新的CPU后,发现PID程序块不能正常工作了,反而说新的CPU有问题,这就是一个不规范编程的案例。PID功能块需要在确定的循环中断中调用,并在参数CYCLE中赋值循环中断的中断周期,这样才能计算积分和微分的正确时间,而OB1的优先级低,容易被中断,扫描时间不确定,PID的参数是测试的结果,而非正确的过程参数,又因为新的CPU比旧的CPU运算速度快将近10倍,所以PID程序块就不能正确工作了。
      还有一些功能是与通信有关,例如移植S7-300的程序到S7-1500中,在S7-300中运行好好的,移植后突然发现在hmi上不能改写变量的值了,程序大概是这样的,在FB1中有一个IN/OUT 参数“test”,下面是简单的源程序仿制,赋值“test”后,经过运算再次传递到“test”中,wait指令表示后面程序执行的时间,如图1所示。
同样的程序在不同PLC中有不同的响应
        然后在OB1中调用,赋值MW2,如图2所示。
同样的程序在不同PLC中有不同的响应
        在HMI或者TIA  博途监控表改变MW2的值,有时连续多次才能修改成功,大家想一想这是什么原因?

回复

使用道具 举报

沙发
 楼主| 发表于 2018-12-28 11:39:30 | 只看该作者
PLC的程序是一个线程,S7的通讯又是一个102端口自动处理的线程。
2个线程的处理速度不一致就会出现打架的情况。
1500与1200通过profinetIO交换数据,控制伺服也会出现这种问题,就是2个线程的快慢导致的。
PLC的编程执行是单线程的,但有些通讯却不是。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-26 00:26

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表