您现在所在的是:

PLC论坛

回帖:3个,阅读:2653 [上一页] [1] [下一页]
29673
思南 管理员
文章数:14047
年度积分:62
历史总积分:29673
注册时间:2001/3/12
发站内信
发表于:2004/3/29 17:25:00
#0楼
问题:PLC程序运行仿真--精于编译原理、控制仿真的大侠请进! ( 积分:300, 回复:19, 阅读:106 )  分类:多媒体
来自:avant, 时间:2000-06-19 17:37:00, ID:215691  
  可惜本人没有系统学习过计算机专业知识(现着力与机电控制),在接受
这一课题后苦无进展,要用计算机仿真可编程控制器的运行,输入梯形图或语
句表,通过逻辑运算,得到输出端子状态,并用简单图例仿真演示,不要求完
全实现,只要能实现部分即可。请做过这方面或类似工作的大侠不吝赐教则个!
本人辛苦挣来的专家分,不惜全部奉送!




来自:avant, 时间:2000-04-08 18:04:00, ID:215755  
hehe,问题是有些偏了!我还是对论坛有信心的!曾见浙大有位师兄一篇精妙论文,
正讲此题,且言已用Delphi实现,可惜语焉不详,不知这位师兄是否来过本论坛。
有知消息者也有重赏!



来自:g622, 时间:2000-04-09 19:47:00, ID:216441  
为什么不直接和他联系?



来自:avant, 时间:2000-04-10 17:06:00, ID:217017  
谢谢 g622的关注!
谁做过“行程开关”控件:当一个“运动块”移到它上面时(就象被压下),其状态位
被置为1,运动块停止;当“运动块”移开时,则其状态位被置为0。我困扰的地方是,
“行程开关”应该是被用户使用时动态放到面板上,个数、位置都不能预先知道,
“运动块”移动时怎么知道已经移到了一个“行程开关”上,激发“行程开关”的相
应事件?



来自:y9y, 时间:2000-04-10 22:01:00, ID:217186  
Avant:
1. Simulate PLC will be a pretty big project. Not mention the Graphy
task, the tough one will be the simulate Ladder Logic. Maybe you can
simulate a simple logic, but you can not put your code in any situation. Forget it if you want to simulate a complete system.

2. "行程开关" in your case, can only be a TShape. When receive your
touch message, the chart's height will be change to the 'pressed'
status. when release message, it will change back to 'normal' status.

when user "动态放到面板", you can run time create the TShape.
When your “运动块” move, you know, it is user's DUTY to keep the
your “运动块” and the "行程开关" on same line, in order they can
touch each other. Therefore, you do something like this:

procedure TForm1.WhenMoverMove(Sender: TObject, x, y: integer);
var i: integer
begin
  for i := 0 to ComponentCount -1 do begin
   if Component[i] is TShape then begin
    if x, y in Component[i].Rect then
     //touch message, and change the shape
   end;
  end;
end;


Hope it helpful. Good luck




来自:avant, 时间:2000-04-11 13:48:00, ID:217654  
谢谢Y9Y,Very helpful!我怎么忘了这一招!
事实上我也知道任务很艰巨(悄悄地说:这是我的毕业设计的一部分...),老师太狠了!
布置下这个,还有两张零号图,n张一号、二号...,我都快晕了!
我只打算实现逻辑与或非,定时器,计数器,RS触发器。要用该死的S7-200语法形式!
发几句牢骚...
大家继续献计献策!



来自:avant, 时间:2000-04-13 16:17:00, ID:219478  
Go on!



来自:avant, 时间:2000-04-15 14:58:00, ID:221193  
看一看也有分啊!~&~



来自:avant, 时间:2000-04-25 10:09:00, ID:230482  
│ X1  X3 Y1
├┤├┬┤├--○┤
│ X2 │
├┤├┘
  这是最简单的梯形图。有“与”、“或”、“输出”,转换为语句表(类似于
汇编)如下:
  LD  X1       //表示装入X1
  OR  X2       //表示或X2,即(X1+X2)
  AND X3       //表示与X3,即(X1+X2)*X3
  OUT Y1       //表示输出Y1,Y1=(X1+X2)*X3
  好,大家先帮我看看,二者之间转化采用什么方法。原来我对每个单元存储向上,
下,左,右等等信息,但稍麻烦一些的转化,就不行了,考虑采用编译原理中二叉树
那种存储方式,可惜没什么头绪,谁帮帮我,300分就成交了!



来自:avant, 时间:2000-04-28 11:42:00, ID:233433  
退到这一步,还没有人领分,真有点失望了...



来自:SuperMMX, 时间:2000-04-29 12:18:00, ID:234118  
关键是你的 图 是怎么表示的,需要用户做什么,
是动态添加吗?



来自:avant, 时间:2000-04-29 13:30:00, ID:234175  
├┤├:表示“开始”

┤├-:表示“与”

├┤├┘:表示“或”

  用户利用此类图形编制类似“电气继电器控制线路图”。这些图形表示一些
软逻辑:X1、X2、...Xn可能接一个外部开关,开关闭合则其值为true,如上表达式
(X1+X2)*X3,若X1或X2中至少一个闭合,且X3闭合,则输出Y1的值为true,此时与
Y1相连的电动机或其他动力装置就会启动。

  我困惑的地方是,怎么把图形表示的这种逻辑关系有效的变换成逻辑表达式(如
(X1+X2)*X3),或者变换成
  LD  X1       //表示装入X1
  OR  X2       //表示或X2,即(X1+X2)
  AND X3       //表示与X3,即(X1+X2)*X3
  OUT Y1       //表示输出Y1,Y1=(X1+X2)*X3
 这种类似汇编的语句,然后,计算机就容易推理了。
  各位大侠若是因为小弟表达不准而无法帮我,尽管指出,小弟尽力表达明白。

  y9y 、SuperMMX你们的意见都很好。哪怕是关注,我也很感激。到时候还可再
加分。
  谢谢! 







来自:xiao.lit, 时间:2000-05-01 10:45:00, ID:235470  
我认为可以用扫描的办法来实现。
先读入各个触点的状态,然后对每一行进行扫描,设置相应的输出触点
类似于
|-(430)-(100)
|-(100)-|---(530)
    |---(531)
    |---(ret)
之类的可以用递归的方法来实现

总之如果使用这种方法的话,必须进行多次扫描,直到所有的输出触点和中间触点
的状态不变为止,才算完成了一次动作。
P.S. 我有一个同学的毕业设计也是类似于此类的仿真程序



来自:xiao.lit, 时间:2000-05-01 11:19:00, ID:235510  
还想再说两句
  在 PLC 中,所有语句的关系只有 AND 或 OR 两种,在
同一行中如果一个块与另一个块的关系不是 OR 的话,那么
就是 AND.
每一行的结构可以表示为类型 T

(BLOCK 1) and (BLOCK 2) and ...

其中 BLOCK 为类型 T 的集合,它们之间的关系为 OR

在进行扫描时对每一个 BLOCK N 进行行的分解,
分解为类型 T 的集合
当有某一行为 True 时,该 BLOCK 为 True
全部行均为 False 时,该 BLOCK 为 False

判断 BLOCK N 的值,在它为 true 时对 BLOCK N+1
进行扫描。
以上均为递归调用。

我想,根据这些差不多能做出来了



来自:avant, 时间:2000-05-03 09:47:00, ID:236920  
xiao.lit:
<<我有一个同学的毕业设计也是类似于此类的仿真程序
真的么?能告诉我地址,好跟他切磋切磋!
谢谢您的帮助,我会考虑的。
译码这一块,我也有点眉目了!
谢谢!


图
如您对论坛有好的建议或创想,请加大版主微信号:gkong2015
大版主推荐【工控百家谈】微信公众号,业界大拿原创内容分享
998
xf_wang1209
文章数:58
年度积分:50
历史总积分:998
注册时间:2004/3/23
发站内信
发表于:2004/3/29 22:11:00
#1楼
首先 在你的书上你应该知道,LD  X1       //表示装入X1
  OR  X2       //表示或X2,即(X1+X2)
  AND X3       //表示与X3,即(X1+X2)*X3
  OUT Y1       //表示输出Y1,Y1=(X1+X2)*X3
这种是先有前面的再有后面的逻辑表达式
然,再实际中,是先有了后面的逻辑表达式才有梯形图再有语句的,当然要看你是用什么方法设计了,用添加法的话是先有了梯形图再有语句.
你可以把行程开关当作外部的输入,试试虽然浪费了点
952
OWENSTONE
文章数:44
年度积分:50
历史总积分:952
注册时间:2004/3/26
发站内信
发表于:2004/3/30 9:50:00
#2楼
请问:PLC程序运行仿真--精于编译原理、控制仿真这个系统好吗?
929
ssx127xy
文章数:8
年度积分:50
历史总积分:929
注册时间:2004/3/30
发站内信
发表于:2004/3/30 11:44:00
#3楼
你可以把它转化成FBD格式,
OR代表+
AND代表*
每个框就是()
你看能理解吗?
只想做朋友,助人
做好每一天。

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

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

78.0005