当前位置:首页 » 编程软件 » 单片机模块化编程

单片机模块化编程

发布时间: 2023-07-26 18:03:38

‘壹’ plc编程高级思路

一、基本的硬件知识编程之前,需要了解一些基本的硬件知识,最好从硬件的选型和画图入手,等把输入输出的类型,模拟量的选型等搞清楚之后,再开始编程会简单点。熟悉基本的硬件电路,你就会发现原来梯形图和这些硬件电路是可以很好对应起来的。

二、了解PLC编程的方式线性编程、模块化编程、结构化编程。对于西门子plc,以结构化编程为主,但可以使用线性编程和模块化编程,对于结构化编程,需要有一定的结构化编程思想。

?

如果你想比较快学习西门子PLC,建议首先学习线性编程或模块化编程。在学习过程中慢慢体会结构化编程方式。

三、实践多学多练习,有人指导或昌虚进修学习会比自己学习相对快一些,但不是绝对。首先,买本关于PLC的书,然后手上有一个PLC,根据书上的例子,自己琢磨个小项目,实现一个功能,自己独立做个PLC项目,西门子200系列的小PLC很适合新手学习,比较容易上手。

现在的PLC软件也设计的非常好,如果有硬件配合更好,没有的话安装一个软件,安装一个模拟器,基本的操作熟悉起来,然后观察PLC的输入输出变化情况。在程序没有充分验证之前,建议先断开负载,等所有的IO,模拟量测试完成后,再带负载运行。

四、工艺PLC编程的重点是模拟原有的作业流程,将控制过程由程序运行来完成。所以核心内容就是对工艺的程序描述。因此需要熟练掌握PLC程序语言和基本的功能实现。PLc语言分梯形图和语句及功能图三种。

常用的是梯形图,这个适合用于基本逻辑描述,语句表适合对数据加工用,相对难理解些。功能图的适合步进类型的状态功能描述,用的不多。自学的话需要安装相应的软件,各个厂家的有很多不同点,但是都类似。

设备怎么动作,需要读取什么信息,如何控制现场的设备,如何实现最好的控制效果,要密切了解现场的工艺。

五、基本的自动化相关知识1、过程仪表的硬件知识,包括传感器、变送器(二次仪表)和PLC本身,这是构建控制系统的基础;比如两线制,四线制,电流,电压,PT100,对应的物理范围,真空度换算等。

?

2、过程控制理论,包括各种控制模型的原理和应用,其中最重要的是二位调节和PID调节模型。PID调节是目前用得最广泛的过程控制手段,且变化多端。需要弄清楚原理,知道如何调节参数即可。

六、良好的编程习惯1、变量命名,功能块命名,定时器命名,最好遵循一定的原则,可读性好;

2、熟悉软件的基本命令的使用;

3、编写公共的程序块,比如阀门,电机的公用块等;

4、合理分配主程序、子程序和定时中断程序等;

5、合理分配数据块,定时器,计数器,存储器变量等,注意变量位置不能重叠。

七、软件内部机理每个软件都各有不同,但是基本的东西应该备迅闷都包括的:

1、了解指令的累加器,状态字等内容。

?

2、指令的组成以及各部分的含义,无论是高级语言的ifthenelse,还是PLC的AANJNB,指令的组成部分以及表示的含义需要搞仿弯清楚;

3、了解几种寻址方式。单片机非常讲究这个,对于PLC来说,多了解对于复杂的编程有帮助。

4、了解数据格式,注意高低位分布,这个太重要了,尤其是和第三方通讯的时候。

5、了解几个常用的寄存器和存储区域。比如DB,M,I,Q等。


‘贰’ c++是哪个公司出的

C++,这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。

美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 14882-1998。C++是具有国际标准的编程语言,通常称作 ANSI/ISO C++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新将是在2009年,目前我们一般称该标准C++0x。遗憾的是,由于C++语言过于复杂,以及他经历了长年的演变,直到现在(2004年)只有少数几个编译器完全符合这个标准(这么说也是不完全正确的,事实上,至今为止没有任何一款编译器完全支持ISO C++)。

另外,就目前学习C++而言,可以认为他是一门独立的语言;他并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。

‘叁’ 在51单片机中,定时器0中断用模块化方法编程

#include<reg51.h>
#defineu16unsignedint
#defineu8unsignedchar


codeu16sj_tab[]={800,400,200,100};//每个档位对应的时间
u8setsj=0;//档位
u16jsflag;

#defineLEDP2
codeu8led_tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//LED亮的方式
u8ledflag=0;

/****************************************/
voidinit() //初始化函数
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;

}

/*********按键扫描******/
sbitk=P3^2;
u8key(){
staticu8ms;
if(k==0){//检测到0
if(ms<10)ms++;
if(ms==5)return0;//连续5次扫描都为0,
}
elsems=0;
return1;
}

/***********************************/
u8count=0; //计数
voidmain()//主函数
{
init();//系统初始化
jsflag=sj_tab[setsj];//初始加载时间
TR0=1;//定时器开始计时
while(1){
if(key()==0){//按键按下
if(++setsj>=4)setsj=0;//档位+1,加到最大后归0
}
LED=led_tab[ledflag];
}

}


/****************************/
voidtimer0()interrupt1//1ms定时器
{
TH0=(65536-1000)/256;//重载初值
TL0=(65536-1000)%256;
if(jsflag>0)jsflag--;//1ms减1
if(jsflag==0){//减到0
jsflag=sj_tab[setsj];//重载时间
if(++ledflag>=8)ledflag=0;
}

}

‘肆’ 单片机c语言模块化编程,如何定义全局变量。

1.使用关键字extern修饰申明。
例如:
主文件中定义 int g_ival = 0;
别的文件里面用 extern int g_ival;申明一下就可以用了。

2.模块化编程是指将一个庞大的程序划分为若干个功能独立的模块,对各个模块进行独立开发,然后再将这些模块统一合并为一个完整的程序。这是C语言面向过程的编程方法,可以缩短开发周期,提高程序的可读性和可维护性。

3.在单片机程序里,程序比较小或者功能比较简单的时候,我们不需要采用模块化编程,但是,当程序功能复杂、涉及的资源较多的时候,模块化编程就能体现它的优越性了。如前面我们写过的HT1380驱动程序、独立按键扫描程序和12864程序,每一个程序都是只用一个源文件编写就能完成,但是,当您制作一个12864液晶日历的时候,需要用到HT1380驱动程序、独立按键扫描程序和12864显示程序,如果把这三个程序全部集中在一个源文件里,将导致主体程序臃肿且杂乱,这样做并非不可取,只是降低了程序可读性、可维护性和代码的重用率。如果把这三个程序当做三个独立的模块放到你的主体工程进行模块化编程,效果就不一样了。实际上,模块化编程就是模块合并的过程,就是建立每个模块的头文件和源文件并将其加入到主体程序的过程。主体程序调用模块的函数是通过包含模块的头文件来实现,模块的头文件和源文件是模块密不可分的两个部分,缺一不可。所以,模块化编程必须提供每个模块的头文件和源文件。

热点内容
matlab稀疏矩阵存储 发布:2025-02-06 03:07:54 浏览:838
国际服2b2t服务器地址 发布:2025-02-06 03:06:28 浏览:390
c语言输出b 发布:2025-02-06 03:06:27 浏览:31
普通火车wifi密码多少 发布:2025-02-06 03:04:20 浏览:436
可编程监控 发布:2025-02-06 03:03:33 浏览:645
c语言取随机数 发布:2025-02-06 02:46:57 浏览:863
uc缓存的视频卡住 发布:2025-02-06 02:17:05 浏览:144
解压同学介绍 发布:2025-02-06 02:13:10 浏览:776
icsftp 发布:2025-02-06 02:12:59 浏览:325
ftp跨域上传文件 发布:2025-02-06 02:09:22 浏览:822