搜索
bottom↓
回复: 31

编译型PLC开发平台OpenLogic的开发方案【恢复】

[复制链接]

出0入0汤圆

发表于 2008-9-24 23:28:41 | 显示全部楼层 |阅读模式
最终目的就是做一个用梯形图来做嵌入式开发的平台。

这是我的一些想法,想听听大家的意见。



编译型PLC开发平台OpenLogic的开发方案(只是编译部分,还有通讯部分,在线调试部分,我后续给出): 



语句表:语句表是类似与堆栈式计算机的汇编语言序列。



解释型PLC:比较多的PLC是采用解析语句表来完成指令的执行的,下位有个执行指令的解释器,类似于虚拟机。

特点:速度较慢,易于移植。



编译器PLC:将语句表通过编译器直接转化成MCU可直接识别二进制代码。

特点:速度快,不易于移植。





第一步:梯形图转化为语句表。(这一部分与具体的MCU无关)

这一部分我正在做,以前为另外一个公司做过,现在正在重新开发一个,力争做的比较好用,现在已经可以完成画图和逻辑实现。有兴趣的朋友可以跟我要去看看,很多东西还没做就不在这里献丑了



第二步:语句表转化为C代码

简介: 这样的C代码是利用GCC的内嵌汇编语法,将一条PLC指令,转换为几条MCU汇编指令。具体转化过程如下:

利用词法和语法分析工具FLEX(LEX)和BISON(YACC),生成语句表的编译器,这里叫编译器并不很准确,因为只是生成了C代码。

前端开源PLC提出要做语句表的编译器,可否这样来做。



相关工具:FLEX和BISION,利用它们可以生成编译器的源码 

C语言编译器使用CodeBlock,它是基于GCC的编译器,可以跨平台使用,开始的时候可能不是很好用。

利用CodeBlock将FLEX和BISION生成的源码编译成我们需要的编译器.

优点:可以解决编译型PLC的移植性差的缺点。只要修改BISON的输入文件,然后重新编译,就可以生成一个基于其他MCU的编译器。



第三步:利用GCC编译器,将上一步生成的代码转化成二进制文件,可以下载到下位机中执行。



可能有人会对为什么不直接从语句表生成二进制代码感兴趣。这样是可以的,但是上述方法有两个优点:

1.        从梯形图的指令中可以直接调用C语言写的函数,这样将用户的C函数和我将从语句表中生成的C代码一起利用GCC编译就好了。因为即使语句指令很多但是还有有一些功能难以实现,这样留一个C语言的接口就是一个不错的选择。

2.        GCC是多目标机,可以很容易编译成适应其他MCU的代码。



以上的想法还很不成熟。具体实现可能还有很多难度,希望对这个感兴趣的朋友可以多交流一下,或者能够参与其中,大家一起做一件有意思的事情,虽难,但吾心向往之。

本贴被 adolfshxq 编辑过,最后修改时间:2008-09-24,23:58:59.

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

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

出0入0汤圆

发表于 2008-9-28 12:56:19 | 显示全部楼层
顶!

出0入0汤圆

 楼主| 发表于 2008-9-25 11:26:32 | 显示全部楼层
谢谢!:)

出0入0汤圆

发表于 2008-9-25 11:09:16 | 显示全部楼层
我和楼主一样,对PLC感兴趣!而且喜欢楼主的一句话:“大家一起做一件有意思的事情,虽难,但吾心向往之。”

感兴趣的朋友一起探讨吧

出0入0汤圆

 楼主| 发表于 2008-9-25 10:56:44 | 显示全部楼层
您好,我是用VC2005开发的。

出0入0汤圆

发表于 2008-9-25 10:47:31 | 显示全部楼层
楼主,你的这个梯形图软件用什么语言开发的,VC吗,还是其他的,想跟你学习一下,谢谢

出0入0汤圆

发表于 2008-10-23 09:34:06 | 显示全部楼层
说的有道理啊

出0入0汤圆

发表于 2008-10-12 09:23:40 | 显示全部楼层
再顶

出0入0汤圆

 楼主| 发表于 2008-10-22 13:17:15 | 显示全部楼层
第一步也比较难的,关键做的好用,好多软件做出来画图非常复杂,软件限制很多。总的来说是架构不好。

软件的东西和硬件有区别,软件要考虑很多用户操作的习惯等,硬件则需要更强的稳定性,和其他设备的通信能力等等

出100入0汤圆

发表于 2008-10-22 10:30:41 | 显示全部楼层
顶一下,刚才没看到这个帖子,呵呵。

做出可以直接给CPU用的编译软件,是最好的。第一步可能并不难,但是这类的软件如果仿真PLC就比较难了。

得想办法处理。比如做个植入CPU的监控程序。要不,就要去了解CPU的调式命令了。

出0入0汤圆

发表于 2008-10-27 22:25:27 | 显示全部楼层
固定函数地址的方法,请参考向量表,



固定内存地址吗,你将编译器定义的硬件总内存定的和实际小一点,



余下来的用强制指针方式使用,就是固定内存地址了.



还可以用汇编申请内存块,分散加载到固定地址,当然使用也是强制指针.

出0入0汤圆

发表于 2008-10-27 16:28:49 | 显示全部楼层
【14楼】 wenunit 龙啸苍天:



你好!



"流程程序采用固定地址方式调用主程序的一些函数,须要共享的变量也采用固定地址方式实现(实现这个的方法很多).",



这个用IAR EWARM如何实现呢? 

出0入0汤圆

发表于 2008-10-26 20:01:16 | 显示全部楼层
又发现一个高手了..



<a name=baidusnap1></a>编译型的PLC速度是很快,下一步也打算做这个.



以下是个人想法:



对我来说IDE还只能用三菱的GX8(研究的比较透了,自己写是肯定的事,不过现在没时间),



自己再写一个转换程序,将梯形图转换成C文件,再调用GCC编译成Hex,烧与MCU的固定地址(非起始地址).



这个Hex中只有一个对外的接口函数,在这里执行梯形图对应的所有流程代码,



主程序不在这里,运行的时由主程序调用这个接口函数.



流程程序采用固定地址方式调用主程序的一些函数,须要共享的变量也采用固定地址方式实现(实现这个的方法很多).



这样做的一个好处是,每次烧写的东西不会很多,不用编程口进行烧写,



更重要的一点是,主程序不会外流,让别人不好仿造(产品所必须的).







有机会可以交流一下,本人已初步完成了解释型的PLC.



VC2005,LPC的ARM7都还行,会的很杂,什么都知道点,



现在在做基于STM32的PLC,也是解释型的,十之八九了.属于移植,底层好了,程序就好了.



下一步也想做一个编译型的PLC,&nbsp;QQ:&nbsp;188483835&nbsp;&nbsp;工作日白天必隐身在线.

出0入0汤圆

 楼主| 发表于 2008-10-27 11:07:52 | 显示全部楼层
想法基本一致:)

出0入0汤圆

发表于 2008-9-25 01:08:19 | 显示全部楼层
看来无锡是PLC开发集中的地方啊。有空交流下。

出0入0汤圆

 楼主| 发表于 2008-9-26 22:18:44 | 显示全部楼层
7楼比较喜欢难的东西,呵呵

出0入0汤圆

发表于 2008-9-26 22:00:41 | 显示全部楼层
这种还是不算难,MFC多文挡编辑.我们也有一个类似的产品.

出0入0汤圆

 楼主| 发表于 2008-9-24 23:41:42 | 显示全部楼层
截一个我做的软件的图



openlogic平台的界面&nbsp;(原文件名:openlogic.JPG)&nbsp;

出0入0汤圆

发表于 2010-11-14 23:48:19 | 显示全部楼层
这个是用内存定位技术,应该好做

出0入0汤圆

发表于 2011-4-19 00:07:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-4 17:04:09 | 显示全部楼层
用梯形图和指令表作为编程语言,PLC还有一种FBD语言,这种我觉得在工业现场做闭环控制什么的比较多,可能更实用,我也在做这方面的课题,楼主有空多多交流哦!

出0入0汤圆

发表于 2011-9-1 10:56:01 | 显示全部楼层
回复【1楼】adolfshxq
-----------------------------------------------------------------------

楼主的这个想法真是不错啊!学习了。

出0入0汤圆

发表于 2011-10-18 16:48:40 | 显示全部楼层
学习…………

出0入0汤圆

发表于 2012-12-14 20:08:57 | 显示全部楼层
看了楼主的方案获益匪浅。FBD语言确实用得比较多,而且很直观。

出0入0汤圆

发表于 2013-1-11 20:21:57 | 显示全部楼层
不知道楼主做到什么样子了

出0入0汤圆

 楼主| 发表于 2013-1-12 21:09:13 | 显示全部楼层
样子很不错喽  哈哈

出0入0汤圆

发表于 2014-4-18 13:10:40 | 显示全部楼层
学学中,谢谢分享

出0入0汤圆

发表于 2014-9-2 08:43:00 | 显示全部楼层
编译型不简单啊 关注下

出0入0汤圆

发表于 2015-4-5 11:43:15 | 显示全部楼层
好难啊感觉

出0入0汤圆

发表于 2015-8-5 23:05:40 | 显示全部楼层
年代久远,也应该支持的!

出0入0汤圆

 楼主| 发表于 2015-9-15 09:13:18 | 显示全部楼层
本帖最后由 adolfshxq 于 2015-9-15 09:14 编辑

已发展成一套比较完善的PLC编程软件,有兴趣的朋友,可以联系我

出0入0汤圆

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

本版积分规则

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

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

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

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