PLC在工业控制领域被广泛应用,他就像是机器的大脑一样,控制着机器有序的工作。如何使得PLC这个大脑有序的工作,完全取决于PLC编程人员的能力。往往一个好的编程程序习惯可以让事情事半功倍。用正确的逻辑思维和方法去写程序,一方面可以减少出错,另一方面就是方便检查程序里出现的bug。下面由西安达泰电子的PLC无线通讯专家团队来为大家盘点一下,西门子PLC的一些编程小窍门和好的习惯:
1、程序结构
一个完整的程序可分为几个部分:
【初始化程序】:一般是上电时调用一次,用来初始化设备,简单化的初始化程序需要在初始化的时候复位整个工艺设备到零位。复杂化的初始化程序需要在这里调用设备之前的执行信息,即延续上次停机时的执行过程。我们一般使用SM0.0(上电时保持一个周期的ON)来使能初始化程序。
【主程序】:主程序这里是用来循环执行的,确保设备的正常工作。
【子程序】:子程序一般为设备执行的不同工艺(工序)。供主程序调用。一些重复多次使用的代码可以编写为子程来调用。
【内存分配】:内存分配一般是用来规划PLC的内部寄存器的区域和适用范围,方便编程和调取,同时方便上位机的通讯使用。
2、关于内存分配技巧:
一般在编程时我们会将内存分配为不同的区域段,例如:
【VW0-VW99】:通讯动态调用区域,写一些中建变量等。
【VW100-VW199】:采集结果保存区域。温度、压力等。
【VW200-VW299】:通讯区域,部分为上位机读取区域,部分为写入区域或者可读写区域。
……
【VW2000-VW3000】:库存储区,用于加载库文件的存储区域。
*说明:良好的内存规划习惯会使得编程特别便捷和明了。同时也提高了程序的可读性。配合自定义的变量名使用会使得整个程序的二次读写性更好。
3、变量名规划:
良好的变量名规划可以高效的完成程序的编写,例如:
VD100:WD1-f(浮点型温度值1)
VD104:WD2-f(浮点型温度值2)
VB108:ZT1-b(字节型状态值1)
VW109:ZS1-w(字型转速值1)
其他物理量类似。用户也可使用英文名缩写等……
在规划变量时最好的方式是将相同类型的变量连续规划。再者就是最好是以十为单位进行区域段划分这样调用时比较清晰明了。例如:
【VD100-VD120】:WD1-f……WD5-f(多余部分可留作备用,一般都会预留备用点,一备程序后期扩展使用)
【VB130-VB139】:ZT1-b……ZT10-b
4、关于西门子200系列PLC的内存关系图
位 | 字节 | 字 | 双字 |
1位 | 8位 | 16位 | 32位 |
VB0.0 | VB0 | VW0 | VD0 |
VB0.1 | |||
VB0.2 | |||
VB0.3 | |||
VB0.4 | |||
VB0.5 | |||
VB0.6 | |||
VB0.7 | |||
VB1.0 | VB1 | ||
VB1.1 | |||
VB1.2 | |||
VB1.3 | |||
VB1.4 | |||
VB1.5 | |||
VB1.6 | |||
VB1.7 | |||
VB2.0 | VB2 | VW2 | |
VB2.1 | |||
VB2.2 | |||
VB2.3 | |||
VB2.4 | |||
VB2.5 | |||
VB2.6 | |||
VB2.7 | |||
VB3.0 | VB3 | ||
VB3.1 | |||
VB3.2 | |||
VB3.3 | |||
VB3.4 | |||
VB3.5 | |||
VB3.6 | |||
VB3.7 |
更多关于PLC的知识,请持续关注微信公众号“PLC无线通讯方案”
本文出处 http://www.dataie.com/cases/detail/40/354.html
楼主最近还看过