• 西门子6ES7321-1BL00-0AA0产品齐全
  • 西门子6ES7321-1BL00-0AA0产品齐全
  • 西门子6ES7321-1BL00-0AA0产品齐全

产品描述

产品规格模块式包装说明全新

西门子6ES7321-1BL00-0AA0产品齐全

现在上位机系统中很多要求具备流量计的流量累计功能,由此引出的几个问题,期望与大家分享。
问题1:自行编写流量累计程序
自行编写流量累计程序的原理,其实就是积分的原始算法概念,把单位小间隔时间内的瞬时流量乘以单位间隔时间,得到单位小间隔时间内的流量,再把这些小流量累加起来,就的到了累计流量。
在流量累计编程中经常会遇到实数加法问题,实数加法运算的注意事项也应当引起编程人员的重视,请看下例程序(设其在OB35中被调用,目的为每隔一定时间间隔就累计一次流量)
L MD0 //累计流量存储值
L MD4 //流量瞬时值
+R
T MD 0 
以上的程序是否存在问题?很多人会认为没有问题,但实际情况是此程序在运行一段时间后就将出现错误。此程序在运行之初是正常的,因为累计流量初始值及瞬时值都为一个很小的浮点数,两数相加后,结果正确。但是当一段时间后,累计流量的数值逐渐增大,当它与瞬时流量的数值相差很远的时候,两者执行加法操作后,瞬时流量的数值将被忽略掉(如9999990.0与0.2做加法操作)。其实具备计算机常识的人都应当清楚这一点,这是由于浮点数的存储机制造成的,是所有计算机方面编程都需要考虑的问题。这个问题可以通过使用二次累加或多次累加的方法来解决。所以在编程时应避免数量级相差太多的浮点数之间进行运算。很多人反映“加法指令不好用了”,很有可能就是数量级相差很多的实数进行了加法运算。
问题2:累计流量误差问题
对于积分算法,取小的矩形对流量进行累计,肯定是矩形划分越细,误差越小,不存在误差是不可能的。
问题3:流量计与PLC构成的系统的误差
流量计有多种多样,下面举些例子:
1、流量计本身没有累计流量功能,但可以把瞬时流量以模拟量的方式(例如4-20mA)输出。
此时累计流量的大误差可以估算为:
流量计本身误差 * 流量计D/A误差 * 模拟量模块A/D误差 * PLC流量累计算法误差
设上面所有误差都是1%,则后的误差约为:4.06%
1.01*1.01*1.01*1.01=1.0406
对于某些流量计,本身的瞬时流量误差可能就是3%,所以这样的系统累计流量的误差可能还要大些。
2、流量计本身没有累计流量功能,但可以把瞬时流量以数字量的方式输出。
有些流量计提供数字量接口,可以连接PLC的数字量输入模板,流量计每流过一定流量后(例如0.1吨),此输入点就导通一次,PLC就把累计流量累加0.1吨即可。
此类系统避免了A/D,D/A转化的误差,以及PLC累计算法误差。但是会出现一定时间内累计流量不变化的情况,实时性不好(每0.1吨累积的时间)。
3、流量计本身有累计流量功能,同时可以把瞬时流量以模拟量的方式(例如4-20mA)输出,但无法将累计流量数值送出。
流量计本身累积流量的数值,后很有可能与PLC的累计流量数值相差很大,原因可能是多方面造成的,除去系统累计流量误差的因素,如果PLC系统检修时,流量计还计量,则PLC无法累积这部分流量。
4、流量计本身有累计流量功能,同时可以通过通信的方式,把瞬时流量及累计流量数值送给PLC。这种情况理想,但系统的成本也。

 用户使用CPU315-2DP的CPU实现一个很复杂的工艺控制,时间要求很严格,有很多时间序列,例如A点信号为1后触发定时器1,定时5秒钟,时间到后,输出一电平给B点,触发定时器2,延迟3秒后,采集C传感器的值,触发定时器3,并每隔10秒计算一下(有个公式)等等,类似这样的工艺有很多段,每段都不太一样,使用定时器数量也不一样,用户程序编了,但还没完成,因为定时器不够用了,过了PLC能提供的定时器数量256个,所以就有了上面的那些报怨。
      总结一下,用户报怨西门子PLC能提供的定时器数量太少不够用,不能满足用户的需求(终于听明白了)。
      听完用户的问题,用户也平静了许多,我心里也有底了。我没有给用户直接的答案,而是先关心一下用户调试程序的困难,我只是说了句:“您调试程序是不是不太方便啊?”我的话音刚落,用户的话匣子又打开了,诉苦啊,调试不方便,定时器走乱了,互相条件依存太多, ……总之没有好用的地方,快被折磨。听完用户所言后提醒自己,别再往用户“伤口” 上撒盐了,还是开吧,先把病看好了,接下来再聊别的。
      不够用可以使用IEC定时器(SFB3-SFB5),只要CPU容量够用,数量没有限制,显然用户不知道此信息,否则他就不会报怨定时器不够用了,如果真的使用了IEC定时器编程,估计用户的程序会有一半是定时器的程序了,所以我先没有告诉他,免得又引出很多话,用户也不啊。
      那给用户开了什么了呢?
      方子很简单:定时器一个,加法指令一个(MW0=MW0+1)。
      使用方法:因为用户所有定时器使用的时间单位都是秒,于是就将T1设定成1秒的定时器,程序运行后启动定时器,然后在定时时间到后执行MW0=MW0+1,即每定时到1秒钟MW0就加1,这样通过判断MW0的值就会得出相应的计时时间(秒),并能判断出时间过了多少秒,例如MW0=10,就是10秒,当MW0数值达到大定时时间值后可以清零。这样就很好的满足了用户的需求,解决了问题,同时程序结构比较清晰,不乱。

不同的商家的PLC有不同的编程语言,但就某个商家而言,PLC的编程语言也就那么几种。下面,以西门子PLC的编程语言为例,说明一下,各种编程语言的异同。 


1、顺序功能图(SFC-Seauential Fuction Chart)


 这是位于其它编程语言之上的图形语言,用来编程顺序控制的程序(如:机械手控制程序)。编写时,工艺过程被划分为若干个顺序出现的步,每步中包括控制输出的动作,从一步到另一步的转换由转换条件来控制,特别适合于生产制造过程。


 西门子STEP7中的该编程语言是S7Graph。


2、梯形图(LAD-LAdder Diagram)


 这是使用使用多的PLC编程语言。因与继电器电路很相似,具有直观易懂的特点,很被熟悉继电器控制的电气人员所掌握,特别适合于数字量逻辑控制。


 梯形图由触点、线圈和用方框表示的指令构成。触点代表逻辑输入条件,线圈 代表逻辑运算结果,常用来控制的指示灯,开关和内部的标志位等。指令框用来表示定时器、计数器或数学运算等附加指令。


 在程序中,左边是主信号流,信号流总是从左向右流动的。


 不适合于编写大型控制程序。


3、语句表(STL-STatement List)


 是一种类似于微机汇编语言的一种文本编程语言,由多条语句组成一个程序段。语言表适合于经验丰富的程序员使用,可以实现某些梯形图不能实现的功能。


4、功能块图(FBD-Function Block Diagram)


 功能块图使用类似于布尔代数的图形逻辑符号来表示控制逻辑,一些复杂的功能用指令框表示,适合于有数字电路基础的编程人员使用。功能块图用类似于与门、或门的框图来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框用“导线”连在一起,信号自左向右。


5、结构化文本(ST-Structured Text)


 结构化文本(ST)是为IEC61131-3标准创建的一种的编程语言。与梯形图相比,它实现复杂的数学运算,编写的程序非常简洁和紧凑。


 STEP7的S7 SCL结构化控制语言,编程结构和C语言和Pascal语言相似,特别适合于习惯于使用语言编程的人使用。

西门子S7-200和S7-200 SMART的以太网通信都采用S7协议的单向通信,可以作客户机或服务器,每个读操作多传输222字节,每个写操作多传输212字节。

它们在性能上的区别如下:

1)S7-200 SMART的CPU集成了一个以太网接口和RS-485接口。S7-200的以太网通信需要配备一块价格比CPU 226还高的CP 243-1以太网模块。

2)S7-200 SMART的以太网接口有一个用于编程计算机的连接,还有8个用于HMI(人机界面)的连接,8个用于以太网设备的主动的GET/PUT连接,和8个被动的GET/PUT连接。上述的25个连接可以同时使用。S7-200 SMART与高性价比的SMART 700 HMI配合使用非常方便。

CP 243-1只有一个用于编程计算机的连接,和8个S7连接。

3)S7-200和S7-200 SMART都用向导来组态以太网通信。S7-200 SMART的GET/ PUT向导的操作简化到了,S7-200的以太网向导需要多设置十多个参数。

4)S7-200的以太网通信需要调用向导生成的ETH0_CRL,对于每一个连接、连接中的每一个,都需要调用一次向导生成的子程序ETH0_XFR。

S7-200 SMART的以太网通信只需要调用一次向导生成的NET_EXE子程序。

5)S7-200在以太网通信中作服务器也需要用向导来组态,并调用子程序ETH0_CRL。

而S7-200 SMART作服务器不需要用向导来组态,也不需要调用通信子程序。

6)S7-200 SMART之间用以太网通信交换数据不需要附加的硬件成本,比S7-200的网络读写指令的MPI通信的字节数(16字节)和传输速率大得多。S7-200 SMART通过以太网还可以与S7-1200和S7-300/400通信。

202202231632191168784.jpg202202231632188678274.jpg202202231632191919794.jpg

  三菱和西门子的PLC都有自己的特的优点的,先讲讲三菱2AD模块吧,2AD模块是提供一个12位分辨率的模块,大的数字量是4096.这个4096跟12位分辨率是怎么样的一个关系2进制的12个1就是4096,当然这个大的数字量4096是可以2AD模块上面的增益电位器调节的 。
      我就拿一个PT100的200度的温度传感器为例子,这个传感器0度对应的模拟量电流是4mA.200度对应的模拟量电流是20mA,步就开始校准2AD的增益和偏置,所谓的增益和偏置实际上就是模拟量电流4mA和20mA所对应的数字量,我们拿一个电流发生器产生出一个20mA的电流,然后接到2AD的模拟量电流输入端。PLC上电以后找到模拟量对应的数据寄存器看里面的当前值是多少,可能里面的数据是一个未知的数据这是因为2AD在出厂的 时候是没有调节到一个标准的,我们就调节增益电位器使数字量为4000,为什么要调到4000呢因为温度传感器的量程为200度他们刚好是一个20倍的关系。接下来就是偏置了,调节电流发生器输出4mA的电流,就看数据寄存器里面的数字量是多少。如果数据寄存器的数字量为0那我们就不用调节了。增益和偏置调节好以后就接上传感器实际检测,PLC里面的程序要用到除法指令,因为要把数据寄存器里面的数据除以20就是实际温度,当然这是不够的因为在很多自动化控制的场合要很的温度,所以就要用到浮点数变换指令和浮点数除法指令,三菱的浮点数可以保留小数位后3位即0.000度。 
      需要特别注意的是以上的是可以完成模拟量功能了,但我们看到的温度变化是很快的,这是因为PLC每个扫描周期就执行一次模拟量采集和模拟量运算这个时间是很快的一般就20ms就执行一次,所以里面的数字变化是非常快,在这种情况下我们就要求平均值,具体的方法就是用累加指令在把累加的数据在除以累加的次数就可以。一般累加次数在5到10次之间。 
      西门子的模拟量跟三菱的是不一样的他的分辨率比三菱要高,西门子EM231是提供一个16位分辨率的模块大数字量是32000也就是一个字的容量。西门子的模拟量在 使用方法上面也和三菱不一样,因为西门子没有增益和偏置调节电位器,所有对应的数字量是经过公式计算出来的。虽然如此但西门子的程序模块化,在程序设计上面要简化得多直接在AIW数据寄存器里面就可以得到原始数据。 
      我就一个200度的传感器简单说说,这个传感器输出的模拟电流是4到20mA,西门子的数字量是0到32000,如果按照三菱的算法则就会出错,因为4mA不是对应数字量0而是6400,因为他们是1600倍的关系,4mA乘以1600=6400,所以我们得求出数字量6400和32000和温度200的一个系数,具体公式是这样的(32000-6400)除以200=128. 这个128就是他们的系数,如果温度传感器是400度就除以400。 
后我们把AIW数据寄存器里面的数据除以128就是当前温度了,需值得注意的是西门子的模拟量在中断程序里面。

  西门子PLC在运行时采用循环执行用户程序的方式,这种运行方式也称为扫描工作方式。 
下面是循环处理的各个阶段的任务:
1、操作系统启动循环时间监控。
2、CPU将过程映像输出区的数据写到输出模块。
3、CPU读取输入模块的输入状程序中的指令。
4、在循环结束时,操作系统执行其他任务,例如下载和删除块等。
5、CPU返回阶段,重新启动循环时间监态,并存入过程映像输入区。
6、CPU处理用户程序,执行用户控。
为什么不是像其他PLC那样,在本次扫描周期结束的时候将过程映像输出区的数据写到输出模块,而是在下一个扫描循环周期才写到输出模块?这样不是产生了一个扫描周期的延迟吗?回收三菱PLC。
这是因为PLC的扫描工作方式是一种重复的循环过程,就像我们日常使用的时钟一样,23点59分59秒过了就是下的0点0分0秒。说起来进入了下,实际上只差时间。因此在下一扫描周期的开始将数据输出到外设,与本周期结束时输出的效果基本上是一样的。这两种方法的输出时间相差不是一个扫描周期,基本上没什么差别。

在系统设计的初期,应该从系统的角度来考虑PLC控制程序的保护:
    一、 T.I.A(全集成自动化)的概念有助于保护我们的KNOW HOW
    T.I.A实现了组态和编程,数据管理和通讯,自动化与驱动产品(包括PLC控制器、HMI人机界面、网络、驱动器等产品)的高度集成。实践证明,采用T.I.A集成概念设计的控制系统很难被。同一个软件平台,相同的硬件组成,一样的总线通讯,可以设计出截然不同的控制系统,这是一个让自由发挥的平台。
    举个例子,2个MM440变频器和一个CPU315-2DP进行PROFIBUS-DP的通讯,除了PLC和变频器有常规的数据交换,如果用户使用了DRIVES ES的工程软件,还能实现2个MM440之间的直接的快速数据交换,另外通过DRIVES ES还能实现PLC和MM440之间过10个总共16个PZD过程数据的交换,实现PLC批量下载变频器参数的功能。
    而这一切的实现从表面上看,硬件没有发生任何的变化,者很难从硬件上来判断出系统是如何控制这两台驱动器的速度的。不熟悉西门子产品的者无法轻易换硬件配置或软件,而即使者是个西门子产品的,要自分析清楚具体细节问题也不是件的事情。
    从某种程度上说,T.I.A大大提高了对者的技术水平要求的门槛,达到西门子系统集成水平的技术人员一是不多,二很少有愿意做这些不齿的事情的。此外,对于一些较大系统的OEM开发商,路由通讯功能,iMAP软件包等都是很不错的T.I.A系统功能或工具,我们应该尽量利用T.I.A给我们带来的技术优势,技术,加大或的技术难度。
    二、 采用语言编写部分重要的工艺程序
    这一点主要针对采用S7-300400或WI产品的控制设备,除了使用STEP 7提供的LAD,STL,FBD标准编程语言来开发控制程序,还可以使用SCL,S7-GRAPH等语言来开发一些重要的工艺程序,WI还可以使用ODK软件包开发出专有的程序块。一般的者是不搞到这些开发工具的,即使有也不一定会使用,不用说来读懂这些程序了。在项目具体实施的过程中,我们应该从软件开发技巧的角度来考虑PLC控制程序的保护:
    1. 编程方式的采用
    a) 采用模块化的程序结构,采用符号名,参数化来编写子程序块
    b) S7-300400尽量采用背景数据块和多重背景的数据传递方式
    c) 多采用间接寻址的编程方式
    d) 复杂系统的控制程序尤其是一些带有顺序控制或配方控制的程序,可以考虑采用数据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。
    用户应该尽量采用以上几种层次的编程方式,这样编出来的程序中嵌入系统的保护加密程序,才不被发现和<此处内容被屏蔽>
    2.主动保护方法
    a) 利用系统的时钟
    b) 利用程序卡或者CPU的ID号和序列号
    c) 利用EEPROM的反写入功能,及一些需要设置的内存保持功能 d) 利用系统提供的累时器功能
    e) 在用户程序的数据块中设置密码
    f) 软件上设置逻辑陷阱
    g) 可以反向利用自己在编程时犯的错误
    3. 被动保护方法
    a) 在内存容量利用许可的条件下,不要删除被认为是无用的程序
    b) 在数据块里留下的标识,以便于将来遭到侵权时可以取证
    4. 应用反<此处内容被屏蔽>技术的注意事项
    a) 在用户程序中嵌入保护程序要显得自然一些,不能很突兀的加出一段程序来,代码要尽量精简,变量符号名应与被嵌入程序段的变量保持一致
    b) 往往一种保护加密手段是不够的,应该多种方法并用,并且这些保护程序一旦后对系统造成的后果也应该尽量不同,造成所谓的“效应”,从而增加程序被<此处内容被屏蔽>的难度,时间与成本,短时间内让者束手无策,
    c) 保护好程序的原代码,如果需要交付程序的,在不影响用户对设备维护的前提下,应对交付的程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块
    d) 做好严格的测试,以避免保护程序的不完善引起的误动作而带来的不必要的麻烦,同时也能降低售后服务的的费用
    三、使用通讯功能
    在实际的工作中,往往会遇到一些系统间需要数据交换的问题(如PLC-PLC之间,PLC与驱动器之间,PLC与仪表之间),无论是西门子产品之间还是西门子产品与三方产品之间,建议使用通讯的方案来代替模拟量或开关量之间的信号互连的方案。对于前者,者只能看见一条硬件的通讯线,至于有多少数据是如何通过通讯交换的,者要花精力研究具体的用户程序才能搞清楚;而对于后者,是省心省力了,者也是一目了然,尽收眼底。
    PLC与驱动器的通讯,除了了控制字状态字、设定值反馈值及过程变量的数据通讯,驱动器工作的参数也能由PLC通过软件下载,这样即可以降低终用户维护系统的技术要求,同时可以防止者通过驱动器工作参数分析系统尤其在驱动方面的工作原理和设计思路。
    有时候控制系统会由多个子控制系统构成,由此形成多CPU机界面的网络,西门子S7-200产品常见的是PPI网络,S7-300400产品常见的是MPI网络,通常是人机界面与CPU之间的数据交换,而我们也可在CPU的用户程序中添加一些无须组态的S7基本通讯功能(S7-200可用NETRNETW指令,S7-300400可以用X_PUTX_GET指令),定时或不定时地在CPU之间进行少量数据交换,通过这些数据实现子系统控制逻辑的互锁。对于这样的系统,者要分析某一子系统的程序也不是件十分事情。
    四、采用面板类型的人机界面
    尽量在自动化系统中使用面板类型的人机界面来代替单一的按钮指示灯,虽然按钮指示灯的功能是无法保密的,但目前为止,面板型人机界面能够实现程序上载并实现反编译的产品还不多见,可以在面板的画面上加上明显的厂家标识和联系方式等信息,者还不至于傻到连这个也原样照抄吧。
    这样迫使者重新编写操作面板的程序甚至于PLC的程序,而则可利用面板和PLC数据接口的一些特殊功能区(如西门子面板的区域指针,或VB脚本)来控制PLC的程序执行。这样的PLC程序在没有HMI源程序的情况下只能靠猜测和在线监视来PLC内部变量的变化逻辑,费时费力,大的增加了的难度。


http://zhangqueena.b2b168.com

产品推荐