当前位置:论文写作 > 毕业论文范文 > 文章内容

PLC程序移植中的字节顺序孙启法

主题:孙启 书法 下载地址:论文doc下载 原创作者:原创作者未知 评分:9.0分 更新时间: 2024-02-15

简介:大学硕士与本科孙启法毕业论文开题报告范文和相关优秀学术职称论文参考文献资料下载,关于免费教你怎么写孙启法方面论文范文。

孙启法论文范文

孙启 书法论文

目录

  1. 一、引言
  2. 二、PLC程序移植案例
  3. (一)项目简介
  4. (二)FX2N平台下的实现
  5. (三)移植到S7-200 PLC的过程和遇到的问题
  6. (四)对移植时出现的错误分析
  7. (五)正确的移植方法和程序
  8. 三、结束语

(日照市农业学校,山东日照 276500)

[摘 要]不同的PLC系统对多字节变量的存储有大端顺序与小端顺序两种字节顺序,在不同字节顺序的PLC系统间移植程序必须注意这一问题,需要针对性地做出改变才能保证移植的正确性.旨在通过案例来探讨正确处理多字节变量的程序在移植时的方法.

[关键 词]PLC程序移植;字节顺序;大端顺序;小端顺序

[中图分类号]G712 [文献标志码]A [文章编号]2096-0603(2017)20-0054-02

一、引言

PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置,实质上是一种专门用于工业控制的计算机,其硬件结构基本上与微型计算机相同.PLC性能稳定,能在恶劣的环境中可靠工作,是被公认为最可靠的工业控制设备之一.自从1969年美国研制出第一台PLC,几十年来PLC发展迅速,已成为自动化控制的主流设备.

为了贯彻职业教育与产业对接,教学和生产实践对接的指导方针,目前很多中职学校的机电专业都开设了PLC课程.但由于行业标准出现较晚,不同厂家PLC的指令集往往千差万别,且硬件结构往往也不相同,所以,从事PLC的编程或教学人员在使用不同的PLC时,都会遇到程序移植问题.PLC程序在不同PLC间进行移植时需要考虑的问题很多,其中字节顺序就是重点考虑的问题之一.本文就以PLC教学实训时的一个典型实例来探讨这一问题.

二、PLC程序移植案例

(一)项目简介

目前中职的PLC教学往往都是根据从生产实践中提炼出来的一些典型案例开展的,其中彩灯控制是PLC实训中的一个常见项目.该项目通常是通过使用计时器和移位指令来实现,是一个用来训练计时器和移位指令的典型案例.笔者在PLC教学实训时还基于这个实例开展过译码指令和计数器的综合实训,最初是在三菱的FX2N PLC上实现的,最近在一次实训中需要将这个程序移植到西门子S7-200 PLC上,就遇到了由于两个系统的字节顺序不同造成错误的情况,下面就通过这次排错来跟大家一起探讨一下PLC字节顺序的有关问题.

首先我介绍一下实训用的项目和利用译码指令、计数器指令实现的思路.项目是n(n小于或等于PLC输出点数,本案例为说明双字节变量的移植取n等于9)只LED彩灯,要求依次点亮并循环,时间间隔为1s,使用两个按钮控制启动和结束.编程的思路是对1s脉冲进行计数,对计数器的当前值进行译码,译码的结果输出到输出继电器.

(二)FX2N平台下的实现

先说一下在FX2N上具体的实现方法.启动按钮和停止按钮分别连接到输入端子X0和X1,9只彩灯分别连接到输出端子Y0到Y10.程序中由软元件X000、Y000和M0构成典型的启动停止控制,其中M0作为运行标志.接下来的程序中利用16位计数器C0对1s脉冲进行计数,根据LED彩灯的个数设置计数器的设定值为9,利用C0的常开触点对C0复位来实现循环点亮.运行过程中将C0的当前值译码与结果直接输出到输出继电器.具体程序如图1所示.

(三)移植到S7-200 PLC的过程和遇到的问题

这个程序还是很简单的,现在介绍一下将这个程序移植到西门子S7-200型PLC的过程以及所遇到的问题.

首先要对用到的指令和软元件进行移植,有些指令和软元件是可以直接替换的,上面程序中的X000和X001要分别改为I0.0和I0.1,M0要改为M0.0,M8013要改为M0.5,计数器C0 K10要改为CTU类型的C0,PV设置为10,这些软元件在两种PLC中有着简单的对应关系,可以直接替换.而译码指令在两种PLC中的用法并不完全相同,虽然都是译码,功能都是对输入的数据n,计算2n输出结果,但是FX2N中的译码指令DECO是16位指令,能够将源地址(字软元件)的低n位或源地址(位软元件)开始的n位译码到目标地址(字地址,此时n的最大值为4)或从目标地址(位地址,此时n的最大值为8)起的2n位;而S7-200中的译码指令DECO的功能是将输入的字节的低4位译码到输出的字地址单元,将其对应位置1.应该注意到二者的输入不同,前者比较灵活,既可以是n位的位软元件,也可以是字软元件的低n位,而后者则相对单一,只能从字节输入,输出到字,这就导致16位的计数器的当前值并不能直接作为译码指令的输入,必须将计数器当前值首先传送到一个字节中.笔者在S7-200 PLC的指令集中找到了两条指令,一条是字传送指令MOV_W,另一条是整数转换为字节指令ITB,由于以前在FX2N的指令集中只有传送指令,因此最后选用了与其对应的传送指令MOV_B来实现.

经过上面的一系列处理得到了下面的PLC梯形图程序,如图2所示.

但是程序在运行时出问题了,竟然没有输出正确的结果.错误的原因在哪里呢,通过监视运行发现,问题出在网络3,VB0的值竟然永远是0,所以导致QW0一直是1,也永远只有Q1.0是1,即只有第9个彩灯是亮的.怎么会这样呢,继续往前查,发现VW0的值在运行过程中是正常从0到9变化的,而将VB0中的数值译码后就不对了,这说明问题就出在VB0上.另外,为什么QW0是1的时候,是Q1.0为1,而不是Q0.0呢?

(四)对移植时出现的错误分析

VB0永远是0是什么原因造成的呢?为什么QW0是1的时候Q1.0为1呢?这两个问题都要用长度为字的数据在系统中存储时的字节顺序来解释了.

什么是字节顺序呢?字节顺序是指占内存多于一个字节的数据类型中的各个字节在内存中的存放顺序,如1个字包含2个字节,字中的字节顺序有两种,一种格式是高位字节存储在低地址,低位字节存储在高地址,这被称为大端顺序;而另一种则正好相反,低位字节存储在低地址,高位字节存储在高地址,这种顺序称为小端顺序.

因为不同的机器类型可能采用不同的字节顺序,所以在不同系统间移植程序时,对多字节数据类型必须弄清楚系统的字节顺序.

上面的程序之所以在FX2N上能正确运行,而在S7-200系统上就不能运行,其原因就是这两个系统采取了不同的字节顺序,FX2N采用的字节顺序是小端顺序,而S7-200则采用了大端顺序,VB0永远是0和QW0是1的时候Q1.0为1这两个问题都是由于这个原因造成的.

(五)正确的移植方法和程序

在图1所示的FX2N程序中,用到的多字节软元件有C0和K4Y000都是16位的,即双字节的字元件,其储存格式采用小端顺序,其中C0在程序中的取值范围是0到9,译码指令将C0的低4位译码并将结果输出到K4Y000.这两个字元件在S7-200中对应的变量分别是C0和QW0,他们也是双字节的,采用的是大端顺序,译码指令根据输入的字节变量的低4位所表示的位号,将输出字QW0的相应位置为1.

这里有两点需要注意,一是两个系统的译码指令接受的输入类型不同,FX2N中的译码指DECO可以直接使用字元件,但是S7-200中的译码指令DECO只能接受字节变量;二是S7-200采用大端顺序,需要译码的数据0到9存在C0的高位字节,而0到7译码的结果储存在QW0的高位字节,8和9的译码结果则存在QW0的低位字节.

第一个问题在前面已经解决了,所以现在只需要解决第二个问题:将QW0的高位字节和低位字节交换.一种方法是译码指令不直接输出到QW0,而是输出到一个方便分别存取高低位字节的中间变量,然后将其低位字节传送到QW0的高位字节QB0,低位字节传送到QW0的低位字节QB1;另一种方法是利用S7-200的字节交换指令SWAP,直接将QW0的高低位字节交换.显然第二种方法更为简洁一些,但是需要对指令集要比较熟悉,第一种方法则适合对指令集不熟悉或对输出端口有特别要求的情形.在此,笔者采用了

三、结束语

在不同的PLC系统间移植程序是比较复杂的问题,要想正确移植程序,除了要弄清不同PLC系统的指令和变量(软元件)的对应关系及不同之处以外,还必须弄清要移植的程序中用到了哪些多字节的变量,它们在程序中是如何使用的,以及原平台和目标平台字节顺序分别是哪种,然后根据字节顺序对多字节变量进行必要的转换.只有这样才能避免由于字节顺序不同造成的错误.这个例子也提示我们在PLC的编程过程中既要注意指令的学习,还应该重视PLC系统底层的实现.

总结:本论文为您写孙启法毕业论文范文和职称论文提供相关论文参考文献,可免费下载。

孙启 书法引用文献:

[1] 书法和孙过庭自考毕业论文范文 书法和孙过庭类有关硕士学位论文范文10000字
[2] 启之以道授之以渔论文范文 启之以道授之以渔有关自考开题报告范文2万字
[3] 孙悟空论文范文 孙悟空方面有关本科毕业论文范文2万字
《PLC程序移植中的字节顺序孙启法》word下载【免费】
孙启 书法相关论文范文资料