自动化网-工控人家园官网

当前位置: 主页 > 工控品牌 > 西门子 >

西门子PLC通信方式-提高PLC程序运行效率的编程方法

时间:2016-05-24 15:53来源:未知 作者:admin 点击:
西门子plc的几种通信方式,PPI通讯、RS485串口通讯、MPI通讯、以太网通讯、PROFIBUS-DP通讯。 一、PPI通讯 PPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现
西门子plc的几种通信方式,PPI通讯、RS485串口通讯、MPI通讯、以太网通讯、PROFIBUS-DP通讯。

    一、PPI通讯

  PPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现通信,是S7-200 CPU默认的通信方式。

  二、RS485串口通讯

  第三方设备大部分支持,西门子S7 PLC可以通过选择自由口通信模式控制串口通信。最简单的情况是只用发送指令(XMT)向打印机或者变频器等第三方设备发送信息。不管任何情况,都必须通过S7 PLC编写程序实现。

  当选择了自由口模式,用户可以通过发送指令(XMT)、接收指令(RCV)、发送中断、接收中断来控制通信口的操作。

  三、MPI通讯

  MPI通信是一种比较简单的通信方式,MPI网络通信的速率是19.2Kbit/s~12Mbit/s,MPI网络最多支持连接32个节点,最大通信距离为50M。通信距离远,还可以通过中继器扩展通信距离,但中继器也占用节点。

  MPI网络节点通常可以挂S7-200、人机介面、编程设备、智能型ET200S及RS485中继器等网络元器件。

  西门子plc与PLC之间的MPI通信一般有3种通信方式:

  1、全局数据包通信方式

  2、无组态连接通信方式

  3、组态连接通信方式

  四、以太网通讯

  以太网的核心思想是使用共享的公共传输通道,这个思想早在1968年来源于厦威尔大学。 1972年,Metcalfe和David Boggs(两个都是著名网络专家)设置了一套网络,这套网络把不同的ALTO计算机连接在一起,同时还连接了EARS激光打印机。这就是世界上第一个个人计算机局域网,这个网络在1973年5月22日首次运行。Metcalfe在首次运行这天写了一段备忘录,备忘录的意思是把该网络改名为以太网(Ethernet),其灵感来自于“电磁辐射是可以通过发光的以太来传播”这一想法。 1979年,DEC、Intel和Xerox共同将网络标准化。

  1984年,出现了细电缆以太网产品,后来陆续出现了粗电缆、双绞线、CATV同轴电缆、光缆及多种媒体的混合以太网产品。 以太网是目前世界上最流行的拓朴标准之一,具有传传播速率高、网络资源丰富、系统功能强、安装简单和使用维护方便等很多优点。

  五、PROFIBUS-DP通讯

  PROFIBUS-DP现场总线是一种开放式现场总线系统,符合欧洲标准和国际标准。PROFIBUS-DP通信的结构非常精简,传输速度很高且稳定,非常适合PLC与现场分散的I/O设备之间的通信。 

提高PLC程序运行效率的编程方法

在西门子plc中,子程序是为一些特定的控制目的编制的相对独立的程序。执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这段子程序,这样就减少了不必要的扫描时间。
  怎样来提高PLC程序运行速度,可以采用以下几种编程方法,仅供参考:
  1:根据工程实际需求,进行功能块规划,编写子程序
  在PLC中,子程序是为一些特定的控制目的编制的相对独立的程序。执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这段子程序,这样就减少了不必要的扫描时间。
  2:用字或双字数据传送给DO点方法来控制输出
  在PLC的应用中通常都会有大量的输出控制,用字或双字数据传送给DO点方法来控制输出可以提高速度,只要根据实际应用的要求,合理分配输出地址,变换控制输出控制字,可以大大减少西门子plc程序执行的步数,从而加快PLC的程序运行速度。
  3:脉冲触发SET、RESET
  PLC中,使用SET指令只执行一次即可,不必每次扫描都执行这个指令,很适合与脉冲输出(PLS/PLF)指令配合使用。有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间
  4:避免了类型转换,方法如下:
  以S7-200为例,它的内存格式与我们常用的PC机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
  如我们定义符号时将字变量定义在VW2,同时保持VW0的值为零。则程序中可以用VW2以字型访问该变量,同时也可以VD0以双字型访问,避免了类型转换。
  为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
  b----字节型变量(byte)
  w----字型变量(word)
  d----双字变量(double)
  r----实型变量(real)
  f----位变量(flag)
  btn---自复位按钮式输入(button)
  sw----切换开关或自锁按钮输入(switch)
  sig---传感器、编码等电平信号输入(signal)
  rly---输出继电器位(relay)
  ……
  当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
  假如有一个字类型变量名为VarName,为使用前面的转换技巧,我们可以这样定义:
  wVarName----VW2
  dVarName----VD0
  在程序初始化时将VW0清零(如果是不需要记忆的变量,直接将dVarName清零也可)或者在数据块中将VW0设置为零。则以后需要以字类型访问变量时就用wVarName,需要以双字类型访问变量时就用dVarName。完全不需要类型转换。
  本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
  缺点是要多占用两字节的内存,以后程序中不能使用VW0。但S7-200的RAM空间很大,一般是用不完的,以226为例,有多达10K的RAM,偶从来没有超过1K。这些RAM都是花钱买来的,不用白不用,不用也是浪费了。
  同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容