编译型PLC开发平台OpenLogic的开发方案【恢复】
最终目的就是做一个用梯形图来做嵌入式开发的平台。这是我的一些想法,想听听大家的意见。
编译型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. 顶! 谢谢!:) 我和楼主一样,对PLC感兴趣!而且喜欢楼主的一句话:“大家一起做一件有意思的事情,虽难,但吾心向往之。”
感兴趣的朋友一起探讨吧 您好,我是用VC2005开发的。 楼主,你的这个梯形图软件用什么语言开发的,VC吗,还是其他的,想跟你学习一下,谢谢 说的有道理啊 再顶 第一步也比较难的,关键做的好用,好多软件做出来画图非常复杂,软件限制很多。总的来说是架构不好。
软件的东西和硬件有区别,软件要考虑很多用户操作的习惯等,硬件则需要更强的稳定性,和其他设备的通信能力等等 顶一下,刚才没看到这个帖子,呵呵。
做出可以直接给CPU用的编译软件,是最好的。第一步可能并不难,但是这类的软件如果仿真PLC就比较难了。
得想办法处理。比如做个植入CPU的监控程序。要不,就要去了解CPU的调式命令了。 固定函数地址的方法,请参考向量表,
固定内存地址吗,你将编译器定义的硬件总内存定的和实际小一点,
余下来的用强制指针方式使用,就是固定内存地址了.
还可以用汇编申请内存块,分散加载到固定地址,当然使用也是强制指针. 【14楼】 wenunit 龙啸苍天:
你好!
"流程程序采用固定地址方式调用主程序的一些函数,须要共享的变量也采用固定地址方式实现(实现这个的方法很多).",
这个用IAR EWARM如何实现呢? 又发现一个高手了..
<a name=baidusnap1></a>编译型的PLC速度是很快,下一步也打算做这个.
以下是个人想法:
对我来说IDE还只能用三菱的GX8(研究的比较透了,自己写是肯定的事,不过现在没时间),
自己再写一个转换程序,将梯形图转换成C文件,再调用GCC编译成Hex,烧与MCU的固定地址(非起始地址).
这个Hex中只有一个对外的接口函数,在这里执行梯形图对应的所有流程代码,
主程序不在这里,运行的时由主程序调用这个接口函数.
流程程序采用固定地址方式调用主程序的一些函数,须要共享的变量也采用固定地址方式实现(实现这个的方法很多).
这样做的一个好处是,每次烧写的东西不会很多,不用编程口进行烧写,
更重要的一点是,主程序不会外流,让别人不好仿造(产品所必须的).
有机会可以交流一下,本人已初步完成了解释型的PLC.
VC2005,LPC的ARM7都还行,会的很杂,什么都知道点,
现在在做基于STM32的PLC,也是解释型的,十之八九了.属于移植,底层好了,程序就好了.
下一步也想做一个编译型的PLC, QQ: 188483835 工作日白天必隐身在线. 想法基本一致:) 看来无锡是PLC开发集中的地方啊。有空交流下。 7楼比较喜欢难的东西,呵呵 这种还是不算难,MFC多文挡编辑.我们也有一个类似的产品. 截一个我做的软件的图
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_429223.JPG
openlogic平台的界面 (原文件名:openlogic.JPG) 这个是用内存定位技术,应该好做 mark 用梯形图和指令表作为编程语言,PLC还有一种FBD语言,这种我觉得在工业现场做闭环控制什么的比较多,可能更实用,我也在做这方面的课题,楼主有空多多交流哦! 回复【1楼】adolfshxq
-----------------------------------------------------------------------
楼主的这个想法真是不错啊!学习了。 学习………… 看了楼主的方案获益匪浅。FBD语言确实用得比较多,而且很直观。 不知道楼主做到什么样子了 样子很不错喽哈哈 学学中,谢谢分享 编译型不简单啊 关注下 好难啊感觉 年代久远,也应该支持的! 本帖最后由 adolfshxq 于 2015-9-15 09:14 编辑
已发展成一套比较完善的PLC编程软件,有兴趣的朋友,可以联系我 {:smile:}恭喜恭喜
页:
[1]