通信调度PLC—应用于32轴运动控制系统的一个实例 点击:1387 | 回复:19



夏日野草

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 24回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2007年5月06日
发表于:2018-02-24 19:48:03
楼主

PLC串行通信,相信各位编程者都经常遇到,简单的通信任务应该不成问题。但如果是复杂频繁的通信,那么处理起来就不大容易了。

本帖以一个实例为基础简单讲解通信调度实现的原理,希望能对大家处理类似通信问题时有所帮助。实例中的主控设备是三菱PLC-FX3U,从设备是8HSEN通用型4轴定位模块共32轴,PLC通过RS485和定位模块联系,通信协议是MODBUS-RTU

这类通信虽说遵循某种通信协议,貌似只是普通的数据读写,但实质并非如此。普通的数据读写或控制,例如变频器的控制,除了运行参数的读写外,还包括运行、停止、改变运行速度等指令发送,只要通信正常完成,控制过程也就结束了。而定位运动的控制不只是运动指令的发送,还包括定位单元运动状态的监测,比如最为常见的定位控制过程——“当前的定位运动是否已完成,如果完成,则进行下一个动作”。‘定位运动是否已完成’‘温控系统的温度是否已到设定值’‘气压是否已达到工艺要求’等等这类信息如果是通过串行通信获得的,那主控系统就必须不断地向从设备查询。如果从设备数量不多,解决这样的问题可能难度不是很大,但如果如上面所述的这类实例,大量的运动指令发送,再加上轴运行状态的获取,如果只是以通常的编程方式来解决这样的问题,可能是思绪万千、困难重重。为此有必要考虑用一种新的思路来解决这类问题。这就是本帖提出的通信调度这概念。

百度百科对调度算法的解释是:操作系统管理了系统的有限资源,当有多个进程(或多个进程发出的请求)要使用这些资源时,因为资源的有限性,必须按照一定的原则选择进程(请求)来占用资源,这就是调度。本帖的通信调度有点类同于定义中的操作系统,它管理着PLC的串行通信设备这一有限资源,按照一定的原则选择通信请求来占用资源。因此,本实例的通信调度要实现的首个功能是合理有序地安排通信任务。在有限的资源下,如何避免通信冲突是通信调度一个非常重要的功能。此外,其他要实现的功能有把通信数据处理成符合通信协议的数据格式;组织发送;响应信息的接收;通信过程中异常情况的处理(例如对象设备没有响应,接收超时,从设备报告收到的数据有误,校验错误等等);把收到的数据处理成一定格式存放在指定地址。最后还有一个重要的功能就是如上文所说的获取用户关心的信息,这个获取过程并不需要用户提出请求,而是通信调度根据设置,在闲暇时自动发起通信,收集指定的信息(例如各轴的当前位置、当前的运动状态,硬件信息等等),供用户随时调用。

看下图一个使用通信调度的简单例程。例程的第一部分是一个相对直线插补的运动指令,这一指令的发送,只要设置好相关的运动参数,并置位“执行直线插补”即可,余下的事就交予通信调度处理了。例程的第二部分是在指令信息发送完成后,对指令的执行情况“完成直线插补”进行监测,“完成直线插补”这信息就是通信调度自动采集的。例程的第三部分就是在程序中调用通信调度这功能块。从这例程我们可以看到,在使用通信调度后,我们的编程基本上就不用考虑通信的问题了,程序简洁明了,思路清晰。


正在下载,请等待……
下载附件需0积分!




夏日野草

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 24回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2007年5月06日
发表于:2018-02-24 19:50:16
1楼

有利必有弊,就像单片机下的编程,是裸奔还是在操作系统下编程,裸奔的程序短小精悍,占用资源少,执行速度快,但复杂的程序编程就比较不易,而在操作系统下编程则刚好相反,这就要看你的取舍了。

从例程中我们可以看到,除了通信调度被包装成功能块外,相对直线插补这一运动指令也被包装成功能块,其实,不仅运动指令,所有常用的MODBUS操作码都可以被包装成功能块,见下图FB列表截图。


夏日野草

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 24回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2007年5月06日
发表于:2018-02-24 19:52:22
2楼

下图为通信调度执行的流程图,该流程图明示了通信调度和其他功能块之间的消息传递流程,附件中的文档对通信调度有的详细解释,如有兴趣可下载看看。

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 78回
  • 年度积分:0
  • 历史总积分:87
  • 注册:2001年8月08日
发表于:2018-03-09 21:10:29
3楼

谢谢分享。。。

激光切割

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 166回
  • 年度积分:4
  • 历史总积分:262
  • 注册:2015年6月11日
发表于:2018-04-13 21:46:47
4楼
果然是高手,谢谢分享!

zhangzhitao

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 331回
  • 年度积分:4
  • 历史总积分:290
  • 注册:2017年11月09日
发表于:2018-04-14 11:25:00
5楼
高手,多谢分享

涛。。

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 46回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2018年4月20日
发表于:2018-04-20 13:12:50
6楼
高手,多谢分享

风破残日

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 67回
  • 年度积分:0
  • 历史总积分:141
  • 注册:2013年5月13日
发表于:2018-04-27 16:11:33
7楼
感谢楼主,我是个菜鸟

silky_56

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1828回
  • 年度积分:0
  • 历史总积分:66
  • 注册:2003年8月15日
发表于:2018-04-28 14:04:58
8楼
学习学习,感谢分享!

zhanghuaian

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 24回
  • 年度积分:0
  • 历史总积分:217
  • 注册:2012年7月15日
发表于:2018-05-31 11:38:40
9楼

多谢分享,楼主能否不扣积分,学习中

墨啷

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 168回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2016年3月10日
发表于:2018-06-06 14:59:56
10楼

我也很想看看


mengyuboshi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 296回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2009年6月12日
发表于:2018-06-15 14:21:17
11楼


我也很想看看



mengyuboshi

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 296回
  • 年度积分:0
  • 历史总积分:133
  • 注册:2009年6月12日
发表于:2018-06-15 18:46:44
12楼

多谢分享,楼主能否不扣积分,学习中


QQK00

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 51回
  • 年度积分:0
  • 历史总积分:103
  • 注册:2018年7月17日
发表于:2018-07-17 21:15:46
13楼

感觉是干货,值得学习探讨


Vico

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 46回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2018年5月12日
发表于:2018-07-21 14:14:38
14楼

谢楼主老师的分享、代表新手谢谢您

shanchilelin

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 280回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2008年5月31日
发表于:2018-07-21 16:18:17
15楼
学习学习,感谢分享!


okma11

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 715回
  • 年度积分:0
  • 历史总积分:1134
  • 注册:2012年8月20日
发表于:2018-07-22 20:27:47
16楼

向高手学习,看看高手的程序

mateo2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 48回
  • 年度积分:0
  • 历史总积分:117
  • 注册:2011年3月27日
发表于:2018-07-23 17:30:55
17楼

多谢分享,学习学习

ZHI_GOOD

  • 精华:0帖
  • 求助:1帖
  • 帖子:14帖 | 541回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2015年10月04日
发表于:2020-09-02 10:24:00
18楼

果然是高手,谢谢分享!


热门招聘
相关主题

官方公众号

智造工程师