线下实训
HOME
线下实训
正文内容
plc编程寄存int 西门子PLC编程的小技巧
发布时间 : 2025-02-25
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子PLC编程的小技巧

为了PLC程序可读性强,短期内可以读懂并且能够修改,在PLC工作组内部需要统一我们的编程标准,以便适应将来工程人员调动后,原来的程序能够被后来的人在短期内读懂,现统一标准如下:

一、程序结构

1、程序结构统一

OB1:主程序;

OB100:初始化程序(无需主程序调用);

OB35:100ms(可修改)中断(无需主程序调用),可以调用PID模块;

OB80、OB82、OB85、OB86、OB87、OB121、OB122:故障诊断模块(无需主程序调用、无需编程);

FC1:系统模式;

FC2:输入处理;

FC3:输出处理;

FC4:运行处理;

FC5:停止处理;

FC6:手自动切换;

FC7:

。。。

。。。

FC100:之后用来建立一些可以循环调用的子程序;

FC105:系统自带,模拟量输入子程序(可以循环调用);

FC106:系统自带,模拟量输出子程序(可以循环调用);

modbus通讯(CP341):FB7:P_RCV_RK,FB8:P_SND_RK;

通讯CP340:FB2:P_RCV,FB3:P_SND;

一般PID:用FB41;

温、湿度PID:用FB58;

如果程序块与系统块重复,请避让。

2、数据块

DB1:AI数据,类型:REAL,与上位机接口;

DB2:AO数据,类型:REAL,与上位机接口;

DB3:DI数据,类型:BOOL,与上位机接口;

DB4:DO数据,类型:BOOL,与上位机接口;

DB5:设备运行时间及流量累计,类型:REAL,与上位机接口;

DB6:报警消息,类型:BOOL,与上位机接口;

DB7:类型:REAL,中间寄存器;

DB8:类型:INT,中间寄存器;

DB9:类型:WORD,中间寄存器;

DB10:类型:BOOL,中间寄存器;

DB11:之后用作与设备通讯用,例如:MODBUS通讯等;

DB100:之后用作调用FB块时的背景数据块;

M区:也作为中间变量。

3、DP从站故障诊断

DP从站必须做故障诊断,故障报警,用FB125即可。

二、控制模式

1、系统设置远程/本地/手动按钮

1.1、远程:只能通过上位机对系统进行自动启/停控制,单台设备就地控制优先,在程控时,可以通过上位机对设备进行软手操/自动切换,软手操启/停;1.2、本地:只能通过触摸屏对系统进行自动启/停控制,单台设备就地控制优先,在程控时,可以通过触摸屏对设备进行软手操/自动切换,软手操启/停;1.3、手动:手动控制时,上位机/触摸屏失效,只能通过手动控制设备的启/停。

2、单台设备控制

单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。

3、单台设备

(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定;

三、编程技巧

1、程序块尽量细化,方便阅读,将同一类型的设备控制放在一个程序块中;

2、如遇特殊情况下采用语言编程,多数情况下请使用梯形图编程,方便别人阅读;

3、对于经常调用的子程序,可以做成子模块,频繁调用,例如:求几个数平均值或求几个数的最大值;

4、程序要有注释,变量及中间变量必须有描述,方便别人阅读或以后查阅;

5、定期做程序备份,最好以工程名称+系统名称+当天日期;

6、程序加密,防止别人窃取。

西门子PLC按照控制规模来分类

可以分为大型机中型机小型机

小型机: 小型机的控制点一般在256点之内,适合于单机控制或小型系统的控制。

西门子小型机有S7-200:处理速度0.8~1.2ms ;存贮器2k ;数字量248点;模拟量35路 。

中型机: 中型机的控制点一般不大于2048点,可用于对设备进行直接控制,还可以对多个下一级的可编程序控制器进行监控,它适合中型或大型控制系统。

西门子中型机有S7-300:处理速度0.8~1.2ms ;存贮器2k ;数字量1024点;模拟量128路 ;网络PROFIBUS;工业以太网;MPI。

大型机: 大型机的控制点一般大于2048点,不仅能完成较复杂的算术运。

探讨PLC变量的数据类型及数值范围

PLC是工业控制不可缺少的自动化核心设备,要想学好PLC就必须要先了解数据类型。数据类型是所有自动化软件的编程基础,只有熟练掌握,才能随心所欲的驾驭。下面我们就以西门子S7-200为例,详细讲述这些常用的数据类型。

siemens PLC

1、基本数据类型

基本数据类型由以下几种:

1.1、位(bit) 

定义为BOOL(布尔型),只有两个值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。

1.2、字节(Byte)

定义一个字节(Byte)等于8 位(Bit),其中0位为最低位,7 位为最高位。

如:IB0(包括 I0.0~I0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。

用十六进制表示的范围为:00~FF,用十进制表示的范围为 0~255。

字节

1.3、字(Word) 

定义相邻的两字节(Byte)组成一个字(Word),表示一个无符号整数,所以一个字为16位。

如:IW0 由 IB0 和 IB1 组成的,其中I是输入映象寄存器,W表示字,0是字的起始字节。特别注意的是:起始字节必须是偶数。

字的范围为十六进制的 0000~FFFF,十进制的 0~65536。

在编程时,如果已经使用 IW0,如果想再用 IB0或 IB1,就要特别慎重,避免重复定义。

1.4、双字(Double Word)

相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为 32 位。

如:MD100 是由 MW100 和 MW102 组成的,其中M是位存储区,D表示双字,100是双字的起始字节。特别注意的是:双字的起始字节也必须是偶数。

双字的范围为十六进制的 0000~FFFFFFFF(即十进制的 0~4294967295)。

在编程时如果已经使用了MD100,如果再用 MW100或MW102,就要特别慎重,避免重复定义。

双字

特别注意:以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。

1.5、16位整数(INT,Integer)

整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。

正整数

1.6、32 位整数(DINT,Double Integer)

32 位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。

负整数

1.7、浮点数(R,Real)

浮点数为 32 位,可以用来表示小数。浮点数可以为:1.m×2e。

单精度浮点数

2、复合数据类型

用户通过复合基本数据类型而生成就是复合数据类型。

复合数据类型包括以下几种:

2.1、数组(ARRAY)

将一组同一类型的数据组合在一起组成一个单位就是数组。

2.2、结构(STRUCT)

将一组同不同类型的数据组合在一起组成一个单位就是结构。

2.3、字符串(STRING)

字符串是由最多 254 个字符组成的一维数组。

2.4、日期和时间(DATE-AND-TIME)

用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用 8 个字节,BCD 编码。

星期天代码为1,星期一~星期六代码分别是 2~7。

如:DT#2004_07_15_12:30:15.200 为 2004 年 7 月 15 日 12 时 30 分 15.2 秒。

2.5、用户定义的数据类型(UDT,User-Defined Data Type)

由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。

可以在数据块DB和变量声明表中定义复合数据类型。

3、数据类型汇总表格

4、举例说明

对于有符号的整数来说,最高位用作符号位,余下的位才是数值部分。

下面以有符号整数INT来举例说明其数值范围为什么是-32768-32767?

最高位是符号位,0为"+"、1为"- ,去掉一个符号位后,余下的数据只有15位。

15位二进制1对应的整数最大正整数为2^15-1=32767,最大值为+32767,对应二进制:0111 1111 1111 1111。即十进制范围:0~32767;

15位二进制1对应的整数最大负整数为-2^15=-32768,最大值为-32768,对应二进制:1111 1111 1111 1111。即十进制范围:-32768~-1;

西门子PLC

其实,数据类型简单也复杂,尤其是自定义数据类型。看得懂,并不代表你能在编程过程中能正确使用。只有自己动手编程,对不同的数据类型进行定义和使用,才能有深入地理解和掌握。当你对数据类型充分理解后,就可以学习数据的寻址。坚持不懈的学习和实际编程,才会有可能成为变成专家。

相关问答

单片机中INTT是什么意思?

在单片机中,INTT通常是指中断标志位(InterruptFlag)。中断标志位是一种用于标记中断事件是否发生的标志,它通常是由硬件或软件设置和清除的。当中断事...在...

plc中寄存器地址多少位?

8位寄存器CodeSegmentAssumeCS:Code,DS:CodeCNDW?SUMDw?Start:pushcspopds;使数据段与代码段在同一个段xor...

int函数的具体含义?

在计算机科学中,int()函数是整数数据类型的数据,是表示某种数学整数范围的数据类型。积分数据类型可以具有不同的大小,并且可以允许或不允许包含负值。...

寄存器变量和自动变量的区别?

在C语言中,可以使用寄存器变量来优化程序的性能。将一个常用的变量声明为寄存器变量,如:registerinta;如果可能的话,编译器就会为它分配一个单独的寄存器,...

浅析C语言的一个关键字——register-OSCHINA-中文开源技...

应将其保存在CPU的寄存器中,以加快其存储速度。例如下面的内存块拷贝代码...registerinti;while(i--)*d++=*s++;}#endif2、但是使用...

plc中数据类型如何改成长整数?

将浮点数转化成整数用INT指令,将整数转成浮点数用FLT指令,指令不难理解,值得注意的是,一个16位的整数转化成浮点数后要占32位的空间。一般PLC用作浮点数运算...

c语言编写水仙花数-懂得

参考代码1653:#includeintfun(intn){//判方法:先弄懂什么是水仙2113花数:5261:水仙花数4102是指一个n(>=3)位数字的数,它等于每个数字的n次幂之....

c语言中如何定义位变量

个"标准"宏MIN,这个宏输入两个参数并返回较小的一个:错误做法:#defineMIN(A,B)(A<=B?A:B)正确做法:#define...

求助:怎么用C语言去读硬件寄存器的值?

硬件寄存器一般都有相应的访问地址,就象随机存储器一样,找到这个地址,用指针访问这个地址的单元,就可以进行读写了。比如:假定某寄存器地址为800100H,寄存...

x+y;intk1=m-n;intk2=m+n;若编译器编译时将8】作业帮

[回答]不对.计算机的处理过程是:让减数经过一个反向器并加1,也就是取反,然后再送入ALU相加所以是这样的10000110+00001010不对.计算机的处理过程是:让...

 闫永喜  区块链工程 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部