张家界西门子300plc一级代理商
张家界西门子300plc一级代理商简介:
公司座右铭:真心的对待每一份报价,真诚的对待每一位客户。
公司带来销售的产品全部由西门子直接提供,所有产品保证原装,每个产品都可以到西门子办事处去检测。
我们出售的产品按照西门子质保进行保修,(保修期为一年)《选择庆惜,是您***明智的决定》。
手工打字,真心诚意的只求您给一份报价!愿意用***低的价格来跟您长期合作
基于Siemens S7-300/400 PLC的FIFO功能实现
摘要:本文详细介绍了基于西门子S7-300/400 PLC中的FIFO功能,并利用西门子S7系列PLC编程软件Simatic STEP7开发实现多字节的FIFO功能。
Abstract:This er introduces FIFO function
关键词 西门子 S7-300/400 PLC ;FIFO ;Simatic STEP7
Keywords:Siemens S7-300/400 PLC ;FIFO ;Simatic STEP7
主要内容:
1、前言,提出为什么要介绍Siemens PLC中的FIFO功能
2、首先介绍Siemens 公司提供的功能块,FC84与FC85,并分别举例
3、说明在设备间数据通讯,多余1个字节的数据需要同时进行FIFO Buffer,然后在下一工序中弹出来。介绍多字节FIFO功能的实现
4、Siemens PLC编程开发软件Simatic STEP7的介绍,编程开发同时20字节FIFO的程序,相关数据块结构的说明,在程序中的调用FIFO功能块。此外可以通过Simatic Simulation 进行模拟确认。
5、结。
一、前言
FIFO功能即First Input First Output先出,在很多情况下要用到此功能。以前此技术主要在计算机高级语言开发和数据结构设计中应用,但随着PLC技术的日益突飞猛进,需要通过PLC进行数据传送、缓存存储的事件越来越多,尤其是在数据缓存过程中,对FIFO功能使用场合越来越多。西门子S7-300/400 PLC是德国西门子公司的中型、大型PLC,也是当今世界上工控行业的主流产品。在Siemens S7系列PLC开发软件Simatic STEP7工具中,Siemens公司提供了两个功能FC84 ATT和FC85 FIFO,通过这两个FC功能完成对FIFO功能数据的写入和导出,但是每次只能允许一字,也就两字节长的数据。为了实现每次多字节的FIFO功能,需要用户自己开发相应的功能块FB来实现,在本文中就介绍了实现每次20字节FIFO功能FB200功能块的代码,以及实际应用举例。
二、Siemens FC84 ATT和FC85 FIFO功能的介绍
1、FC84 ATT
1.1、 FC 84 ATT功能和构成介绍
FC 84 ATT是实现增加数据到FIFO功能的数据存储区中,通过每次执行此指令实现把一字的数据增加到FIFO功能数据存储区中,FIFO功能存储区中以字为单位,具体组成如下:
l 存储区表中字为FIFO存储区允许的大数据存储个数,即多可以存储个字的数据。
l 存储区表中第二字为FIFO存储区当前已经存储数据的个数,即已经存储了个字的数据。
l 存储区表中从第三字开始为FIFO存储区实际存储的数据。
1.2、 FC 84 ATT功能参数说明
通过Simatic STEP7进行程序开发时,调用FC84 ATT功能,出现如下图:
从图2-1中可以看到,FC84 ATT共有四个参数,分别为EN、DATA、TABLE和ENO,在四门子资料中对其描述如下表2-1:
|
参数 |
声明 |
数据类型 |
内存区域 |
功能描述 |
|
EN |
输入 |
布尔 |
I、Q、M、D、L |
使能激活信号 |
|
ENO |
输出 |
布尔 |
I、Q、M、D、L |
使能输出 |
|
DATA |
输入 |
Word |
I、Q、M、D、L、P静态存储区域 |
要增加到FIFO的数据 |
|
TABLE |
输入 |
指针 |
I、Q、M、D、 |
FIFO区域指针 |
表2-1
1.3、举例说明
如果信号M100.0的状态为1(即被激活),FC84 ATT功能被执行。在下面的例子中,增加的数据写到FIFO表中的第五行,FIFO的容量也就是FIFO表中第二行由4变为5。如果FC84 ATT被执行而且没有错误发生,那么使能输出ENO置为1,具体如下:
2、FC85 FIFO
2.1 、FC 85 FIFO功能和构成介绍
FC85 FIFO是完成把FIFO表中的数据按照先出原则,依次读出,以供使用,与FC84 ATT配合使用,完成FIFO的写进与读出功能。通过每次执行此指令实现把一个字的数据从FIFO功能数据存储区中读出,FIFO功能存储区中以字为单位,具体组成如下:
l 存储区表中字为FIFO存储区允许的大数据存储个数,即多可以存储个字的数据。
l 存储区表中第二字为FIFO存储区当前已经存储数据的个数,即已经存储了个字的数据。
l 存储区表中从第三字开始为FIFO存储区实际存储的数据,也是FIFO指针所指向的数据。
2.2、FC 85 FIFO功能参数说明
通过Simatic STEP7进行程序开发时,调用FC85 FIFO功能,出现如下图:
图2-2
从图2-1中可以看到,FC85FIFO共有四个参数,分别为EN、ENO、TABLE和RET_VAL,在西门子资料中对其描述如下表2-2:
|
参数 |
声明 |
数据类型 |
内存区域 |
功能描述 |
|
EN |
输入 |
布尔 |
I、Q、M、D、L |
使能激活信号 |
|
ENO |
输出 |
布尔 |
I、Q、M、D、L |
使能输出 |
|
TABLE |
输入 |
指针 |
I、Q、M、D、 |
FIFO区域指针 |
|
RET_VAL |
输出 |
字 |
I、Q、M、D、L、P |
读出的数据 |
表2-2
2.3、举例说明
如果信号M100.0的状态为1(即被激活),FC85 FIFO功能被执行。在下面的例子中,从FIFO存储区域中读出的数据写到RET_VAL的地址中,FIFO的容量也就是FIFO表中第二行由5变为4。同时整个FIFO中存储的数据依次向上移动一行。如果FC85 FIFO被执行而且没有错误发生,那么使能输出ENO被置为1。
三、多字节FIFO功能的实现
1、 从前面FC84 ATT和FC85 FIFO的说明中可以看出,虽然Siemens提供了针对S7
系列PLC的FIFO功能模块,但是其只能每次写入或读出一个字节的数据,而实际上在很多情况下,每次均是一组数据需要运用FIFO功能来暂时存储起来,那么在这种情形下就不能采用Siemens提供的标准功能FC84和FC85了,需要自己开发一可以实现多字节读出写入功能的FIFO指令。
2、Siemens Simatic STEP7介绍
Siemens Simatic S7 300/400系列PLC是Siemens公司主推的中、大型产品,也是当今世界上的主流产品。针对这两个系列PLC开发软件工件为Simatic STEP7,此软件有多个版本,目前已经发展到V5.4,采用次软件可以实现开发、监控等功能。
3、多字节FIFO的实现
打开Simatic STEP7软件,新建一FB块,如FB200 DB200,然后进入FB100
进行编程,本文中以20字节为例,介绍如何开发实现FIFO功能具体见如下画面:
图3-1
源代码如下:
FUNCTION_BLOCK FB 100
TITLE =
//此功能块用了完成20字节的FIFO功能
AUTHOR : Hylotus
VERSION : 0.1
KNOW_HOW_PROTECT
VAR_INPUT
SOURCE_DB : BLOCK_DB ;
INPUT : BOOL ;
OUTPUT : BOOL ;
SIZE : INT ;
END_VAR
VAR_OUTPUT
DONE_IN : BOOL ;
DONE_OUT : BOOL ;
ERROR : BOOL ;
FULL : BOOL ;
EMPTY : BOOL ;
END_VAR
VAR_IN_OUT
LOCATION : INT ;
END_VAR
VAR
IN_START : BOOL ;
IN_ACTIVE : BOOL ;
OUT_START : BOOL ;
OUT_ACTIVE : BOOL ;
COUNT : INT ;
RET_VAL1 : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
A #INPUT;
AN #IN_ACTIVE;
= #IN_START;
A #INPUT;
= #IN_ACTIVE;
A #OUTPUT;
AN #OUT_ACTIVE;
= #OUT_START;
A #OUTPUT;
= #OUT_ACTIVE;
AN #INPUT;
AN #OUTPUT;
JC END1;
NETWORK
TITLE =OUTPUT FIFO
//20字节的数据从FIFO存储区域中读出
AN #OUTPUT;
O #DONE_OUT;
JC IN_1;
AN #OUT_START;
JC OP_1;
OPN #SOURCE_DB;
L DW#16#0;
T DBD 40;
T DBD 44;
T DBD 48;
T DBD 52;
T DBD 56;
T DBD 60;
T DBD 64;
T DBD 68;
T DBD 72;
T DBD 76;
L #LOCATION;
L 0;
<=I ;
S #EMPTY;
JC EROR;
OPN #SOURCE_DB;
CALL "BLKMOV" (
SRCBLK := P#DBX 80.0 BYTE 40,
RET_VAL := #RET_VAL1,
DSTBLK := P#DBX 40.0 BYTE 40);
L #RET_VAL1;
L 0;
<>I ;
JC EROR;
L 0;
T #COUNT;
OP_1: L #LOCATION;
L 0;
<=I ;
JC EROR;
L #LOCATION;
L #COUNT;
<=I ;
JC OP_3;
L #COUNT;
L 2;
+I ;
ITD ;
L P#40.0;
*D ;
LAR1 ;
OPN #SOURCE_DB;
L DBD [AR1,P#40.0];
T DBD [AR1,P#0.0];
L DBD [AR1,P#44.0];
T DBD [AR1,P#4.0];
L DBD [AR1,P#48.0];
T DBD [AR1,P#8.0];
L DBD [AR1,P#52.0];
T DBD [AR1,P#12.0];
L DBD [AR1,P#56.0];
T DBD [AR1,P#16.0];
L DBD [AR1,P#60.0];
T DBD [AR1,P#20.0];
L DBD [AR1,P#64.0];
T DBD [AR1,P#24.0];
L DBD [AR1,P#68.0];
T DBD [AR1,P#28.0];
L DBD [AR1,P#72.0];
T DBD [AR1,P#32.0];
L DBD [AR1,P#76.0];
T DBD [AR1,P#36.0];
L #COUNT;
L 1;
+I ;
T #COUNT;
L #SIZE;
L -1;
+I ;
L #COUNT;
<=I ;
JC OP_2;
JU END2;
OP_2: L W#16#0;
T DBD [AR1,P#40.0];
T DBD [AR1,P#44.0];
T DBD [AR1,P#48.0];
T DBD [AR1,P#52.0];
T DBD [AR1,P#56.0];
T DBD [AR1,P#60.0];
T DBD [AR1,P#64.0];
T DBD [AR1,P#68.0];
T DBD [AR1,P#72.0];
T DBD [AR1,P#76.0];
OP_3: SET ;
S #DONE_OUT;
L #LOCATION;
L -1;
+I ;
T #LOCATION;
JU END2;
NETWORK
TITLE =INPUT FIFO
//20字节的数据写入FIFO存储区表中
IN_1: AN #IN_START;
JC END2;
L #LOCATION;
L #SIZE;
>=I ;
S #FULL;
JC EROR;
L #LOCATION;
L 2;
+I ;
ITD ;
L P#40.0;
*D ;
LAR1 ;
OPN #SOURCE_DB;
L DBD 0;
T DBD [AR1,P#0.0];
L DBD 4;
T DBD [AR1,P#4.0];
L DBD 8;
T DBD [AR1,P#8.0];
L DBD 12;
T DBD [AR1,P#12.0];
L DBD 16;
T DBD [AR1,P#16.0];
L DBD 20;
T DBD [AR1,P#20.0];
L DBD 24;
T DBD [AR1,P#24.0];
L DBD 28;
T DBD [AR1,P#28.0];
L DBD 32;
T DBD [AR1,P#32.0];
L DBD 36;
T DBD [AR1,P#36.0];
L #LOCATION;
L 1;
+I ;
T #LOCATION;
SET ;
S #DONE_IN;
JU END2;
NETWORK
TITLE =
EROR: SET ;
= #ERROR;
JU END2;
END1: CLR ;
= #DONE_IN;
= #DONE_OUT;
= #ERROR;
= #EMPTY;
= #FULL;
END2: NOP 0;
END_FUNCTION_BLOCK
4、在程序中的调用
上面已经完成了FB100 FIFO功能块的编程开发,下面就是直接调用,设置
相关参数就可以使用此功能了,举例如下:
新建FIFO数据源数据库DB200,结构为
|
Address |
Name |
Type |
Initial value |
Comment |
|
0.0 |
|
STRUCT |
|
|
|
+0.0 |
IN_Buffer |
STRUCT |
|
|
|
+0.0 |
Status_Word |
INT |
0 |
|
|
+2.0 |
Data1 |
INT |
0 |
|
|
+4.0 |
Data2 |
INT |
0 |
|
|
+6.0 |
Data3 |
INT |
0 |
|
|
+8.0 |
Data4 |
INT |
0 |
|
|
+10.0 |
Data5 |
INT |
0 |
|
|
+12.0 |
Data6 |
INT |
0 |
|
|
+14.0 |
Data7 |
INT |
0 |
|
|
+16.0 |
Data8 |
INT |
0 |
|
|
+18.0 |
Data9 |
INT |
0 |
|
|
=20.0 |
|
END_STRUCT |
0 |
|
|
+0.0 |
Status_Word |
INT |
|
|
|
+2.0 |
Data1 |
INT |
|
|
|
+4.0 |
Data2 |
INT |
|
|
|
+6.0 |
Data3 |
INT |
|
|
|
+8.0 |
Data4 |
INT |
|
|
|
+10.0 |
Data5 |
INT |
|
|
|
+12.0 |
Data6 |
INT |
|
|
|
+14.0 |
Data7 |
INT |
|
|
|
+16.0 |
Data8 |
INT |
|
|
|
+18.0 |
Data9 |
INT |
|
|
|
=20.0 |
|
END_STRUCT |
|
|
|
+40 |
Data |
Array[0..20] |
|
|
|
*0.0 |
|
STRUCT |
|
|
|
+0.0 |
Status_Word |
INT |
0 |
|
|
+2.0 |
Data1 |
INT |
0 |
|
|
+4.0 |
Data2 |
INT |
0 |
|
|
+6.0 |
Data3 |
INT |
0 |
|
|
+8.0 |
Data4 |
INT |
0 |
|
|
+10.0 |
Data5 |
INT |
0 |
|
|
+12.0 |
Data6 |
INT |
0 |
|
|
+14.0 |
Data7 |
INT |
0 |
|
|
+16.0 |
Data8 |
INT |
0 |
|
|
+18.0 |
Data9 |
INT |
0 |
|
|
=20.0 |
|
END_STRUCT |
0 |
|
|
=440 |
|
END_STRUCT |
|
|
5、以上FIFO程序调用功能块和程序,均是可以通过Siemens公司提供的模拟运行软件Siamtic Simulation进行模拟PLC确认,可以正常运行没有问题。
四、结
通过自己开发弥补西门子厂家提供的功能模块的不足,能更大限度的发挥西门子公司产品的软件开发优势。
1、首先要设置西门子plc与pg的通讯方式。 。在setpg/pc里面设置好。
。在step7中,建立一个新的项目(为空) 。点击plcuploadstationtopg
。在出现对话框中,选择机架号为0设定插槽号2(一般设定) 。选择通讯的地址,一般也为2。
即可“将站点上传到pg”是将整个站硬件组态和软件程序全部上载。 2、如何找到cpu?
直接通过tcp/ip或iso的方式即可,具体做法是可以通过step7的
edit-editethernetnode-browse搜索您的cp或cpu的集成pn口,在线分配ip地址后就可以直接以tcp/ip的方式进行通讯。

上海庆惜自动化设备有限公司是西门子自动化和驱动集团核心分销商(一级代理商)及系统集成商
西门子PLC S7-1500与300TCP通讯介绍
西门子PLC S7-1500系列是西门子PLC新一代产品,它通过多方面的创新,为用户提供了更高的产品,提高了用户的工程实施效率。西门子PLC S7-1500为用户在自动化控制系统中提供了更高的运行能力,而且简单易用,节省了大量的系统开发时间,西门子PLC S7-1500系列有很强的通讯功能,和扩展能力,为用户提供了多种性能优异的解决方案。其中S7-1500系列CPU集成了PROFINET接口,这个接口除了具备连接PROFINET总线通信功能,还能用在标准的TCP通信中。本文下面就为您介绍西门子PLC S7-1500系列CPU与西门子PLC S7-300系列的通讯模块CP343-1进行TCP通讯的方法,供用户在选择和配置时进行参考。
西门子PLC S7-1500系列的CPU模块,与西门子PLC S7-300的CP343-1之间实现TCP通讯的步骤如下: 1. 分配IP地址
(1)为用户的电脑分配IP地址;
(2)为西门子PLC S7-1500系列的CPU分配IP地址,与电脑的IP地址需要在同一个网段; 2. 创建一个新项目
(1)在博途软件STEP7 V13中插入西门子PLC S7-1500系列的CPU和西门子PLC S7-300系列的CPU,并且加入CP343-1
北京天拓四方科技有限公司是西门子自动化和驱动集团核心分销商(一级代理商)及系统集成商
通讯模块;
3. TCP通信编程
(1)创建全局数据块,用来保存接收和发送的数据; (2)在S7-1500的CPU主程序中调用TRCV_C和TSEND指令,并添加背景数据块,设置各个管脚的参数;
(3)在S7-300的CPU主程序中调用AG_SEND和AG_RECV指令,并添加背景数据块,设置各个管脚的参数; 4. 下载组态到站点
(1)将组态好的程序下载到S7-1500的CPU中; (2)将组态好的程序下载到S7-300的CPU中; 5. TCP通信测试
在博途软件中,分别对S7-1500的CPU和S7-300的CPU建立变量状态监视表,观察发送和接收的数据是否正确。 西门子PLC S7-1500系列为用户带来了更加完善的体验,它具有优异的控制性能,通讯功能强大,为用户提供了经济性好,品质高的自动化控制系统解决方案。

上海庆惜自动化设备公司是西门子工业自动化和驱动集团核心分销商(一级代理商)及系统集成
商
如何对西门子S7-300PLC进行复位及格式化
一、复位CPU方法:
1、将操作模式开关转换从STOP位置到MRES 位置并保持至少3 秒钟,直到红色的“STOP”发光二极管开始慢闪为止。
2、释放开关,并且多在3 秒内将开关再次转到MRES 位置。当“STOP”LED 快闪时,CPU 已经被复位。
3、如果“STOP” 发光二极管没有开始快闪,请重复执行此过程。
二、复位存储器的方法:
1、将操作模式开关转换从STOP位置到MRES 位置,STOP LED 熄灭1s,亮1s,再熄灭1s后保持亮。
2、放开开关,使它回到STOP位置,3s内把开关又回到MRES,STOP LED以2Hz的频率至少闪动3s,表示正在复位,后STOP LED一直亮,可以松动模式开关,完成。
三、复位CPU 存储器的方法:
1. 将钥匙转至STOP 位置。
2. 将钥匙转至MRES 位置并保持在此位置,直至STOP LED 第二次点亮并持续处于点亮状态(需要3 秒)。现在释放钥匙。
3. 必须在3 秒内再次将钥匙转至MRES 位置并保持不动,直至STOP LED 闪烁(频率为2 Hz)。现在即可释放开关。CPU 完成存储器复位后,STOP LED 会停止闪烁并始终亮起。
CPU 已完成对存储器的复位。
四、使用以下步骤格式化MMC:
如果CPU 请求存储器复位(STOP LED 缓慢闪烁),则可以通过对选择器开关进行如下设置来格式化MMC:
1. 将开关切换至MRES 位置并保持不动,直至STOP LED 点亮并保持亮起(大约9 秒后)。
2. 在随后的三秒内,释放开关并再次将其切换至MRES 位置。STOP LED 闪烁,指示正在进行格式化。
北京天拓四方科技有限公司是西门子工业自动化和驱动集团核心分销商(一级代理商)及系统集成
商
注意:
仅在CPU死机的情况下才允许执行项“复位CPU方法”操作,并至少有工程师在场方可操作。第二项至第四项仅供学,绝不允许操作。

