打印
[Atmel]

【秀出我的Atmel设计方案】+ 基于ATMega128的可编程控制器及IO

[复制链接]
6912|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ddllxxrr 于 2014-12-6 14:18 编辑

移动车辆及工程装备的自动化水平在逐年提高
传统以继电器为主的电控系统无法满足使用者对于机械设备的要求
如果制作专用的控制器,无法满足各个工程机械、特种车辆厂家不同的要求
在此背景下,我设计了 移动车辆用  紧凑型 低成本 可编程控制器 及 IO
本帖涉及两款控制器,一款IO,因为软硬件同平台,我将一起介绍。

选择MEGA128作为主控制器:理由
×外设丰富,在本设计中,两路串口,SPI, IIC, 8路AD, 均有使用
×具有外部总线,扩展了CAN总线及8K RAM
×高速,在2路串口高波特率通讯,CAN总线运行CANopen主站协议下,用户层运行时间占95%以上
×程序容量大,除去50K左右的RUNTIME,用户程序空间有60+K的空间
×内存大,8K片外RAM由RUNTIME管理,主要作为硬件变量对应与通讯有关的内存,用户可自由使用的内存高达4K
×片内有大容量EEP
×BOOTLOADER功能使用方便,可以检测应用程序的完整性,并在线修改程序
×ICC编程环境简易,在适当配置后,非常便于用户作为PLC的开发环境
×可靠性及一致性好,至今未出现过单片机方面的异常
×多年的软件积累(此条为本人的情况)

硬件照片:
64型控制器:正、背

32型控制器:正、背

40型IO:正、背



相关帖子

沙发
疯子8972|  楼主 | 2014-12-5 15:44 | 只看该作者
本帖最后由 疯子8972 于 2014-12-5 15:59 编辑

硬件功能:
特点:    数量很多的可配置输入
            输出性能强大的输出
64型控制器:

32型控制器:

40型IO:

使用特权

评论回复
板凳
YingziSeek| | 2014-12-5 15:59 | 只看该作者
很牛叉

使用特权

评论回复
评论
疯子8972 2014-12-5 16:19 回复TA
插队,破坏我系统的描述 
地板
疯子8972|  楼主 | 2014-12-5 16:00 | 只看该作者
本帖最后由 疯子8972 于 2014-12-5 16:54 编辑

编程环境:
×简易,没有任何多余的文件包含,RUNTIME对于用户来说等于透明
×功能配置简单,无需函数,直接改动配置文件选择不同的硬件功能
×无需初始化,用户层直接从PLC_PRG入口进入,同PLC类似
×绝大部分功能映射为变量:如CAN网络、HMI通讯全部映射为变量,用户直接访问
   所有输入输出映射为变量:如输入ID1_1,IAV2_1,QD3_1,用户直接访问
×提供完备的信号量及定时器功能,可以实现操作系统的功能,方便用户编程


功能配置文件:

软件环境及通讯功能特点很多,图片无法表示完整
可以通过下面的编程文档详细了解:
TL_SIO_64设备描述.pdf (904.38 KB)
TL_SIO_64编程指南.pdf (962.79 KB)
TL_SIO_64CAN编程.pdf (1.36 MB)
TL_SIO_64HMI编程.pdf (581.64 KB)







使用特权

评论回复
5
疯子8972|  楼主 | 2014-12-5 16:01 | 只看该作者
本帖最后由 疯子8972 于 2014-12-5 21:10 编辑

烧录及调试工具:
得益于RUNTIME的设计,基于此RUNTIME设计的产品,均可以使用TL_STUDIO作为烧录及调试工具
特点:
×通用串口,支持最高230400的波特率,烧写速度快
×可以对用户程序进行 暂定、运行、重启操作
×可以观测控制器、IO当前的输入输出状态,并强制改变状态
×可以在运行状态中观测CAN总线中所有PDO的值(报文检测)
×可以在运行状态中观测应用程序中的全局及静态变量
×可以在运行状态中观测和修改EEP数据

图片如下:



使用特权

评论回复
6
疯子8972|  楼主 | 2014-12-5 16:02 | 只看该作者
本帖最后由 疯子8972 于 2014-12-5 22:06 编辑

RUNTIME设计
为了给用户提供编程及调试的便利,
PLC中和运控中都有RUNTIME的设计(了解CODESYS类似编程环境的同学应该都熟悉)
RUNTIME可以运行于有操作系统的环境,也可以运行于无操作系统的环境,故名思议,就是当用户程序在运行时
它也在运行的一段程序,它的作用是对用户程序提供支持的。

在本设计中,没有使用现成的抢占式OS,非不行,而是不必,抢占式的OS在使用时对使用者提出更高要求,而通用PLC(非运控)
并不会用到抢占式OS的优点,(注意:此处抢占是指用户自己编写的应用层的多任务互相抢占),也就是说,用户编写的程序
都具有函数级别的原子性,这样有利于用户对于自己程序的理解,事实证明效果不错

所以,本设计中采用了系统和用户两层式框架,不敢用OS这个词语,因为远远没有达到OS这个程度。程序框架如下图所示:

并行的意思是指系统层可以抢占用户层,完成后返回用户层
也可以说系统层能做到硬实时,而用户层使用软实时
软实时不代表不实时,用户完全可以使用RUNTIME提供的32个软定时器设置回调函数
或者TIME_1ms定时器,进行定时作业。类似于win程序中的OnTimer
应用层还可以使用信号作为作业的依据,类似于win中的消息(lin中的信号概念)
系统会在某些事情发生时向用户层发送携带消息的信号,用户只需要编写信号的回调即可
用户也可以定义自己的信号,便于任务的划分或者多人协同编程

MEGA是枚速度非常快的芯片,可以这么说,我现在18.432M的8位机的运算速度,是要远高于德国
中档移动PLC中常用的40M 16位单片机的,这是优点
但是缺点也很明显,缺乏高级的特性,如:没有中断向量管理,没有异常中断,部分外设功能偏弱,如UART
所以该RUNTIME没有往高大上的方向做,而是往轻量化,高速度发展,类似于汽车的轻量化设计
这样做出来的RUNTIME有局限性(向更高端的芯片移植时显得功能不够,如无法提供高级OS所能提供的功能)
但是也有优点:轻量化,在瘦资源下能很好完成一些比较高级的特性
容易理解,便于小单位和开发能力不足的团队使用,并开发稳定的产品
硬件的低端便于生产,有利于在生产能力不高的情况下做出比较稳定的产品(有过BGA虚焊的朋友应该懂的:)

使用特权

评论回复
7
wxjcan| | 2014-12-5 16:17 | 只看该作者
牛人啊  

使用特权

评论回复
8
疯子8972|  楼主 | 2014-12-5 21:17 | 只看该作者
本帖最后由 疯子8972 于 2014-12-5 23:27 编辑

推进及开源

其实,写到这里,有点心酸
此产品是我的心血,虽然比照大公司的产品,它就如同一个丑陋的小孩,衣衫褴褛(不是谦虚,而是真实感受)
但是我照顾此产品如同照顾自己的小孩,从PCB设计(64是自己画的,后续的32及40是同事画的)到RUNTIME编写
到调试软件的编写,到编写一系列的使用文档,到外形定型,安装附件。是本人一点一点完成,感触比较深

当好几个用户使用它独立编程,用于他们自己的产品并取得好的效果,我由衷的开心。
但是开心是短暂的,行业的不景气使得此产品如同卖火柴的小女孩手中的火柴。可以点燃,可以看见光明,可以感受点温暖
但是希望它能像冬日中的暖炉,如同痴人说梦。
以我现有的行业知识判断(本人身处工程机械行业多年),此产品就是**肋。食之无味,弃之可惜。
感谢我的公司,感谢我的老板,放任我在这么差的行情下,还如此任性,开发出这几个怪胎(民营小得很的单位,懂的人能
理解我说的,为什么要感谢他,我相信就算是更有钱的老板,大多都不会支持开发这样的产品的)。
也感谢我的家人,我的老婆,明知道我的极端主义和理想主义,仍然无条件相信我,支持我,从来没说过我。

就算环境再差,技术总要进行,自从QQ的个性签名改成:梦想 ** 成就 ,我就无时无刻不在思考这个产品的出路,考虑自己今后要如何发展
如果单纯把现有的源码往网上一放,就说是开源,这样的层次就太低了,放了等于没放,而我希望它能持续的进步。

分两点来说:
1、技术本身发展的方向,目前我希望它能有节奏的向前推进,比如:编译器的改进
现在是使用ICC,但是脱离不了“单片机”感觉的编程环境。我希望可以自己制作以POU为单位的编程环境,而不是以文件为单位,每个POU有自己专属的静态变量和局部变量。每个工程中有独立的结构定义区、全局变量定义区、PLC资源配置区。
调试环境集成于编程环境,可以在调试时自动观察页面的内容,并分屏显示当前变量的值。可以定义于硬件资源有关的关键字,如输入变量IDX_X,输出变量QDX_X。
编译环境实质使用GCC,从而使得这个环境成为免费软件。

想象一下,如果以后小公司在使用AVR做设计时,可以使用自己设计的工具链,使自己公司的产品有一个统一稳定的开发平台。
只要有一个人负责RUNTIME的移植和重新定义工具链(比如在编译器中设置自己公司的产品型号,而不是单片机的型号),另外
做应用的人简易的进行应用层的编程,并可以在运行时调试,观测变量,可以非常方便的做可视化设计(比如说做个温度控制器模块,
可以利用程序烧录和调试串口,制作PC端程序,以各种方式(指针、图表)显示程序中的任何变量,记录进文件或者数据库)这将是让人
多么兴奋的事情啊。

编译环境还可以后续增加对于IEC61131编程语言的支持,如ST语言,这样用户可以使用C或者ST语言进行编程,甚至可以使用梯形图。(使用BISON FLEX写词法和语法的分析)

2、管理,有志同道合的人,对其进行维护,如文档编写,稳定版本发布等(暂时没想好)。

希望这样的开源才能真正让更多人更好理解单片机、理解软件、理解工程、理解工控的一些基本的概念,从而朝着更高的地方发展。

题外:为什么我说这个东西是怪胎,因为它不是按照标准制作的产品,OPENPLC是一个很明晰的定义,已经有很多专业的公司在做
从软件看,德国就有3S, KW,infoteam,意大利和俄罗斯都有。从不OPEN的系统看,好多大公司都有这样一套自己的工具,如西门子,罗克韦尔,贝加莱,艾默生。

但是,可以看到,中国的没有,中国大公司要么在买进口的软件,要么就是小公司的可怜人在没有软件支持的情况下,孤独的使用着单片机
看着论坛中无数人在问着初级的问题,看到很多人在技术的路上停滞不前,看到我的同业者在感叹进口技术是如何做到如此牛X的地步,而自己的产品为什么总是这样“入门时”,看到国产的产品明明没有核心技术,还嘴硬“自主知识产权”时,我就不禁在想:问题在哪里

很可惜,我不是聪明人,我不知道,系统性的问题往往比一个技术难题更难。
虽然我用梦想 ** 成就 这样的口号激励自己,但是谁知道呢,人总要生活,我不希望牺牲家人的生活来**,我不希望自己明知无力改变现状但只能自怨自艾。
可能我会离开这个行业,去往看似更好的行业,只怕又是个这山看着那山高的假象。
技术不难,技术人生很难。




使用特权

评论回复
9
疯子8972|  楼主 | 2014-12-5 22:08 | 只看该作者
本帖最后由 疯子8972 于 2014-12-6 00:53 编辑

写了这么多,最后来个产品外观吧
产品外观:64&32型控制器:

40模块:

显示下我的最爱:比起编程,我更喜欢做美工,HMI界面设计:

PS:我的文档写得也不错哦,就在应用层软件那里:)  欢迎下载,提出宝贵意见


使用特权

评论回复
10
疯子8972|  楼主 | 2014-12-5 22:09 | 只看该作者
本帖最后由 疯子8972 于 2014-12-6 00:27 编辑

回答网友提问1:
ARM7及M3已经那么普遍,为什么还用8位机。
文中已经说了一些关于这方面的考虑,这里再补充说一下。

×编译器的复杂程度,我认为对于应用层来说,编译器越简单越好,对PLC层面的编程是为了解决工程问题,不是设置参数,配置命令行玩的
在这一点上,我暂时没见过比ICC更简单的编译器了,如果我是入门者,就会一点C语言,我直接就开始编程,多么畅快的事情。
如果能自己制作编程环境,那这个优势就无所谓了,但是现在的情况,我无法想到更好的办法。

×MEGA其实很奇葩,速度快在8位系统中甚至16位系统中非常突出,虽然不敌32位系统,但是就移动车辆上的闭环控制来说,运算能力实在绰绰有余,而且8位机带来好处是外围电路的简易,文中可以看出,我们的生产水平不高,在这样的条件下,我为了做到硬件的可靠和产品体积的小巧,使用MEGA也就是顺理成章的事情了

×多年软件的积累,这样一个RUNTIME不是说几个月或者半年就做出来的,特别像我这样的环境,没有多余的人可以支持,1个人要写这样的东西我必须把精力花在软件的结构上,如果我为了更高的目标,而上32位(比如支持串口下设置软件断点,现在MEGA只能实现串口随时暂停,而无法在指定位置暂停),那产品的推出更加遥遥无期了,我必须评估系统的风险和收益,选择我的开发平台。

说到底:个人能力有限,条件有限,资源有限,无法一步到位。我很早就接触ARM,接触M3也很早很早了,但是权衡利弊,没敢用。
如果我可以利用的资源能上一个量级,我就会用32位的,现实:人穷志短。。。

使用特权

评论回复
11
疯子8972|  楼主 | 2014-12-5 22:09 | 只看该作者
本帖最后由 疯子8972 于 2014-12-6 10:19 编辑

在没有更多提问前,写点自己对于软件的态度,其实软件水平是有高下的,从最基本的编程小节处一直到整体结构上
这时,问题就来了

1,高手会鄙视低手,这个鄙视其实可以理解,因为高手大多是对自己要求严格的人甚至有完美主义倾向,对不美的东西有天生的排斥;
这种排斥是与生俱来的,无法缓解,于是出现了很多评论:“这就是狗屎”

2,成长中的低手,在捍卫自己进步的成果,因为低手在思考,在进步,于是出现了需要认可的需求,为什么那么多人喜欢写OS呢,因为他们在他们学习的过程中,有所思,有所感,希望自己的进步能被大家认可,于是很多人发布XX_OS(PS:我也有过冲动,但是我比较自卑,就算有想法,基本第二天就觉得那是“狗屎”,所以我很理解希望得到证明的心情)

3,真高手、假高手(光指技术),这是包装的时代,这是看重结果的时代,真假太难辨认,于是出现了乱斗,出现了气话,其实真高手也知道自己的水平,假高手也知道自己的水平,只是心态不同,斗斗有利于消遣,但是问题是,真正的初学者苦了,初练武功的人妄图从类似狗咬狗的撒欢中得到武学的奥妙?结果是大部分人忽左忽右,徘徊而不得

那么怎么办?
以玩笑的心态看斗嘴,用认真的心态分析问题,就算真心认为那是狗屎,请从狗屎中得到“启发”
非常赞同 王垠 同学对于“启发”这个词的解释,感兴趣的同学可以看看王垠的 博文 (根据我目前的认知,他应该算个真高手)呵呵

回答网友提问2(预留)

使用特权

评论回复
12
cos12a| | 2014-12-5 23:44 | 只看该作者
既然在于系统?为何还要选择8位机的技术。你提的那么多缺陷,32位机至少优势多一些。

使用特权

评论回复
13
疯子8972|  楼主 | 2014-12-6 00:37 | 只看该作者
回答网友问题3(预留)

使用特权

评论回复
14
ddllxxrr| | 2014-12-6 14:17 | 只看该作者
写地很全,顶一下

使用特权

评论回复
15
Yanson| | 2014-12-6 16:02 | 只看该作者
牛人,而且还是一个有精神信仰的牛人!
高山仰止!

使用特权

评论回复
16
lvyunhua| | 2014-12-6 22:04 | 只看该作者
:lol  支持下!

使用特权

评论回复
17
疯子8972|  楼主 | 2014-12-9 14:48 | 只看该作者
自己顶

使用特权

评论回复
18
疯子8972|  楼主 | 2014-12-10 13:53 | 只看该作者
感觉只要我发的贴都很冷,自己顶

使用特权

评论回复
19
ningling_21| | 2014-12-10 14:23 | 只看该作者
不错,支持两下!

使用特权

评论回复
20
疯子8972|  楼主 | 2014-12-16 14:13 | 只看该作者
手冷脚冷贴更冷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://photo.21ic.com/board/getPic/type/1/id/72699.jpg 定制多语言编程控制器(文字或图形) 定制带电子凸轮轴功能运动控制器

32

主题

576

帖子

37

粉丝