热门搜索:

上海西邑电气技术有限公司成立于1996年。在西门子公司广大同仁和工控领域各界朋友的关怀下埋头发展,一路走来已成西门子合作伙伴中的佼佼者。总部设在上海,办公面积1500多平方米,员工150余人。

    上海市西门子变频器代理商

    更新时间:2020-09-27   浏览数:85
    所属行业:机械 电工电气 工控系统及装备
    发货地址:上海市金山区  
    产品规格:上海市西门子变频器代理商
    产品数量:100.00台
    包装说明:全新原装
    单 价:面议

    上海市西门子变频器代理商

    我公司经营西门子全新原装现货PLC;S7-200S7-300 S7-400 S7-1200 触摸屏,变频器,6FC,6SNS120 V10 V60 V80伺服数控备件:原装进口电机(1LA7、1LG4、1LA9、1LE1),国产电机(1LG0,1LE0)大型电机(1LA8,1LA4,1PQ8)伺服电机(1PH,1PM,1FT,1FK,1FS)西门子保内全新原装产品‘质保一年。一年内因产品质量问题免费更换新产品;不收取任何费。欢迎致电咨询。

    blob:http://m.b2b168

    S7-300/400与S7-200SMART之间的以太网S7通信

    S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。
    经过测试发现S7-300/400通过集成的PN口或CP343-1/CP443-1与S7-200 SMART PLC 之间的S7通信也是可以成功的, 但是需要S7-300/400侧编程调用PUT/GET指令。

    注意:
    1.S7-200 SMART CPU 与S7-300/400 CPU 之间的S7通信未经西门子官方测试,本文档仅供客户测试使用,使用该种通信方式所产生的任何危险需要有客户自己承担!
    2.S7-200 SMARTPLC V2.0 版本才开始支持PUT/GET通信,V1.0版本的CPU需要升级固件后方可支持PUT/GET。
    3. S7-300/400若采用CP通信时,则需要采用Standard或Advanced类型通信模块,CP343-1 Lean模块不支持。 
    4.本文仅介绍S7-300集成PN口与S7-200 SMART CPU S7通信。

    S7通信介绍

    S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。
    S7-300/400通过以太网接口与S7-200 SMART PLC 之间的S7通讯经过测试是可以成功的,但是需要S7-300/400侧编程调用PUT/GET指令,见表1所示。
    表 1 PUT和GET :

    S7-400 S7-300 描述 简要描述
    SFB 14 FB 14 读数据 单边编程读访问。
    SFB 15 FB 15 写数据 单边编程写访问。

    S7-300/400根据使用通信接口(集成的PN口或CP343-1/CP443-1)不同,调用的功能块来源也不同。
    通信接口为S7-300 集成PN接口时,需要使用Standard Library中PUT/GET指令,如图1所示。

    图1 S7-300PN接口需采用Standard Library

    通信接口为S7-300 CP通信模块时,需要使用SIMATIC_NET_CP 库中PUT/GET指令,如图2所示。
     
    图2 S7-300 CP模块接口需采用SIMATIC_NET_CP库

    S7-400 CPU不区分通信接口,需要使用System Function Blocks 中的SFB14/SFB15指令块,如图3所示。
     
    图3 S7-400 需采用SFB程序块

    硬件及网络组态

    本文以采用1个315-2PN/DP,1个S7-200 SMART PLC为例,介绍它们之间的S7通信。 
    在STEP7中创建一个新项目,项目名称为S7-300-SMART。插入1个S7-300站,在硬件组态中插入CPU 315-2 PN/DP。如图4所示。 

    图4 STEP7 项目中插入S7-300站点

    设置CPU 315-2PN/DP的IP地址:192.168.0.1,如图5所示。硬件组态完成后,即可下载该组态。 

    图5 设置CPU PN IP地址

    打开“NetPro”设置网络参数,选中CPU 315-2PN/DP,在连接列表中建立新的连接。步骤如图6所示。 

    图6 NetPro组态视图中插入新连接

    选择 Unspecified  站点,选择通讯协议 S7 connection,点击 Apply,如图7所示。 

    图7 组态新连接

    在弹出的S7 connection属性对话框中,勾选 Establish an active connection,设置Partner address:192.168.0.2(S7-200 SMART PLC IP 地址),如图8所示。 

    图8 设置S7连接参数
    点击 "Address Details" ,再弹出来的对话框设置 Partner 的 Slot 为1,如图9所示。点击 OK即可关闭该对话框。 
    上海市西门子变频器代理商
    图9 设置“address details”参数

    网络组态创建完成后,需要编译,如图10所示。 

    图10 保存并编译连接

    网络组态编译无错,鼠标先点击 CPU 315-2PN/DP ,然后点击下载按钮下载网络组态,步骤如图11所示。 

    图 11 下载组态连接

    程序编程

    可以通过SFB/FB 14 "GET",从远程CPU中读取数据。
    S7-300:在REQ的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。
    S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。远程伙伴返回此数据。在 下一个SFB/FB调用处,已接收的数据被复制到组态的接收区(RD_i)中。必须要确保通过参数ADDR_i和RD_i定义的区域在长度和数据类型方面 要相互匹配。
    通过状态参数NDR数值为1来指示此作业已完成。只有在前一个作业已经完成之后,才能重新激活读作业。远程CPU可以处于RUN或STOP工作状态。如果 正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。

    通过使用SFB/FB 15 "PUT",可以将数据写入到远程CPU。
    S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。
    S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。 远程伙伴将所需要的数据保存在随数据一起提供的地址下面,并返回一个执行确认。必须要确保通过参数ADDR_i和SD_i定义的区域在编号、长度和数据类 型方面相互匹配。
    如果没有产生任何错误,则在下一个SFB/FB调用时,通过状态参数DONE来指示,其数值为1。只有在后一个作业完成之后,才能再次激活写作业。远程 CPU可以处于RUN或STOP模式。如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出 表示。
    打开SIMATIC 315 PN-1的OB1,在OB1中依次调用FB14,FB15如图12、图13所示:

    图12 FB14调用
    表2.FB14参数说明 :

    参数

    描述

    数据类型

    存储区

    描述

    REQ

    INPUT

    BOOL

    I、Q、M、D、L

    上升沿触发调用功能块

    ID

    INPUT

    WORD

    M、D、常数

    地址参数ID

    NDR

    OUTPUT

    BOOL

    I、Q、M、D、L

    为1时,接收数据成功

    ERROR

    OUTPUT

    BOOL

    I、Q、M、D、L

    接收到新数据

    STATUS

    OUTPUT

    WORD

    I、Q、M、D、L

    故障代码

    S7-300: 
    ADDR_1
    S7-400: 
    ADDR_i
    (1 ≤ i ≤ 4)

    IN_OUT

    ANY

    M、D

    I、Q、M、D、 
    T、C

    从S7-200 SMART的数据地址中读取数据;V区数据对应DB1。

    S7-300: 
    RD_1
    S7-400: 
    RD_i
    (1 ≤ i ≤ 4)

    IN_OUT

    ANY

    S7-300:M、D
    S7-400 I、Q、 
    M、D、T、C

    本站接收数据地址


    图13 FB15调用
    表3.FB15参数说明 :

    参数

    描述

    数据类型

    存储区

    描述

    REQ

    INPUT

    BOOL

    I、Q、M、D、L

    上升沿触发调用功能块

    ID

    INPUT

    WORD

    M、D、常数

    地址参数

    DONE

    OUTPUT

    BOOL

    I、Q、M、D、L

    为1时,发送完成

    ERROR

    OUTPUT

    BOOL

    I、Q、M、D、L

    为1时,有故障发生

    STATUS

    OUTPUT

    WORD

    I、Q、M、D、L

    故障代码

    S7-300: 
    ADDR_1
    S7-400: 
    ADDR_i
    (1 ≤ i ≤ 4)

    IN_OUT

    ANY

    M、D

    I、Q、M、D、 
    T、C

    从S7-200 SMART的数据地址中读取数据;V区数据对应DB1。

    S7-300: 
    SD_1
    S7-400: 
    SD_i
    (1 ≤ i ≤ 4)

    IN_OUT

    ANY

    S7-300:M、D

    S7-400 I、Q、 
    M、D、T、C

    本站发送数据地址

    注意:

    S7-200 SMART PLC 不需要编程。 S7-200 SMART 中的V存储区在S7-300/400 PLC 编程中以DB1数据块的形式体现。

    问题:如何计算当前程序所需的Local Data大小并合理设置S7 400 CPU属性中的Memory选项卡中的Local Data,S7 400 CPU中的Local data设置不当会导致什么问题?
    回答:Local data顾名思义为本地数据,在西门子控制器中有一部分内存空间被设置为L区间,它被用于控制器在运行程序时存储临时数据。由于编写FB/FC程序的需要和OB中调用功能块结构的不同,不同的OB由于调用不同的FB/FC,因此所需的Local data的大小各不相同(被调用的FB/FC将占用当前调用他的OB块的Local Data资源)。在控制器硬件组态中的CPU属性设置中,Memory选项卡用于设置Local data的分配。如果相应OB块实际运行所需的Local data大于硬件组态中所设置的Local Data大小,那么相应的程序将无法运行,CPU将报告INTF错误,甚至更为严重的情况下CPU可能会停止运行。但如果盲目将Local Data的分配设置过大,将会浪费一部分宝贵的CPU内存空间。
    S7 300CPU中的Local data不可修改,每个优先级固定设置为256 bytes,S7 400的Local data则可以人为修改。由此可以看出正确设置S7400 CPU的Local Data的大小非常重要。在控制器硬件组态中CPU属性? Memory选项卡的Local Data区域用于设置基于优先级的Local Data(如下图所示):


    Pic1: Local Data的分配

    在PCS7组态的项目中,在编译CFC程序后,系统将会自动计算各OB块所需的Local Data大小,可以通过交叉索引(Chart reference data ? Local data,如下图所示)查询到。


    Pic2: Chart reference data ? Local data

    而普通的由用户采用Step7编程方式编写的程序,程序功能块及OB块各自的调用结构由用户自行控制,需要在编写完整个程序之后自行计算。
    在手动计算Local Data时,需要获取如下信息:
    1. 各OB块、FB块、FC块各自独立运行时所需的Local Data大小
    可以通过如下方式查询到:在Block文件夹中选择相应功能块,右键 属性? General - Part2中即可查看到,如下图所示:


    Pic3: 功能块所需的Local Data

    注:嵌套调用时,上一级功能块将不会计算其嵌套调用的FB/FC所需的Local data大小;在上图中将不会累加嵌套功能块所需的Local data大小;


    2. 整个程序的调用结构(Call structure)
    由于功能块不会计算其嵌套调用的功能块所需到Local data大小,因此为了后计算整个OB所需到Local Data,必须了解整个程序的调用结构。打开任何一个功能块,点击左侧的Call Structure即可查询到,如下图所示;


    Pic4: 程序调用结构


    3. 当前程序下所使用的所有OB的优先级
    由于CPU属性设置中的Local Data分配基于优先级进行设置,因此需要查看所有当前程序使用的OB块的中断优先级,打开硬件组态中CPU属性查看,如下图所示;


    Pic5: 查看OB的优先级

    获得所有上述信息后,即可计算当前程序所需的Local data大小。假设当前项目下使用的功能块及OB块上述相关信息如下表所示:

    OB/FB/FC Priority 优先级 所需Local Data(Bytes)
    FB1 X 100
    FC1 X 400
    OB1 1 26
    OB35 12 26
    OB121 X 20
    OB122 X 20

    OB的调用关系如上图Pic4所示。根据调用结构计算,单独运行各OB块时所需的Local data如下:
    OB1: OB1 + Max(Sum(FB1,FC1), FC1) =26+Max(Sum(100,400), 400)=526
    OB35: OB35 + Sum(FB1,FC1) =26+Sum(100,400)=526
    OB121: OB121=20
    OB122: OB122=20
    终CPU属性中Local data的设置如下:
    优先级 1 所需Local Data大小至少为526 + 20 + 20 = 566 bytes;
    优先级12所需的Local Data大小至少为526 + 20 + 20 = 566 bytes;
    注:为什么上述优先级1和12中需要加入 两个20呢,因为程序运行的任何位置都有可能会执行OB121、OB122,所以需要加上OB121和OB122所需的本地数据。PCS7中(Pic2所示)进行各优先级所需Local data大小计算时已经自动加入了这部分的大小。
    具体的计算法则可以归纳为一下几点:

    1. 从内往外,从低往高;
    即:基于程序的调用结构,从低层、内层逐步往上、往外计算;
    2. 同级取大,内外求和;
    即:程序调用结构中,同层FB/FC中所需的Local data取各所需Local data中的大值;某一优先级所需的Local Data大小取所有相同优先级OB所需的Local Data的大值;上下调用层级各自所需Local Data需求和;
    3. 结果叠加OB121(编程错误)、OB122(I/O读取错误);
    即:终计算出的某优先级所需的Local data大小需要叠加上OB121、OB122所需的Local data;

    上海市西门子变频器代理商





    http://www.hyzdhxt.com