您现在所在的是:

PLC论坛

回帖:2个,阅读:1697 [上一页] [1] [下一页]
* 帖子主题:

PLC开发文档

10519
xlian
文章数:3232
年度积分:65
历史总积分:10519
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2009/7/23 20:24:04
#0楼
plc开发套件说明:
1.       接线

1.       内部资源:
x  输入io x0-x7,x10-x12(八进制)程序中只读
y  输出io y0-y7,y10-y12(八进制)程序中可读可写
m  中间继电器 m0-m3071 3072点 程序中可读可写
m8000-m8255 特殊功能继电器   程序中只读
m8000 一个扫描周期后常开
m8002 一个扫描周期后常闭
c  计数器 c0-c199 200点16位计数器(0-32767)c200-c255 56点32位计数器 可读可写
t  定时器 t0-t255 256点 16位100ms定时器(0-32767)定时时间0-3276秒  可读可写
d0-d999 数据寄存器 1000点16位数据寄存器(-32768 --- 32767) 可读可写
d8000-d8255 256点特殊功能寄存器(不要在程序中写这些寄存器) 只读
s0-s999 步进继电器(暂未能使用步进指令)可当作中间继电器使用 可读可写
只读操作数在程序中不可以被驱动
3.指令(目前支持的指令)
ld xymcts 取触点(必须与左母线连接)
ldi xymcts 取反触点(必须与左母线连接)
and xymcts 串联常开触点(不能连接在左母线)
ani xymcts  串联常闭触点(不能连接在左母线)
or xymcts   并联常开触点
ori xymcts  并联常闭触点
mps 入栈      
mpr 读栈
mpp 出栈
orb 块并联
anb 块串联
out xymcts  输出到位(必须与右侧母线连接)

out n1 n2    
n1  t0-t255,0.1秒定时器
    c0-c199,16位计数器
     c200-c255,32位计数器(暂不支持高速计数器)
n2  k0 - k32767
    d0-d999,16位(0-32767),c200-c255(0-2147483647)

rst  msy  复位触点
rst  ct    复位计数器,定时器(其当前值被清零,触点复位)
rst d     数据寄存器清零

mc n0_n7 my  建立小母线n0-n7
mcr n0_n7    复位小线线n0-n7

set msy  置位触点  

alt mys 触点取反

inv   结果取反指令

nop   空操作

mov n1 n2 传送指令
add n1 n2 加法指令
sub n1 n2  减法指令
mul n1 n2 乘法指令
div n1 n2  除法指令
n1  k-32768 -- k32767
   d0-d999(-32768 – 32767
n2  d0-d999
4.单片机实现plc功能
 plc是以梯形图编程或者指令表编程语言,梯形图开发环境可以很直观的看到控制连接,在线监控时,可以看到程序执行结果。
 单片机以一串指令来完成一句梯形图指令,我们可以理解为一个子程序。plc程序的执行同单片机执行原理一样,自上而下顺序执行。单片机首先自内存中读出plc代码,然后分析代码所表达的梯形图指令,然后调用相应的处理程序,执行结束后将执行结果存入内存。
plc执行顺序:更新输入,梯形图扫描,更新输出
 指令解释
 用单片机一个内存单元来存储plc的程序地址可以理解为单片机的pc指针,
 用单片机一个内存单元来存储plc程序运行状态可以理解为单机的psw状态寄存器
 用单片机一片内存单元来做plc程序运行所需的中间寄存器可以理解为单片机的工作寄存器
  plc指令解释可以用判断方式和查表方式,判断语句的方式下不同指令的解释时间不一样,所以用查表的方式比较合适。
  三菱plc梯形图是以步为基础,一步为16位字长。
plc_mx 存储母线状态。mxcnt计算母线堆栈次数。当进入程序扫描前,将plc_mx清0,plc_mx的第0位写入m8000状态,遇到mc指令时,plc_mx左移一位,mxcnt加一,然后将当前运算结果存入plc_mx的第0位,遇到mcr指令时,plc_mx右移一位,mxcnt减一。注意,mc,mcr必须成对使用,并且嵌套次数不能大于7次。
解释的时候好象排队,你只要认准你前面那个人就ok。
plc_ld存储节点状态,ldcnt存储计数,如果是ld,ldi指令,plc_ld首先将第0位状态存储,然后将ld、ldi指令所指的操作数读入plc_ld的第0位。如是and、ani指令就将plc_ld第0位与and、ani所指的操作数相与,结果存入plc_ld的第0位,如是or,ori指令则是将plc_ld的第0位与or\ori所指的操数相或,结果存入plc_ld的第0位。plc_ld是16位寄存器,所以一个语句中最多可以有15个ld、ldi指令。
anb
orb
  这两个指令是配合ld、ldi\ldf\ldp的。每遇到ld ldi ldpldf指令之一,plc_ld就左移一次,ldcnt加一,当遇到orb、anb指令时候,plc_ld的第0位就与plc_ld的第1位运算,结果存入第1位,然后plc_ld右移一位,ldcnt减一。每条语句中的ld\ldp\ldf\ldi指令与orb\anb的对应关系是,除开第一条与左侧母线相连拉ld\ldf\ldp\ldi指令不需anb\orb指令外,其余每ld一次,必须有anb\orb指令与之配合。遇到与右侧母线连接的指令时,ldcnt清零。

plc_mp用于压栈指令,mpcnt用于计算堆栈次数
  mps压栈,plc_mp左移一次,同时第0位与第1位状态相等,mpcnt加1
  mpp出栈,plc_mp右移一次。mpcnt减1
  mrd读栈,plc_mp的第0位与第1位相等。
  注意:mps\mpp必须成对使用,并且嵌套次数不能大于7
out指令必须与右侧母线连接。
2xxx  ld                  x4xx  x
3xxx  ldi                 x5xx  y
4xxx  and                x6xx  t
5xxx ani                  xexx  c
6xxx or                  x8xx  m0-m255
7xxx ori                 x9xx  m256-m511
          xaxx m512-m767
cxxx out                xbxx  m768-m1023
dxxx set                 xcxx  m1024-m1279
exxx  rst                xdxx  m1280-m1535
                         xfxx  m8000-m8255
两步指令       指令 操作数
01c1    ldf          01c1 8401  ldf x1
01c2     ldp         01c2 8401  ldp x1
fff8    anb
fff9    orb
ffff   nop
01cc   andp
01cd  andf
01ce   orp
01cf   orf
000c 8501  rst c1
000c 8601  rst t1

无操作数指令
000f end
fffa mps
fffb mpr
fffc mpp

三步指令
0600 8001 8000  out t0 k1
0e00 8002 8000  out c0 k2
0094 8401 8005  alt y1
联机操作:

----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=94835&Name=xlian541426
9783
lwcccf
文章数:7459
年度积分:56
历史总积分:9783
注册时间:2006/1/7
发站内信
09工控人生征文
发表于:2009/7/24 8:19:36
#1楼
楼主有空的话,给讲讲软件用什么开发的,硬件如何选的。
希望通过论坛与各位成为朋友!
学无止境,学有所用
10519
xlian
文章数:3232
年度积分:65
历史总积分:10519
注册时间:2002/5/7
发站内信
2018论坛热心网友
西门子PLC体验(二)
发表于:2009/8/4 23:22:17
#2楼
用三菱GPP或FXGP开发环境,开发PLC梯形图,硬件选择如上所见

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003