西门子PLC模块CPU414-3PN/DP西门子代理商

更新:2024-01-07 08:08 编号:22233944 发布IP:101.85.196.90 浏览:23次
发布企业
浔之漫智控技术(上海)有限公司商铺
认证
资质核验:
已通过营业执照认证
入驻顺企:
2
主体名称:
浔之漫智控技术(上海)有限公司
组织机构代码:
91310117MA1J3R698D
报价
人民币¥888.00元每台
西门子
西门子代理商
西门子CPU
西门子plc
德国
全新原装
关键词
西门子PLC,西门子触摸屏,西门子数控系统,西门子软启动,西门子以太网 西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆
所在地
上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
全国服务热线
19514718569
经理
吴悦  请说明来自顺企网,优惠更多
请卖家联系我

详细介绍

西门子PLC模块CPU414-3PN/DP西门子代理商

西门子PLC模块CPU414-3PN/DP西门子代理商

西门子PLC模块CPU414-3PN/DP西门子代理商

浔之漫智控技术(上海)有限公司  经营理念是:以质量求生存,以诚信谋发展。

我们公司能提供全套产品,我们有着**的库存,*优惠的价格

*优质的售后服务和*强大的技术力量

我公司大量现货供应,价格优势,品质保证,德国原装进口

西门子PLC通信故障中断组织块有哪些

与DP通信有关的中断组织块

  CPU在识别到一个故障或编程错误,例如,DP从站或者PROFINETIO设备的诊断报警、站的故障等,将会调用对应的中断组织块(OB),应生成这些OB,通过OB中编写的程序对故障进行处理。如果这些组织块没有下载到CPU,CPU将会因为无法调用这些块而进入STOP状态。下面介绍与通信故障有关的几个主要的中断组织块。

  1.DP从站产生的诊断中断(OB82)

  具有诊断功能的分布式IO模块通过产生诊断中断来报告事件,例如部分节点故障、信号模块导线断开、IO通道的短路或过载、模拟量模块的电源故障等。产生诊断中断时,CPU的操作系统将自动调用处理诊断中断的组织块OB82。OB82的启动信息提供了产生故障的模块的类型(输入模块或输出模块)、模块的地址和故障的种类。当DP主站的CPU从RUN模式切换到STOP模式时,智能从站将调用诊断中断组织块OB82。故障出现和消失时将分别调用一次OB82。

  通过在OB82中调用故障诊断的程序块,可以判断在哪个通道发生了什么样的故障。


西门子PLC通信故障中断组织块有哪些


  2.外设输入/输出区与过程映像输入/输出区

  S7-300/400的外设输入/输出区(PIPQ区)用于直接读写IO模块。过程映像输入/输出区(IQ区)是输入/输出模块在CPU的存储区中的“映像”。在每一扫描循环周期开始时,CPU将过程映像输出区中的数据成批地传送到输出模块,将输入模块外接的输入电路的状态成批地读入过程映像输入区。

  PI/PQ区与I/Q区的关系如下:

  1)访问PIPQ区时,直接读写输入/输出模块,而I/Q区是CPU内的存储区。

  2)I/Q区可以按位、字节、字和双字寻址,PIPQ区不能按位寻址。

  3)I/Q区的地址也可以用PI/PQ区访问。

  3.优先级错误中断(OB85)

  以下情况将会触发优先级错误中断:

  1)产生了一个中断事件,没有将对应的OB块下载到CPU(不包括OB81)。

  2)操作系统访问模块时出错。

  3)由于通信或组态的原因,模块不存在或有故障,刷新过程映像表时I/O访问出错。出现故障的DP从站的输入/输出值装入S7CPU的过程映像表时,就可能出现上述情况。

  访问出错的输入字节被复位和保持为“0”,直到故障消失。

  双击HWConfig的机架中的CPU,打开CPU的属性对话框。可以用“周期/时钟存储器”选项卡中的选择框选择调用OB85的方式(见图6-25)。


CPU的属性对话框的周期/时钟存储器选项卡


  图6-25 CPU的属性对话框的周期/时钟存储器选项卡

  S7-300CPU默认的选项是“无OB85调用”,在发生I/O访问错误时不调用OB85,也不会在诊断缓冲区中生成条目,一般采用默认的设置。

  S7-400CPU默认的选项是“每单个访问时”,在满足条件时,每个扫描循环周期都要调用一次 OB85和在诊断缓冲区中生成一个条目,这样会增加扫描周期。建议选用“仅用于进入和离开的错误”,该选项只是在错误刚发生和刚消失时分别调用一次OB85。

  在编写OB85的程序时,应根据OB85的启动信息,判定是哪个模块损坏或没有插入。OB85的局部变量OB_85_FLT_ID的错误代码的意义举例如下B#16#B1和B#16#B2分别表示更新过程映像输入、输出表时的I/O访问错误。可以用SFC49“LGC_GADR”查找有关模块所在的机架和槽位,以及模块的用户数据地址区中的偏移量。

  4机架故障或分布式I/O的站故障中断(OB86)

  如果机架、DP主站系统或分布式I/O(DP从站或PROFINETIO设备)由于掉电、总线导线断开、IO系统的故障,或者某些其他原因引起的故障,CPU的操作系统将调用组织块OB86。故障出现和消失时将分别调用一次OB86。可以根据OB86的启动信息,在OB86中编程,确定是哪个机架或分布式设备有故障或通信中断。

  5.I/O访问错误中断(OB122)

  CPU如果访问有故障的I/O模块、不存在的或有故障的DP从站的PIPQ输入/输出数据。或者访问了一个CPU不能识别的 I/O地址,CPU的操作系统将在每个扫描周期调用一次OB122.

  6.故障处理中断组织块的作用

  DP从站出现故障时,如果S7-400没有生成和下载OB82、OB85、OB86和OB122,S7-300没有生成和下载OB82、OB86和OB122,CPU将切换到STOP状态。为了防止某个从站的故障造成整个PROFIBUS主站系统停机,作为一个常规的措施,至少要生成和下载上述组织块。没有在这些OB中编写任何程序,在DP从站出现上述故障时,CPU也不会进入STOP模式。

  需要注意的是,生成上述OB后,CPU不再进入STOP模式,可能不易察觉这些危险状态,它们会被忽视。为了解决这一问题,在故障OB中,应编写记录、处理和显示故障的程序,例如记录中断的次数,保存OB的局部变量,调用读取诊断数据的SFC13等。以便在出现故障时,迅速地查明故障的原因和采取相应的措施。

  通过中断组织块的局部变量提供的信息,可以获得故障的原因、出现故障的模块地址、模块的类型(输入模块或输出模块)、故障出现或故障消失等信息。CPU的模块信息对话框中的诊断缓冲区保留着CPU曾经调用过的组织块的信息。

  **在出错时通过监控设备产生一条报警信息,以便操作人员安全和正确地操作设备,具体的方法将在第8章介绍。

  中断组织块的详细信息可以参阅STEP7的在线帮助,或者参考随书光盘中的手册《用于S7的系统软件和标准功能参考手册》。

5fe74cb143e0e8419a3535d340739ff - 副本 - 副本 (2).jpg


C#与西门子PLC通讯

C#与西门子PLC通讯

S7Net

PLC设置

C#程序

S7Net

PLC在工业自动化领域是常用的控制器,一般在和上位机界面通讯时,经常使用组态软件。以西门子PLC为例,上位机可以使用西门子的WINCC。当面对需求比较多样化的需求时,WINCC难以胜任。作为量产的标准化产品,WINCC授权的费用一笔不小的成本。S7.Net .dll 是应用在.NET平台上和西门子PLC通讯的一个动态库。大家可以到GitHub中直接去下载,或者直接搜索“S7.Net.dll”也可以找到下载的链接。文章*后也会给出链接。

目前该动态库支持的西门子PLC类型有S7-200,S7-300,S7-400,S7-1200,S7-1500,基本涵盖了西门子所有的PLC产品。该库可以直接读写PLC中的全局DB块,作为通讯的接口。下面对需要的一些函数以及数据类型做简单说明。

构造函数:cpu 为枚举类型,代表PLC类型。ip为PLC地址,需要和PLC组态的地址一致,和通讯的PC IP地址应在同一局域网段。rack 为导轨号,slot为插槽号,均可在TIA PLC 硬件组态处获得。

如下图,ip=“192.168.0.5”。


如下图,rack为0,slot为1。



public Plc(CpuType cpu, stringip, short rack, short slot);

public enum CpuType

{

       S7200 = 0,

       S7300 = 10,

       S7400 = 20,

       S71200 = 30,

       S71500 = 40

 }

1

2

3

4

5

6

7

8

9

获取是否连接成功:


public bool IsConnected { get;}

1

连接PLC:


public void Open();

public TaskOpenAsync();

1

2

该类库提供了两个用于PLC连接的函数,区别在于第二个为异步连接,在请求连接的过程中,不会导致线程阻塞。我个人比较喜欢第二种方式。

按位写操作:参数db代表访问的DB块编号,如下图所示UISendInt编号为3,UIReadInt编号为4。


startByteAdr是在数据块内以字节为单位的起始地址,可以传入0。bitAdr为需要操作的位的偏移地址(以startByteAdr为基准),value 为写入的值。

dataType为枚举类型,我们操作的是数据块,传入DataBlock。


public void WriteBit(DataTypedataType, int db, int startByteAdr, int bitAdr, boolvalue);

public enum DataType

{

     Counter =28,

     Timer =29,

     Input =129,

     Output =130,

     Memory =131,

     DataBlock =132

 }

1

2

3

4

5

6

7

8

9

10

按字节读:count代表读的字节数量。在进行按字节读写时,对于8位的单字节变量来说没有任何问题。对于多字节比如在PLC中16位I的INT类型,需要注意大小端问题。在西门子PLC中以大端模式存储数据,在Intel的X86架构的PC上,确是以小端模式。在从PLC读取一个INT类型的变量,需要将读取回来的字节数组高低字节调换,后面C#程序中会有详细的实现代码。


public byte[]ReadBytes(DataType dataType, int db, int startByteAdr, intcount);

1

按字节写:value代表将要传输的数据转换成的字节数组,如果要操作一个INT变量,需要提前将高低字节调换,后面C#程序中会有详细的实现代码。


public void WriteBytes(DataTypedataType, int db, int startByteAdr, byte[] value);

1

PLC设置

实现外部程序可以访问操作DB块,需要对PLC部分做一些设置。对于要读取或者访问的DB块,要将优化的块访问取消,默认为勾选的,选中块右击选择属性。


还要在硬件组态中,设置防护与安全中的连接机制。将“允许来自远程对象的PUT/GET访问”勾选。如下图:



C#程序

在C#上位机软件中,对通讯类库的函数做一个简单的包装,以方便我们使用。新建一个类S7,在项目中需要引用S7.NET,并在该类中包含命名空间。


using S7.Net;

1

定义一个Plc类型变量plc,并定义该类的构造函数和析构函数:


Plc plc;

public S7(S7DataType.CpuTypecpuType,string ip,Int16 rack,Int16 slot)

{

    plc = newPlc((CpuType)cpuType,ip, rack,slot);

}


~S7()

{

   this.plc.Close();

}

1

2

3

4

5

6

7

8

9

10

定义连接函数以及关闭函数:


public voidOpenAsync()

{

      this.plc.OpenAsync();

 }


public void Close()

{

   this.plc.Close();

}

1

2

3

4

5

6

7

8

9

定义读写函数:之加lock,是因为在应用中数据通讯很有可能在不同的线程去操作,比如单独开一个线程定时从PLC更新数据。


public byte[] PlcReadBytes(intdb, int startByteAdr=0, int count=1)

{

     try

     {

         lock (this)

         {

             return this.plc.ReadBytes(DataType.DataBlock,db, startByteAdr, count);

         }

     }

     catch

     {

         return new byte[2];

     }

     

  }

  

public void PlcWriteBytes(intdb, byte[] value, int startByteAdr = 0)

{

       lock (this)

       {

           this.plc.WriteBytes(DataType.DataBlock, db,startByteAdr, value);

       }    


public void PlcWriteBit(int db,int bitAdr, bool value, S7DataType.DataType dataType= 

S7DataType.DataType.DataBlock)

 {

     int temp1 =bitAdr / 8;

     int temp2 =bitAdr % 8;

     lock(this)

    {

        this.plc.WriteBit((DataType)dataType, db, temp1, temp2,value);

    }

 }


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

定义字节和Int16类型之间的转换函数(需要进行高低字节转换):


public static byte[]Int16ToBytes(Int16 data)

 {

      byte[]temp = new byte[2];

      temp[0]=(byte) (data >> 8);

      temp[1] =(byte)(data);

      returntemp;

  }


public static Int16BytesToInt16(byte[] bytes)

 {

      Int16temp;

      temp=(Int16)( bytes[0] << 8 | bytes[1]);

      returntemp;

  }

————————————————

版权声明:本文为CSDN博主「小小蜗牛爬上来」的原创文章,遵循CC 4.0BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/m0_37763193/article/details/100708024


关于浔之漫智控技术(上海)有限公司商铺首页 | 更多产品 | 联系方式 | 黄页介绍
成立日期2018年04月08日
注册资本500
主营产品西门子模块代理商
经营范围从事智能科技、自动化科技、机电领域内的技术开发、技术转让、技术咨询、技术服务,工业自动化设备安装,工业自动化控制设备、电气设备、机电设备、电子产品、五金产品、金属材料、仪器仪表、橡塑制品销售,商务信息咨询,软件开发,建筑装修装饰建设工程专业施工,建筑安装工程(除特种设备),机械设备租赁(不得从事金融租赁),物业管理。工业自动化设备加工、销售。【依法须经批准的项目,经相关部门批准后方可开展经营活动】
公司简介浔之漫智控技术有限公司西门子代理。联系人:小周(19514718569)浔之漫智控技术有限公司主要产品有“PLC,变频器,触摸屏,模块,传感器,低压器,伺服电机,工控机”。全新原装,质量保证,保修一年,价格合理,支持技术服务!SIEMENS可编程控制器1、SIMATICS7系列PLC:S7-200、S7-1200、S7-300、S7-400、ET-2002、逻辑控制模块LO ...
公司新闻
我们的其他产品
顺企网 | 公司 | 黄页 | 产品 | 采购 | 资讯 | 免费注册 轻松建站
免责声明:本站信息由企业自行发布,本站完全免费,交易请核实资质,谨防诈骗,如有侵权请联系我们   法律声明  联系顺企网
© 11467.com 顺企网 版权所有
ICP备案: 粤B2-20160116 / 粤ICP备12079258号 / 粤公网安备 44030702000007号 / 互联网药品信息许可证:(粤)—经营性—2023—0112