1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
源码导读

SPC3源码导读(一) 信息技术的飞速发展导致了自动化领域的深刻变革,并逐步形成了网络化的、全开放式的自动控制体系结构,而现场总线正是这场深刻变革中最核心的技术。 现场总线是综合运用微处理技术、网络技术、通信技术和自动控制技术的产物。它把专用微处理器置入现场自控设备和测量仪表,使他们具有了数字计算和数字通信的能力,成为能独立承担某些控制、通信任务的网络节点。这一方面提高了信号的测量、控制和传输精度,同时为丰富控制信息的内容、实现其远程传送创造了条件。 现场总线技术始于1984年,美国仪表协会(ISA)下属的标准与实施工作组中的ISA/SP50开始制定现场总线标准;1985年,国际电工委员会决定由 Proway Working Group负责现场总线体系结构与标准的研究制定工作;1986年,德国开始制定过程现场总线(Process Fieldbus)标准,简称Profibus,由此拉开了现场总线标准制定及其产品开发的序幕。目前,国际上影响较大的现场总线有40多种,其中被IEC61158国际标准认可的有8种,其中比较典型的几种总线为 CAN、LonWorks、FF、DeviceNet、Profibus。 profibus作为工业界最具代表性的现场总线技术,应用领域非常广泛,它既用于工业自动化中离散加工过程的应用,也适用于流程自动化中连续和批处理过程的应用,而且随着技术的不断进步,其应用领域呈现出进一步扩大之势。 因此本文探讨了profibus总线中的一个重要环节——从站的实现。profibus是开放的、与制造商无关的、无知识产权保护的标准,因此,世界上任何人都可以获得这个标准并设计各自的软硬件解决方案。原则上,profibus协议在任何微处理器上都可以实现,在微处理器内部或者外部安装通用异步串口通信接口(UART)即可完成。基于上述特点,在开发profibus-dp从站时有两种方案: 1.单片机+软件 在这种方案中,profibus-dp的数据链路层协议通过软件在单片机上实现,同时单片机还实现一些用户程序,物理层通信由异步串行通信接口完成。这种方案的优点是开发成本较低,缺点是需要开发人员透彻了解profibus技术细节,因此,开发周期长,而且波特率不能做到1.5Mb/s以上。 2.单片机+profibus通信ASIC 在这种方案中,profibus-dp协议完全有profibus通信ASIC来实现,单片机主要处理用户程序。利用这种方案实现profibus-dp从站的开发,只要开发者了解profibus协议相关内容,特别是基本概念、基本术语,以及ASIC芯片的技术内容即可,因此,采用这种方案开发所需的时间要比第一种方案少很多。 鉴于上述两种方案的比较,综合考虑到开发周期及成本,这里主要介绍单片机+profibus通信ASIC来实现profibus-dp从站的实现。 西门子提供了完整的协议芯片及开发包,这里采用的ASIC是SPC3作为profibus-dp从站协议芯片,微处理器选用的是STC-89C52,硬件电路已经比较成素,参考SPC3的技术手册即可,用户可以根据需要扩展其他的功能,关键是硬件电路板的设计。 在这里主要讨论软件的设计流程,本文所参考的程序是西门子公司提供的源码包。 下面就程序中的关键部分作出详细的说明: (一)初始化 1、系统上电复位; 2、设置中断优先级,关闭中断; 3、将spc3双口RAM区域15H后的单元清0; 4、设置SPC3的 IMR 寄存器,屏蔽相关的中断; 5、设置SPC3看门狗初始值; 6、将从站地址、从站Ident_number存入变量中供spc3初始化的时候使用,本次设计为不允许修改从站地址; 7、调用spc3初始化函数,设置各个寄存器; 8、初始化完成后启动spc3,并打开中断,spc3开始工作; (二)执行for()循环,在循环中轮询处理输入数据、输出数据及设置诊断参数 1、读取spc3看门狗 和 DP 状态; 2、喂狗; 3、查询是否有输出数据,如果有的话则读取next_dout_buffer_cmd寄存器交换N和U,并取得交换后U缓冲区的指针,然后将输出数据写入规定的地方,源码中是一篇I/O区域; 4、将I/O区域的数据写入到 输入-U 中,并读取new_din_buffer_cmd寄存器交换N和U,并获取交换后U的指针,加入输入数据有更新的话,则SPC3交换N和D并将数据发送出去,否则不作任何处理; 5、处理外

文档评论(0)

xvli2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档