注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- PLC论坛 -- PLC论坛(非专题) -- PLC编程

中国工控网搜索:

 自动化企业招聘

更多..

 登陆:密码:  注册  密码

搜索:

发表人:hguihuai 发表时间:2007/3/1 19:02:00  

 

 本栏论题: 从PLC的梯形图到单片机的汇编程序  [5661]

    从PLC的梯形图到单片机的汇编程序
    业内许多人都熟悉PLC的编程,也有人既熟悉PLC编程又熟悉单片机编程,可很少有人知道PLC的梯形图是可以直接转化为汇编程序的。PLC的梯形图直观、易懂、可读性强,只要把输入输出口和各内部器件定义好,它们之间的逻辑关系在梯形图上一目了然。但单片机的汇编程序就不同了,即使是自己编的程序时间一长看起来也很吃力,用梯形图为汇编程序做注释可以增加程序的可读性。此外很多人在在开发单片机之前就编过相同功能的PLC程序,因此如能将PLC的梯形图转化为汇编程序是非常有意义的事。其实这是非常容易的事。
    一、一般逻辑组合的转换:
   

从PLC的梯形图到单片机的汇编程序


    以上是一段常见的PLC梯形图程序,我们假设给I/0口定义了名字,内部器件可用器件名也可用器件代号。它们的逻辑关系是一目了然的。转换成汇编程序时我们也要先定义相应的位元件。程序清单如下:
   
    MSJ BIT 00H ;定义位器件
    YJ BIT 01H
    SPG BIT 02H
    KMJ BIT 03H
    SXD BIT 04H
    HJ BIT 05H
    XJ BIT 06H
    M30 BIT 07H
    M31 BIT 08H
    M35 BIT 09H
    MOV C,MSJ ;将MSJ的送入逻辑运算器
    ANL C,YJ ;
    ANL C,/SPG
    MOV OAH,C ;将MSJ、YJ、SPG反相与的结果送入0AH暂存。
    MOV C,SXD
    ANL C,HJ
    ANL C,XJ
    MOV 0BH,C ;将SXD、HJ、XJ相与的结果送入0BH暂存。
    MOV C,M30
    ANL C,M31
    ORL C,0AH ;将M30、M31相与的结果与OAH或运算
    ORL C,0BH
    ANL C,/KMJ
    MOV M35,C ;输出M35
   
    以上的汇编程序是直接从梯形图转换来的,没有用任何汇编的技巧。当然你如是汇编高手,可以将它编的效率更高,比如先判MSJ ,为“1”跳过这段程序直接将M35置“0”,三段与门,由于它们之间是“或”关系,只要第一段是“1” 后两段可以不考虑了。但这样程序跳来跳去,可读性就差了。
   
    二、SET、RST 语句的转换
    PLC中的SET和RST有两个特点:1、SET 只能置“1”,不能置“0”;RST 只能置“0”不能置“1”。2、它们都是自保型的,一旦逻辑成立,它们就执行,执行后即使逻辑不再成立,仍然保持原来的结果。这和汇编的“SETB”、“CLR”指令的功能完全是一样的,不过汇编要通过判断跳转来实现。
   

从PLC的梯形图到单片机的汇编程序


   
   
    汇编程序的清单如下:
    MOV C,MSJ
    ANL C,YJ
    ANL C,SPG
    ANL C,/KMJ
    JNC L100 ;与的结果为“0”跳过“SETB M35”到L100处,
    SETB M35
    L100:………………
    ………………
    MOV C,SXD
    ANL C,HJ
    ANL C,XJ
    JNC L101
    CLR M35
    L101: ……………… ;与的结果为“0”跳过“CLR M35”到L101处
   
    三、PLS PLF语句的转换
    这两个语句是边沿触发的,它们的生命周期只有一个扫描周期。51系列的单片机中没有相应的指令(不好意思本人目前只熟悉51系列)。但可以通过变通的办法来实现。先来看看下面的梯形图:
   
   

从PLC的梯形图到单片机的汇编程序


   
   
    对M300来说左边的梯形图和右边的梯形图完全是等价的,它们的生命周期都是一个扫描周期。当XDK上升沿到来时,M301为“OFF”,(因之前XDK为“OFF”),所以M300 “ON”,紧接着M301 也“ON”,但此时M300的状态不会立即改变,直到下一个扫描周期(程序第二次运行到这段程序)时才能变为“OFF”。把这样的梯形图转换成汇编程序就很容易了。对PLF语句也一样,只不过把XDK的常开改为常闭就行了,读者自己可以分析。这里每一个PLS、PLF语句都要用两个内存的位元件。51系列的位寻址内存只有128个,非常有限。是否还有其他更好的办法,能节省内存位寻址单元的开销,希望有高手出来指教。
    以上是三种最常见的梯形图转换成汇编程序的例子,至于算术计算的加、减、乘、除、左移、右移,数据传输、比较等的转换更是容易了,不再赘述。
   
   
   

以下是关于《从PLC的梯形图到单片机的汇编程序》论题的回复(共5篇)

回复人:jinlei0427 

 回复时间:2007/5/29 10:09:00

支持(641) | 反对(530)

 

    xiexie

回复人:janestom 

 回复时间:2007/10/7 20:58:00

支持(423) | 反对(288)

 

    PLC里面的定时器如何在汇编里实现呢?也是折腾了偶不少时间的问题

回复人:goldern23 

 回复时间:2008/1/22 15:25:00

支持(435) | 反对(374)

 

    学习了

回复人:赵开书 

 回复时间:2012/6/17 18:54:00

支持(359) | 反对(419)

 

    以上是一段常见的PLC梯形图程序,我们假设给I/0口定义了名字,内部器件可用器件名也可用器件代号。它们的逻辑关系是一目了然的。转换成汇编程序时我们也要先定义相应的位元件。程序清单如下:
   
    MSJ BIT 00H ;定义位器件
    YJ BIT 01H
    SPG BIT 02H
    KMJ BIT 03H
    SXD BIT 04H
    HJ BIT 05H
    XJ BIT 06H
    M30 BIT 07H
    M31 BIT 08H
    M35 BIT 09H
    MOV C,MSJ ;将MSJ的送入逻辑运算器
    ANL C,YJ ;
    ANL C,/SPG
    MOV OAH,C ;将MSJ、YJ、SPG反相与的结果送入0AH暂存。
    MOV C,SXD
    ANL C,HJ
    ANL C,XJ
    MOV 0BH,C ;将SXD、HJ、XJ相与的结果送入0BH暂存。
    MOV C,M30
    ANL C,M31
    ORL C,0AH ;将M30、M31相与的结果与OAH或运算
    ORL C,0BH
    ANL C,/KMJ
    MOV M35,C ;输出M35
   
    以上的汇编程序是直接从梯形图转换来的,没有用任何汇编的技巧。当然你如是汇编高手,可以将它编的效率更高,比如先判MSJ ,为“1”跳过这段程序直接将M35置“0”,三段与门,由于它们之间是“或”关系,只要第一段是“1” 后两段可以不考虑了。但这样程序跳来跳去,可读性就差了。
   
    二、SET、RST 语句的转换
    PLC中的SET和RST有两个特点:1、SET 只能置“1”,不能置“0”;RST 只能置“0”不能置“1”。2、它们都是自保型的,一旦逻辑成立,它们就执行,执行后即使逻辑不再成立,仍然保持原来的结果。这和汇编的“SETB”、“CLR”指令的功能完全是一样的,不过汇编要通过判断跳转来实现。
   
   
   
   
   
   
    汇编程序的清单如下:
    MOV C,MSJ
    ANL C,YJ
    ANL C,SPG
    ANL C,/KMJ
    JNC L100 ;与的结果为“0”跳过“SETB M35”到L100处,
    SETB M35
    L100:………………
    ………………
    MOV C,SXD
    ANL C,HJ
    ANL C,XJ
    JNC L101
    CLR M35
    L101: ……………… ;与的结果为“0”跳过“CLR M35”到L101处
   
    三、PLS PLF语句的转换
    这两个语句是边沿触发的,它们的生命周期只有一个扫描周期。51系列的单片机中没有相应的指令(不好意思本人目前只熟悉51系列)。但可以通过变通的办法来实现。先来看看下面的梯形图:
   
   
   
   
   
   
   
    对M300来说左边的梯形图和右边的梯形图完全是等价的,它们的生命周期都是一个扫描周期。当XDK上升沿到来时,M301为“OFF”,(因之前XDK为“OFF”),所以M300 “ON”,紧接着M301 也“ON”,但此时M300的状态不会立即改变,直到下一个扫描周期(程序第二次运行到这段程序)时才能变为“OFF”。把这样的梯形图转换成汇编程序就很容易了。对PLF语句也一样,只不过把XDK的常开改为常闭就行了,读者自己可以分析。这里每一个PLS、PLF语句都要用两个内存的位元件。51系列的位寻址内存只有128个,非常有限。是否还有其他更好的办法,能节省内存位寻址单元的开销,希望有高手出来指教。
    以上是三种最常见的梯形图转换成汇编程序的例子,至于算术计算的加、减、乘、除、左移、右移,数据传输、比较等的转换更是容易了,不再赘述。
   
   
   

回复人:lgw119 

 回复时间:2012/9/15 16:36:00

支持(373) | 反对(593)

 

    不太懂

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳