搜索
bottom↓
回复: 26

[工控土人搞软件算法] 之 梯形图到指令表

[复制链接]

出0入0汤圆

发表于 2009-6-30 10:47:45 | 显示全部楼层 |阅读模式
本内容纯属虚构,引君一笑即可,非专业人士请勿模仿,若发生事故,概不负责……

好久好久的以前,领导突发奇想:“今年又要申报专利了,不差钱啊,就差项目。各种看家的手艺都上报了,怎么办,要不我们也开发下PLC?”

“好啊好啊,可是现在PLC动不动就可以配置几十个定时器和几十个计数器,那么小个盒子怎么装得下啊”,我心里乐了,你看一下就让我找到问题的关键点了,说不定月底又加我工资了。

领导额头冒出个豆大的汗珠,沉默了一下,笑而不语……

话说有百度,天下无难事,这不,两天功夫,网上一不小心找到开发资料若干部,美女图片若干张(绿坝:那个时候我还没出身,不然屏蔽你丫的),小二开始干活了!

既然要搞PLC,就要搞出个样子,IEC61131说不用实现交叉编译,就是那个互转啦,可也没说不能实现啊。标准还特别用西门子的STEP7来举例,并大加赞赏,可见标准还是在意的嘛。这标准真含蓄啊,幸好我悟性高,要不喜欢我的姑娘怎么一个都没跑掉……为了公司的荣誉,为了月底的加薪,我也要实现这个!

看看这网上收罗的花花绿绿的资料,心情极佳,这不,立马就发现了《梯形图与指令表互转之实现》,某某大学某某教授什么的名字实在没记住,没照片嘛,不过看了论文傻眼了。

这都画的什么符号啊,一个都不认识,哎,现在的论文啊,质量越来越低了,没有美图也就算了,字都不让人好好认……

话说打铁的造汽车,种地的造飞机,做柜子的造不出PLC,那也太没面子了!

没事,一步一步来嘛,我不就是想把这个变成那个么、那个变成这个么:

(原文件名:01.png)

(原文件名:02.png)

咱作柜子可是熟手,这梯形图一看就知道,丁员工上面有三个领导:甲书_记、乙厂长、丙副厂长。只要甲书_记点头、乙厂长或丙副厂同意,丁员工这丫就能涨工资了……

这指令表也简单啊,先问甲书_记什么意见来者,我健忘的,转身就不知道你是谁了,没事,用张纸先记着,然后问乙厂长同意不同意,再看丁书_记的意见,综合一下,记下来。掏出开始纸上记的结果,再综合一下,就是丁员工的加薪决定了。

哎,电脑应该是怎么想的呢?

“不要想电脑应该怎么想?首先要问自己会怎么想?”

“不要让自己变得聪明,努力让自己变得傻,一根筋,不会转弯。”

“嘿,没说你呢,你是纯傻,再装傻你都小霸王了”

此刻,我想起了数据结构恩师的醺醺教导,顿时泪流满面。

话说要琢磨一个人会怎么想,首先要清楚他知道什么。

那么我知道什么呢,我是电脑,我看到的是象素……梯形图,美丽的姑娘,不过这一切都是假的,一堆象素!

错了,错了,我是电脑,这些象素就是我显示给对面的那个笨蛋看的!

为什么我要显示这些东西呢?

例如,这个开关为什么会在这里呢?这里为什么有根线呢?

就是对面那个傻子让我放的。他执行了一条命令,告诉我这里放了一个开关,叫做甲……

可是我根本记不住这个动作啊,我不理解甲是什么,开关是什么……

不过没有关系,我可以做记号,虽然我不知道这是什么。

而且,我还能记住所有记号的前后顺序,他们可以排成一条直线,也能排成一个方阵。

也许,这样记录对面那个傻子的操作是可行的,虽然比较无聊。


(原文件名:03.png)

上面这个图可以这么看。
        黑色的标记表示:有线。
        红色的字表示:有开关。
        蓝色的字表示:有线圈。

在计算机科学里面有门学科叫图论,图论诞生于一个无聊的问题,即柯尼斯堡七桥问题,也就是一条河上纵横交错有七座桥(浪费纳税人的钱啊!),怎么走才能从一个地方开始,不重复的经过这七座桥而回到起点。传说有个只会画点和线的人用画图的办法完美的证明了,这个问题就是一个极其无聊的问题(无解)。众人的烦恼顿时一扫而空,此人被历史铭记,他叫欧拉。虽然我更欣赏不但会画点和线,而且还会画鸡蛋的美术老师,不过这里就不扯远了。

其实,图论这个名字虽然很文雅,但不贴切,我觉得还是应该叫走路论,不是么,七桥问题就是一个走路的问题嘛。图论里面还有个算法,叫做图的遍历算法,其实我觉得应该叫走遍算法,不是么,都走一遍就完事了。

假设你是个人……
这里有片铺了两种颜色的地板砖……

(原文件名:04.png) 再假设你是一个极傻的人……
给自己制定一套规则,要求从某个黑色地板砖开始走,走遍所有的相邻黑色地板砖。

那个所谓的走遍算法是这样的:

第1步 发现自己的脚下地板砖没记号,踩一脚先,做个记号。

(原文件名:05.png)

第2步 看看我能去哪里?好像只能向前走啊,走一步。

(原文件名:06.png)

第3步 发现自己的脚下地板砖没记号,踩一脚先,做个记号。

(原文件名:07.png)

第4步 上下左右一看,继续前进也可以,向下走也可以,继续前进吧,记性不好,拿张纸记下:“其实在第2个地板砖我还可以向下走的……”,将纸放入口袋。

(原文件名:08.png)

第5步 发现自己的脚下地板砖没记号,踩一脚先,做个记号。

(原文件名:09.png)

第6步 发现自己无路可走了,拿起口袋里面的纸条,猛然想起,当年我还可以那么走的……跳回去,按照纸条上的方向继续走。

(原文件名:10.png)

第7步 发现自己的脚下地板砖没记号,踩一脚先,做个记号。

(原文件名:11.png)


(此处被作者删去512字)(绿坝:这个真不是我干的)
是的,严格按照上面的办法,傻子也能走遍,不愧是走遍算法啊。

按照上面的方法,对被我标记为线的格子走遍一下,如果一次不能走遍就多走遍几次,同时记下这是第几次走遍。

于是在我的记忆中,又添加了如下标记:

(原文件名:12.png)


继续探讨一下走路论,由于我们的欧拉同志美术功底不行,只能画点和线,那我们就只能讨论点或者线吧。
我们知道,一条线只能有两个端点,但是一个端点可以连接很多线。
所以,那些看起来有线的格子,其实是点。
所以,那些看起来有开关的格子,其实是线……
恩恩,我是个电脑,我只认死理,我不会被表象迷惑的。

整理下,这个图应该是这个样子:

(原文件名:13.png)

不要怀疑计算机能够存储这个图,给你看的是上面那个,其实我存储的,是这个

(原文件名:14.png)

下面的任务就一个字,找!

在关系矩阵中发现有两个并列的1(起点)和2(终点),那么可以判断它们代表的线(乙和丙)是并联关系。对于并联关系,可以合并之,并将线合并成:乙或丙。

(原文件名:15.png)

在关系矩阵中发现有两个1(起点)和2(终点)位于同一行,且这个行有且只有这两个元素,那么可以判断他们代表的线是串联关系,可以将这行删去,并将线合并成:甲与(乙或丙)

(原文件名:16.png)

此时,本图已不能化简,仔细观察线的结构,发现是这个一个树。

树是什么?这个概念很混账,反正我看图论是压根没有看明白,不过没有关系,能用就行。和前面一样,我们关心的就是如何走遍一个树。假设我们去某部队调查,当然所谓的调查工作少不了谈话。为了大家没有顾忌的说话,只能安排一对一的谈话。假设这个团有一个团长,管着两个连长,每个连长管着四个排长,那么你的谈话策略是什么呢?

如果希望先听听下面的意见,一种方案就是先和排长谈话,看看他们对连长的评价如何,听取了这个连所有的排长的意见之后,再开始和连长谈话,听取了这个团所有的连长的意见之后,再开始和团长谈话,这个就是由下到上的策略。

这里我们采用这种策略:

(原文件名:17.png)

1、发现“与”是个最高领导,先不睬他,了解基层先,找到他的下属“甲”。
2、发现“甲”原来是一个光杆司令,手下没人了,那就先和他谈话吧。谈完回到“与”。
3、发现“与”除了“甲”还有一个下级“或”,为了彻底调查清楚“与”的问题,我们去“或”那里看看。
4、“或”手下有“乙”和“丙”,看来“或”可能也不老实,还是先调查他下面的“乙”先。
5、回到“或”。
6、发现“或”除了“乙”还有一个下级“丙”,先去“丙”那里看看。
7、回到“或”,由于掌握了不少情况,正式和“或”谈话。
8、“或”老实交待之后,嘿嘿,我们开始正式找“与”谈话。

那么谈话的顺序就是:
甲、乙、丙、或、与

其中的丙、或可以简化成或丙。于是得到:
甲、乙、或丙、与

和我们的指令表是不是很相似呢?

(原文件名:02.png)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-6-30 10:56:34 | 显示全部楼层
哈哈,经典的AOV,有向图的遍历。

出0入0汤圆

发表于 2009-6-30 11:13:55 | 显示全部楼层
牛人 比我写的好懂多了

出0入0汤圆

 楼主| 发表于 2009-6-30 11:28:43 | 显示全部楼层
算法这块,你比我严谨多了。
不过你的那个论文域名过期了,我下不下来:(
我是来凑个热闹而已。

出0入0汤圆

发表于 2009-6-30 12:32:16 | 显示全部楼层
牛人多啊!

出0入0汤圆

发表于 2009-6-30 12:32:35 | 显示全部楼层
This is a tree,plc just use tree seach algorithm.but if you want to optimal shuold use the block concept and use travel man algorithm concept.

出0入0汤圆

发表于 2009-6-30 12:49:45 | 显示全部楼层
哈哈,太强悍了,虽然我还看不懂。厉害!

出0入0汤圆

发表于 2009-6-30 13:32:08 | 显示全部楼层
非常形象,佩服佩服~~

出0入0汤圆

发表于 2009-6-30 17:11:29 | 显示全部楼层
佩服、

出0入0汤圆

发表于 2009-6-30 17:41:43 | 显示全部楼层
掌握一门知识不叫牛,牛的是能把不懂这门知识的人带进门。

出0入0汤圆

发表于 2009-7-24 00:25:19 | 显示全部楼层
MARK
楼主高人啊!看了半天虽然还雾蒙蒙,但多少有一点感觉了。

这是从网上找的,刚才看楼上提到AOV,查了一下:
AOV-网 :用顶点表示活动,用弧表示活动间的优先关系的有向图称为顶点表 示活动的网(Activity On Vertex Network), 简称AOV-网。
我的理解就是用一种形象的树状图来表示事情的先后以及逻辑关系。

不知道对不对,本人正是不懂这门知识的人,希望通过阅读楼主的文字被“带进门”,呵呵,先谢谢啦!

出0入0汤圆

发表于 2009-8-10 09:24:53 | 显示全部楼层
感觉图形 “源文件14.png”这个图有点问题。

是不是应该这个样子:

        甲 乙 丙
   <0>  0                                <------此处
    ①  1  1  1                          <------此处
    ②     2  2


而不是,楼主所说的:

        甲 乙 丙
   <0>  1                                <------此处
    ①  2  1  1                          <------此处
    ②     2  2


盼请楼主给于答复。  因为不知道这些 1,2,的含义,可能我说的不对。

出0入0汤圆

 楼主| 发表于 2009-8-10 09:42:08 | 显示全部楼层
1是表示起点,2是表示终点,除此之外没有什么特别含义。

出0入0汤圆

发表于 2009-8-10 10:45:43 | 显示全部楼层
那么,我感觉 在15.png和16.pdg之间的这句话,就不好理解了。

引用:

在关系矩阵中发现有两个1(起点)和2(终点)位于同一行,且这个行有且只有这两个元素,那么可以判断他们代表的线是串联关系,


这句话该怎么解释呢?

出0入0汤圆

发表于 2009-8-14 12:44:50 | 显示全部楼层
楼主高人啊!

出0入0汤圆

发表于 2009-8-14 15:38:48 | 显示全部楼层
to guoj:

  楼主的意思是: 1是起点 2是终点。甲是从 0这个位置开始到  1这个位置结束。 对照我说的看看楼主的图就可能会明白。

出0入0汤圆

发表于 2009-8-16 21:44:08 | 显示全部楼层

出0入0汤圆

发表于 2009-8-20 12:44:20 | 显示全部楼层
谢谢 【17楼】 lhyavr,

    感觉有些明白了。

    1和①   和
    2和②
       指代了不同的内容,有一些混淆;

    除此外,
       在关系矩阵中发现有两个1(起点)和2(终点)位于同一行;      和   
       在关系矩阵中发现有两个并列的1(起点)和2(终点)。

    有些不好理解。

    不过在你的解释下,感觉有些明白了。

出0入0汤圆

发表于 2009-8-27 10:18:57 | 显示全部楼层
to guoj:

   不用客气。
   他画的图是这样理解的:
   甲是从 圆圈0 到圆圈1  那么圆圈0就是起点,就用1表示  圆圈1就是终点 就用2表示
   乙和丙 都是从 圆圈1到 圆圈2  那么圆圈1就是起点 , 圆圈2就是终点。
   所以就会产生LZ神人所说的下面的话...

出0入0汤圆

发表于 2009-8-27 10:41:53 | 显示全部楼层
俺不懂 纯支持

出0入0汤圆

发表于 2009-8-27 10:43:44 | 显示全部楼层
形象

出0入0汤圆

发表于 2010-10-21 22:05:52 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2010-10-21 22:56:20 | 显示全部楼层
我倒是非常、非常、非常、希望有看到个用标准c开发程序的 工业PLC(DIY的免了)。。。。。那样对于习惯c写mcu程序的就方便多了。。呵呵。。。。

出0入0汤圆

发表于 2010-10-21 23:15:05 | 显示全部楼层
回复【16楼】ad001
楼主高人啊!
-----------------------------------------------------------------------

出0入0汤圆

发表于 2013-1-24 14:42:10 | 显示全部楼层
AOV图!学习!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 18:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表