低压电器设备的单点接地方式可分为:串联式单点接地、并联式单点接地、多分支单点接地。
PLC的接地属于低压电器设备的单点接地方式。
串联式单点接地:也就是第1种接地方式。接地方法:将多个低压电气设备的接地端子在设备的就近处与同一根接地线连接上,然后通过这根接地线与接地装置连接。这种接地方式的好处在于:节省人力、物力;而坏处在于:当公用的接地线出现断路时,如果接地系统中有一台设备漏电,就会引起其它设备的外壳上均出现电压,对人员安全造成威胁。
备的接地端子都引出一根接地线,然后将这若干条线同时接到接地装置上。这种接地方式的好处在于:当接地系统中的其中一台设备接地线出现断路时,不会造成其它设备外壳出现电压,对保障人身安全有好处。而这种接地方式的不完美之处在于:如果是电子设备或其它对高频干扰高度敏感的电气设备,来自于其它设备的高频干扰(例如变频器、中频炉等晶闸管变流器件)将会从共地点串入,造成设备工作不正常。
多分支单点接地:也就是第3种接地方式。接地方法:将每个设备的接地端子单独接到接地装置上。接地方法和第2种接地的区别在于:设备具有单独的接地体(或者变通一下:直接接到离接地体最近的接地装置上(或者接地源处),每个设备在电气接地回路上的距离是比较远的(例如超过50米))。这有效的避免了设备之间的相互电磁干扰。但这种接地方式费时、费力而且单独接地源不一定好取。
在平常施工中,实际上PLC的接地方式一般采用第2种接地方式,至于电磁干扰方面:如果柜内有多个大功率的变频器,可以在PLC电源的前端加装一个单相电源滤波器就可以了。
一般设计时在变频器附近的PLC前端都加装了电源滤波器。
这样处理以后,和防雷方面也就没有什么冲突了。
那直流和交流的接地问题怎么处理是分开好些还是接在同一点,在有数字地和模拟地是否可以是同一点,记得再学校时老师好象说要分开的。
对于受干扰影响不大的直流和交流设备,可以接在一起——即使直流和交流电路因为某种原因连通了,因为他们不是同一个回路(接地可不是回路中的一部分),也不会造成设备损坏。曾有人将AC220V的电源与DC24V回路连上了,但设备工作仍然正常。
数字地和模拟地建议分开(除非你的低压电气设备电源电压只有几十伏),因为数字电路属于正负5V、12V、24V级别的,很容易受干扰,而且一旦外部异常电压一旦串入将很大可能性的造成设备损坏。
[编程技巧]C语言的学法
(一)
很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个教师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是C语言。经过这些年的开发,我深深的体会到C语言对于一个程序设计人员多么的重要,如果不懂C语言,你想写底层程序这几乎听起来很可笑,不懂C语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么C语言如此重要呢?
第一:C语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用C语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。
第二:C语言能够让你深入系统底层,你知道的操作系统,哪一个不是C语言写的?所有的windows,Unix,Linux,Mac,os/2,没有一个里外的,如果你不懂C语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。
第三:很多新型的语言都是衍生自C语言,C++,Java,C#,J#,perl...哪个不是呢?掌握了C语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了C语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考C语言,你想加入it行业,那么就一定要掌握好C语言。
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书。
| 将C程序转换成汇编程序 |
第1步:新建一个工程,添加C文件,编译通过
第2步:右击Keil界面中Project Workspace里的C文件名,选择‘Option for…’
第3步:点击‘Generate Assembler SRC File’‘Assemble SRC File’两个三态复选框使它们呈高亮并勾选,点击确定
第4步:将KEIL安装目录下C51/LIB/C51S.LIB(如果是SMALL模式)文件复制到工程目录下
第5步:添加库文件C51S.LIB文件到工程,即右击‘Source Group 1’,选择‘Add Files to Group …’,在工程目录下选择C51S.LIB,点击打开
(因为有了第3步中的操作,如果在这里不添加库文件,则编译生成的HEX文件不能被单片机正确执行,同时编译时会出现一个警告:
WARNING L1:UNRESOLVED EXTERNAL SYMBOL
SYMBOL: ?C_STARTUP
无法识别?C_STARTUP这个标号,这个标号是在库文件中定义
)
第6步:打开工程目录,可以看到新生成一个扩展名为.SRC的文件,将其扩展名改成.A51
第7步:添加这个.A51文件到工程(这时候工程就包含C51S.LIB库文件,不然编译会产生第5步中说明的警告,且生成的HEX文件不能被单片机正确运行)
| 第8步:重新编译,生成HEX文件,加载到单片机中,可以发现与C语言运行的现象是一致的 |
| RS232通信接口 |
| [ 2010-4-16 7:32:00 | By: cerbcm ] |
(1) 目前较为常用的串口是9针串口(DB9。通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口;若距离较远,需附加调制解调器(MODEM)。
(2) RS232C串口通信接线方法(三线制)
接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接
(3) DB9接口三线引脚定义
2 ---- RXD 接收数据
3 ---- TXD 发送数据
5 ---- GND 信号地
(4) 串行通信方式
1) 单工:信息只能单向传送
2) 半双工:信息可双向传送但不能同时进行
3) 全双工:信息可同时进行双向传送
(5) RS232逻辑电平
逻辑0电平规定为+5 ~ +15V之间;逻辑1是电平为-5 ~ -15V之间,因此在与单片机进行通信时需要进行电平转换
(6) RS232串行通信接口电路设计
(7) 51单片机串行通信接口软件设计
1) 两个重要指标:可靠性和速度,可靠性是第一位。
2) 与串口通信相关的几个寄存器和控制位
TMOD:可以用它来设置定时器工作方式(如果在MCU中使用的是定时器来产生波特率,就需要对这个寄存器进行设置,通常设为0x20,即设置定时器1为8位自动重装定时器,即工作方式1)
TH1和TL1:定时器1初始值(可通过波特率计算软件获得)
TR1:开启定时器1
SCON:串口控制寄存器,通常设为0x50,即10位异步传输,由定时器1产生波特率,无奇偶校验位,允许接收
PCON:这个寄存器主要用到它的最高位SMON,当最高位设为1时,原波特率加倍
ES:串口中断使能位
EA:全局中断使能位
3) 波特率计算方法(使用一个名为“51波特率初值计算.exe”的小软件)
第1步:选择定时器工作方式(方式2)
第2步:输入晶振值(11.0592)
第3步:选择波特率(9600)
第4步:设置SMOD值(0)
第5步:点击确定
第6步:将软件上显示值赋给TH1和TL1
4) 串口初始化程序
void Initial_RS232(unsigned char rate)
{ //默认晶振值为11.0592MHz
unsigned char Reload1;
switch(rate) //根据拨码器设置波特率
{
case 0:
Reload1 = 0xE8; //2400bps
break;
case 1:
Reload1 = 0xF4; //4800bps
break;
case 2:
Reload1 = 0xFA; //9600bps
break;
case 3:
Reload1 = 0xFD; //19200bps
break;
default:
Reload1 = 0x00;
break;
}
PCON = PCON|0x80; //SMOD = 1 ;波特率加倍
TMOD = 0x20; //0011,00010设置定时器1为8位自动重装计数器
SCON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位
TH1 = Reload1; //设置定时器1自动重装数
TL1 = Reload1;
TR1 = 1; //开定时器1
ES = 1; //允许串口中断
EA = 1; //开总中断
}
5) 串口发送程序
void Send_RS232(unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
}
6) 串口接收程序
void Receive_RS232(void) interrupt 4
{
unsigned char temp= 0;
ES = 0;
if(RI==1)
{
RI = 0;
temp = SBUF;
}
ES = 1;
| } |
| 我的工作总结(20100329) |
| [ 2010-3-29 9:08:00 | By: cerbcm ] |
2,嵌入式学习一个很重要的方法是实践。
3,编程的学习方法:写程序、读程序、运行程序。
4,时刻进行小结,记录工作心得及还没有解决的问题和新出现的问题。
5,如何学习FPGA:(1)选择并熟练掌握一门硬件描述语言;(2)在一个开发平台上不断的进行实验;(3)入门之后需要巩固并升华所学的技术。
6,工作中修改了一些文件,应加以备份,记录最新更新的时间、更新的内容、更新的目地等。
7,工作中的种种思路应即时与上司沟通,听取他的建议,对自己的方案进行修改。
8,学会将你学到的知识与别人分享,如果能将自己学到的东西既通俗又严谨的给别人讲清楚,自己会对这些知识有了更深层次的理解。
9,培训、看教学视频等,应带着问题去进行,这样才能把握重点,同时,别人的经验之谈对你才能有所启发。
| 10,英语确实很重要。 |