zzsczz 发表于 2014-11-26 16:28:11

PLC代码转换过程

本帖最后由 zzsczz 于 2014-11-26 16:28 编辑

PLC代码转换过程

PLC是工业计算机,主要用于替换继电器逻辑电路,主要编程语言是梯形图(LAD logic programming language ,简称LAD),从开发人员角度,抽象的看PLC代码开发过程如图 1所示。



        以AMOBBS论坛发布的 “简易PLC 梯型图 解释型监控 示范程序 测试版(51)----直接使用三菱FXGPWIN软件!”为例,代码的可视化表现资源使用三菱FXGPWIN程序,可编译代码是三菱的梯形图文件,编译后的代码格式是C语言文件,处理设备是带ISP功能的51单片机。从代码的角度来讲,明显是编译型么。
        还有西门子的S7-300及其兼容系列,代码的可视化表现资源主要是西门子的S7-LAD,可编译代码格式是西门子的S7-STL,编译后代码格式是S7-BLOCK,处理设备么有好几种,比如英飞凌的C166,TriCore,惠朋的带S7处理功能的 ARM9(ASIC或者SOC),可以算解释型。

        简单点的比如《自装可编程逻辑控制器》,代码的可视化表现资源使用梯形图,可编译代码是指令表,编译后的代码格式是51汇编代码,处理设备是8051单片机。       
        开源的项目有CPDev以及Beremiz,都是很有特点的。CPDev还设计了面向IEC61131的专用虚拟机及其指令VMASM。
        部分资料见表 1,不是很全了,疏漏之处请大家补全。解释型的PLC也有编译器把源代码转化为中间代码,至于纯脚本解释型PLC就不是很清楚了(基恩士的是不是?)。




提供商 可视化表现资源 可编译代码格式编译后的代码格式 处理设备
ourDEV AMOBBS开源PLC 三菱LAD三菱STL C MPC82G516
西门子的S7-300系列 S7-LAD S7-STL S7-BLOCK C166,TriCore,ASIC
《自装可编程控制器》 梯形图 指令表 51 ASM 8031兼容MCU
codesys IEC61131-3IEC61131-3C 很多MCU
Beremiz XML IEC61131-3FB LD SFC ST IL SFC C 很多MCU
CPDev IEC61131-3FB ST VMASM VM written by C ;FPGAAVR ARM X86 .NET



FPGA-based Execution Platform for IEC 61131-3 Control Software





hongguan 发表于 2014-11-26 16:51:13

沙发,这个要多学学。

ljt80158015 发表于 2014-11-26 16:56:19

Beremiz谁玩起来啦?

kafeiwutang 发表于 2014-11-26 18:09:39

沒懂,什么意思。

zzsczz 发表于 2014-11-26 18:50:30

本帖最后由 zzsczz 于 2014-11-26 20:42 编辑

kafeiwutang 发表于 2014-11-26 18:09
沒懂,什么意思。

意思就是   电气工程师使用plc

而设计PLC需要计算机专业人员 , 软件涉及到 编译器设计 ,   cpu或者SOC设计(用现成的也要了解), 虚拟机设计和实现,实时操作系统(前后台的裸奔系统很古老了) ;硬件么,信号完整性,EMC测试,成本控制等等

这些 每个方面的实现做深了都要花费大量资源 做 测试和验证,更别谈规范的设计了


Ilidan 发表于 2014-11-26 21:30:37

又开始搞plc了

zzsczz 发表于 2014-11-26 22:04:49

Ilidan 发表于 2014-11-26 21:30
又开始搞plc了

还有些路没走过的

dcl_yufeimen 发表于 2014-11-26 22:15:23

楼主准备自制PLC吗

kafeiwutang 发表于 2014-11-26 22:45:22

zzsczz 发表于 2014-11-26 18:50
意思就是   电气工程师使用plc

而设计PLC需要计算机专业人员 , 软件涉及到 编译器设计 ,   cpu或者S ...

我就使用plc的,沒懂的是你发这个做什么,不是你说的那些。你说的那些,不敢说懂只能说都知道一些。

zzsczz 发表于 2014-11-26 22:58:12

dcl_yufeimen 发表于 2014-11-26 22:15
楼主准备自制PLC吗

先做个参考平台吧,写写文档什么的

zzsczz 发表于 2014-11-27 09:46:25

本帖最后由 zzsczz 于 2014-11-27 10:16 编辑

kafeiwutang 发表于 2014-11-26 22:45
我就使用plc的,沒懂的是你发这个做什么,不是你说的那些。你说的那些,不敢说懂只能说都知道一些。
...



        在淘宝上搜索“PLC 可编程控制器”,按销量排序,第一屏 大把大把的 三菱(估计也有AMOBBS的功劳),还有个把汇川和台达,第二屏出现了LG 欧姆龙 西门子。ourDEV/AMOBBS开源PLC选的方案,是有市场需要的。至于按销售额排序,估计得生孩子没菊花的马云(我对 阿里巴巴 老大没有什么偏见,顶多就是嫉妒一下 , 前面的字符是坛子加的,怎么删也删不掉,真的)。
       
        兼容三菱者条路已经被踩烂了(好不好是另外一回事),看看西家的产品。        S7-200系列已经专供国内了,国内的兼容(有西门子授权)和寨货(无西门子授权)品种也有,坛子里的会员csca1也在做这方面的工作(做了2年了)。至于S7-300系列的产品,普通产品有在国内生产的,低端系列也有国内厂商生产兼容产品(貌似采用惠朋VIPA的芯片),但高端系列(比如安全型)还依赖进口。

        再整一次开源PLC,可以选择兼容S7-300系列的方案,毕竟很少有人做,若担心侵权问题,只要做到SCL以及STL源代码级别的 兼容即可(需要实现编译器), 编译后BLOCK的二进制格式可以重新制定(还可以设计格式转换工具,那么STEP7 BLOCK的遗产都可以继承了)。或者做到 和 STEP7 BLOCK 二进制 兼容,重新实现虚拟机和运行库支持。已经有人做了一些工作,比如 http://sourceforge.net/projects/step7dbtoexcel/还有 http://sourceforge.net/projects/s7dataarchiver/ ,可以把STEP7 BLOCK中的数据文件提取了。至于STEP7 BLOCK中的代码,花时间去啃就可以啦。

        2种方法
一 设计编译后BLOCK的二进制格式,设计及实现SCL以及STL源代码到自定义BLOCK编译器, 设计及实现自定义BLOCK的虚拟机及运行库;       

二或者实现兼容STEP7 BLOCK 的虚拟机及运行库,兼容西门子的 STEP7工具 。

        第二种方法工作量小些,有第三方公司做了些工作
比如http://www.esa-at.at/en/wp-content/uploads/sites/2/2014/07/IBHBrochure.pdf



jzkn 发表于 2014-11-27 10:51:52

我们这要搞一个流水线工艺改进项目(产线自用,不批量生产外供),本来用PLC,但是要外包,成本较高。昨天项目组找我问能不能用单片机来做,我没搞过PLC。不太清楚,请问楼主像这种流水线能用单片机实现吗?就是物料过来后,探测器探测感应,然后控制气缸实现相应的机械动作,大概也是继电器之类的。整体不是很复杂。不清楚PLC和单片机的区别,所以来这里问问,谢谢。

zzsczz 发表于 2014-11-27 11:01:15

本帖最后由 zzsczz 于 2014-11-27 11:26 编辑

jzkn 发表于 2014-11-27 10:51
我们这要搞一个流水线工艺改进项目(产线自用,不批量生产外供),本来用PLC,但是要外包,成本较高。昨天 ...

j大,你怎么混成金牌会员的。。。。。

不懂 PLC单片机 的区别,还拍板,   项目组给你上眼药么?   组长拖出去打靶。    单片机做成PLC的稳定度,物料成本花费不会比买的PLC少多少,时间人员花费更多


多大规模的线?周期多长?资金和组员多少(资金和能力挂钩吧,差不了太远)?      有没有洋垃圾可以淘一下,又便宜又好用。。。。


你真想搞 ,可以咨询会员 zxqwork那种 的   http://www.amobbs.com/space-uid-29881.html   靠谱些。。。。


这个贴的成果估计得等几年才有得玩

smithding 发表于 2014-11-27 11:03:43

单片机做工程 、工艺是曾经淘汰的方式,工业应用上被plc取代了的

zzsczz 发表于 2014-11-27 11:10:11

smithding 发表于 2014-11-27 11:03
单片机做工程 、工艺是曾经淘汰的方式,工业应用上被plc取代了的

看什么工程工艺了   单片机 在 消费电子   还是有市场的

生产自动化么 , 预算太多了 ,稳定第一

jzkn 发表于 2014-11-27 11:21:34

zzsczz 发表于 2014-11-27 11:01
j大,你怎么混成金牌会员的。。。。。

不懂 PLC单片机 的区别,还拍板,   项目组给你上眼药么?    ...

没事,很小的线,没几米长!我回头给他们说说,有现成的板子先试试,不行再PLC。
内地小厂,没有那么严格,随便整,呵呵。

lushanlq 发表于 2014-11-27 20:07:09

国内PLC市场是很大的,如果能DIY兼容S7-300,不愁销路的

vc9181 发表于 2014-11-27 20:50:00

jzkn 发表于 2014-11-27 11:21
没事,很小的线,没几米长!我回头给他们说说,有现成的板子先试试,不行再PLC。
内地小厂,没有那么严格 ...

个人感觉木有问题

kafeiwutang 发表于 2014-11-27 21:21:50

vc9181 发表于 2014-11-27 20:50
个人感觉木有问题

个人感觉问题大了

vc9181 发表于 2014-11-27 21:25:35

kafeiwutang 发表于 2014-11-27 21:21
个人感觉问题大了

哪里大了?

李程宏 发表于 2014-11-27 21:29:01

谢谢分享,mark

zzsczz 发表于 2014-11-27 22:20:08

lushanlq 发表于 2014-11-27 20:07
国内PLC市场是很大的,如果能DIY兼容S7-300,不愁销路的

S7-300系列的产品,普通产品有在国内生产的,低端系列也有国内厂商生产兼容产品(貌似采用惠朋VIPA的芯片),但高端系列(比如安全型)还依赖进口。欧盟会控制技术的扩散,生产力是源泉,不会白给的



DIY兼容S7-300,看兼容到哪个地步了,SCL 与STL级别的兼容 ,努力是可以达到的 ;STEP7 BLOCK   运行代码 二进制级别的兼容 , 努力也是可以达到的。做到这2个层次,可以继承S7BLOCK的遗产


至于直接 在STEP7下使用,很天真的想法,软件太复杂;   可行的方案是拿出合适的产品然后加入S7生态圈,成为像 VIPA 或者IBHsoftec那样的成员 ,( 估计西门子不会同意的,国内企业进入会直接玩废掉STEP7 生态圈 )



相比之下,拿出比西门子更高效的方案可能性大些,这个工作量是很大的,毕竟西门子也在进步,是为2次世界大战都提供过装备的公司(虽然都没能打赢);当能够挤掉STEP7 的时候,估计国内企业在各个方面 提供 的产品 都能压制欧盟相应的产品

xd785 发表于 2014-11-27 23:43:49

收藏了,值得看看…………

jungleyang 发表于 2014-11-28 12:29:19

zzsczz 发表于 2014-11-27 22:20
S7-300系列的产品,普通产品有在国内生产的,低端系列也有国内厂商生产兼容产品(貌似采用惠朋VIPA的芯片 ...

深圳合信好像就可以生产兼容S7-300的CPU模块,号称是全兼容的,

zzsczz 发表于 2014-11-28 16:36:42

jungleyang 发表于 2014-11-28 12:29
深圳合信好像就可以生产兼容S7-300的CPU模块,号称是全兼容的,


国内西门子授权的厂家上海正航 有 S7-200兼容产品 ,还有 softlink 有 s7-300的低端兼容CPU(规格真的很低) ,其它不是很清楚; 价格和西家同规格的差不了多少的

合信 有 S7-200 兼容的 CPU 产品   ;S7-300的,只有模块没有CPU吧 , 有也不能白天卖吧

西门子起诉过对非授权的 企业,败诉了(相比之下微软V587) , s7-200市场已经烂掉了(就算不被仿制 也会被 山寨三菱 淹没)

护企业的是商业秘密,是先进的生产力

ab3504 发表于 2014-12-17 17:56:13

多谢楼主的分享

tiantang46800 发表于 2014-12-19 11:43:21

mark 学习!!!

xiatao1800 发表于 2015-1-28 16:36:40

下载学习下,解释型是不是是梯形图编译的文件只有PLC内置的程序才能驱动出来?

zzsczz 发表于 2015-1-28 20:09:46

xiatao1800 发表于 2015-1-28 16:36
下载学习下,解释型是不是是梯形图编译的文件只有PLC内置的程序才能驱动出来? ...

看具体机型吧


比如 西门子的 s7-300系列, 梯形图 可转换为 指令表,存储格式是s7-block ,可以在软件虚拟机 (PLCSIM ) 中执行




还有的PLC把梯形图转换为C 语言,再编译成机器码;这时候 有虚拟机 仿真器也可以运行啊

McuPlayer 发表于 2015-1-28 20:59:44

梯形图比代码直观了很多,但复杂逻辑梯形图阅读也挺困难,我总觉得的应该有比梯形图更直观的设计方式出来

zzsczz 发表于 2015-1-29 12:52:19

McuPlayer 发表于 2015-1-28 20:59
梯形图比代码直观了很多,但复杂逻辑梯形图阅读也挺困难,我总觉得的应该有比梯形图更直观的设计方式出来 ...

梯形图 是給   熟悉繼電器邏輯的電氣工程師使用的


至於複雜 的梯形圖,滿足工藝要求 即可


還有結構化 文本什麼的 ,適合軟件 開發 人員 使用


再 高效的 設計 方式, 沒有 人 用 也 白搭 ,若 沒有 顯著 優勢 ,兼容 現有 標準 和產品是最 有 效 的 設計方式

xiatao1800 发表于 2015-1-29 15:10:21

zzsczz 发表于 2015-1-28 20:09
看具体机型吧




“还有的PLC把梯形图转换为C 语言,再编译成机器码”这样的PLC里面有程序吗?
是不是我仿制了它硬件,然后把机器码下载进去就可以工作了吗?

zzsczz 发表于 2015-1-29 16:19:26

xiatao1800 发表于 2015-1-29 15:10
“还有的PLC把梯形图转换为C 语言,再编译成机器码”这样的PLC里面有程序吗?
是不是我仿制了它硬件, ...

自己玩怎么都行

商业化 的话 , 拿不上 台面的

也有逆向工程 实现“克隆” 设计的 (比如VIPA 公司 ),但没有授权 ,兼容性 是 有问题的   


硬件 只占 小部分工作量 ,配套 软件 、库   标准 等等 是大头

twitter 发表于 2015-1-29 17:46:53

本帖最后由 twitter 于 2015-1-29 17:49 编辑

其实没必要考虑兼容S7 Block的存储结构的,既然做的东西都不打算兼容Step7开发软件的话,只要采用它的块管理方式思想就够了。
直接从SCL语法起步(类PASCAL的,它的语法结构也比较严格),做编译器、调试器、虚拟机,这些都做出来了,那么类似PLCSIM这样的PC软件也就容易多了。对于中型以上PLC,结构化语言是必然的趋势,梯形图会用得越来越少的。

zzsczz 发表于 2015-1-29 21:17:44

twitter 发表于 2015-1-29 17:46
其实没必要考虑兼容S7 Block的存储结构的,既然做的东西都不打算兼容Step7开发软件的话,只要采用它的块管 ...

可以考虑兼容到step7V5.4 V5.5

再 整一套自用的固件和开发工具 / 库

VIPA是 如此

国内 的x航x信的 200系列 也是如此,有兼容step7   microwin 的产品线 ,也有自用的 开发环境

twitter 发表于 2015-1-29 22:09:57

本帖最后由 twitter 于 2015-1-29 22:13 编辑

搞开源不是等于不用管版权和专利的,与其做一个各方面都被原型限制的山寨300,做出来后只能被淘宝上一堆山寨厂商做烂掉,不如只参考语法风格,独立设计。
而且个人的精力是有限的,能做完一套命令行编译器、调试器和目标机的虚拟机,已经是大工程了。
IDE这种东西,留给其他更擅长这方面的人去做,就算暂时没有,也可以用开源编辑器加自己的命令行工具顶着,完善接口才是重要的。

wurst 发表于 2015-2-1 18:46:56

国产还是仿制这条路    没大多戏!

还是走标准化这条路吧, IEC61131

突然觉得有FPGA直接解析PLC指令,类似IP核.有点味道

zzsczz 发表于 2015-2-2 20:16:26

wurst 发表于 2015-2-1 18:46
国产还是仿制这条路    没大多戏!

还是走标准化这条路吧, IEC61131


标准还不是 欧美几个大公司在一起搓麻将搓出来的, 逆向设计没戏的话   符合标准 更没戏

就说IEC61131-3 吧,各个IEC61131-3 编译器把 IEC61131-3 的IL(指令表)转换为 C代码(如CODESYS,Beremiz)或者其它中间代码(如CPDev)编译。IEC61131-3 缺乏其语言的 处理器 (不管是虚拟的还是实际的) 相关规范,这不是假大空是什么? 符合 IEC61131-3 标准 唯一收益方是 公司的老板,省去了代码设计培训费;但实际硬件平台还需要学习操作以及专有库使用。

相比之下 , S7BLOCK 的 STL(指令表)是 可以被 某种 处理器执行 (硬件执行 或者 虚拟机 执行)的 ,其规范完整度要完善得多

BrightWang 发表于 2015-2-5 19:51:11

这个CPDev,不知道楼主哪那里有没有下载到?哪个网站死活也注册不了,不知道楼主怎么下的?

93434387@qq.com 发表于 2017-4-19 14:10:02

这个要好好研读。。。扫一眼还真看不懂

goldensun 发表于 2017-10-26 17:35:50

CPDev是开源软件吗?
页: [1]
查看完整版本: PLC代码转换过程