发布于 2011-10-25 14:09:45
5楼
先生:在PLC编程前我们有许多工作要做,并不要急于去编程,应该首先去理解工艺,然后仔细规划和设计程序!最后才是编程。比如:
1、根据工艺流程和各设备工作原理,设计好电气控制原理图;
2、根据电气控制原理图与PLC的接口,分配好PLC的I/O点的地址,最好是连续分配,并统计I/O点数;
3、根据分配好的I/O点地址,把它们按照次序写到Excel表里面,并做好与之对应的符号;
4、根据工艺的特点,可以人为地将生产工艺分成若干个段,在程序中就是若干个子程序,在子程序中调用用户开发好的FC、FB,或者SFC、SFB;(可以为各类电机、各类阀、各类控制柜、.........开发比较通用的适合绝大多数设备的FC、FB,如果能同时做好与上位的接口哪就更好了;当然模拟量的处理,用户也可以开发一个功能较全FC,比如带有滤波、线性量程转换、具有HHA、HA、LA、LLA报警设定和输出功能等)
5、根据点数,选用合适的CPU,并进行硬件组态和网络组态;
6、主程序OB1的设计:在主程序中,尽量将OB1设计的简洁,主要是调用子程序为主,而且尽量设计的有规律最好具有模块化、结构化和可扩展性。可以将FC1~FC300、FB1~FB300的编号留给自己开发的程序命名之用,或者留给调用库里面FC、FB命名之用;可以把自己开发的FC、FB放在自己建的S7库里面,为以后项目调用提供方便。例如:
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬OB1内的用户程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★PLC与PLC或者和从站设备的通信程序★★★
CALL FC 301 //接受来自PLC2的数据 shared db DB301
CALL FC 302 //发送数据到PLC2 shared db DB302
CALL FC 303 //接受来自PLC3的数据 shared db DB303
CALL FC 304 //发送数据到PLC3 shared db DB304
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬XX生产线PLC的控制程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★各工艺段的控制程序★★★
CALL FC 311 //工艺段1的控制程序 shared db DB311
CALL FC 312 //工艺段2的控制程序 shared db DB312
CALL FC 313 //工艺段3的控制程序 shared db DB313
CALL FC 314 //工艺段4的控制程序 shared db DB314
CALL FC 315 //工艺段5的控制程序 shared db DB315
CALL FC 316 //工艺段6的控制程序 shared db DB316
CALL FC 317 //工艺段7的控制程序 shared db DB317
CALL FC 318 //工艺段8的控制程序 shared db DB318
CALL FC 319 //工艺段9的控制程序 shared db DB319
。
。
。
。
。
。
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬可放入OB3X内执行╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★★各模拟量处理程序★★★
CALL FC 361 //模拟量地址从PIW512~PIW575(每个群组32个模拟量)shared db DB361
CALL FC 362 //模拟量地址从PIW576~PIW639(每个群组32个模拟量)shared db DB362
CALL FC 363 //模拟量地址从PIW640~PIW703(每个群组32个模拟量)shared db DB363
CALL FC 364 //模拟量地址从PIW704~PIW767(每个群组32个模拟量)shared db DB364
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬可放入OB3X内执行╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★步进型电动执行器PID控制程序★★★
CALL FC 381 //每个群组控制16个回路STEP型电动执行机构 shared db DB381
// ★★★连续PID控制程序★★★
CALL FC 385 //每个群组控制16个回路连续量的PID控制器 shared db DB385
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
// ★★★评估CPU执行PLC程序的时间以及PID程序初始化标志位复位★★★
L #OB1_PREV_CYCLE //Cycle time of previous OB1 scan (milliseconds)
T DB300.DBW 0
L #OB1_MIN_CYCLE //Minimum cycle time of OB1 (milliseconds)
T DB300.DBW 2
L #OB1_MAX_CYCLE //Maximum cycle time of OB1 (milliseconds)
T DB300.DBW 4
A M 17.0
R M 17.0 //OB1第一个循环结束复位初始化标志位,用作PID控制器初始化
BE
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
7、主程序的结构有了,可以开始批量编程了。首先导入符号表,(如果做的更仔细一点,可以预先分配一下M、T、C给需要的设备,并在Excel里面编辑好它们的符号,也一并导入符号表)。在用有规律的符号编程的时候非常方便,甚至不需要知道他们的绝对地址,只要知道其符号含义可直接使用。在编好一个子程序时,有时候可以直接拷贝已经编好的子程序,稍加修改就可!这样程序也就不会乱了,因为每台设备你都给它们建造好住房了!当然也要养成做好程序注释的习惯,因为还要让其它人看懂你编写的程序!这样有序编程,应该就相对简单了,而且对以后程序的调试和维护也非常有利,出错的几率也大大降低了!(仅供参考)
呵呵,以上只是个人在平时工作中的一些体会,一家之言。希望有更多的朋友发表自己的编程经验;也希望有更多朋友补充!
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”