欢迎光临浔之漫智控技术(上海)有限公司网站!
全国服务咨询热线:

15821971992

技术文章 / article 您的位置:网站首页 > 技术文章 > 西门子6ES7513-1FM03-0AB0简介

西门子6ES7513-1FM03-0AB0简介

发布时间: 2023-02-24  点击次数: 224次
  今天同事打电话说现场6台宇电AI仪表,1台东辉8路巡检仪,3台富士FRENIC-VP变频器,2台日本RKC仪表,1台创盛流量计都要挂到WINCC里(之前说是厂方自己弄的),因为厂方临时要求加的,邮寄CP340挂到S7300就算了,也没几个通信设备,都是RS485,一条通讯线挂一起,能省就省吧,同事随身带的有RS485转232模块。 
      平常项目都是自己写的软件,二年前就用过一次WINCC6,外挂其它通讯设备也没试过,在网上搜了一圈,多是讲OPC什么的,不了解,觉得对我来说不太合适。还有讲用MSCOMM控件的。MSCOMM控件就不提了,已废弃多年不用了,不可能再回到老路上。于是决定移植上位机的代码,用WIN32 API 来做成OCX,WINCC里来调用,这样并非像网上说的要支持MODBUS协议或找OPC什么,只要通讯设备有通讯协议,带通讯接口即可。我的方法看起来也许比较麻烦,但方便维护,去现场调试的人不需对通讯怎么懂,会设置通讯设备的地址参数就行了,其它都用默认参数,再说增加个新的通讯设备协议,也就一小会儿事。
1.先编个基类,定义接口,方法,属性,例如通讯COM口,波特率、数据位、停止位、校验方式等等生成dll链接库。
2.从基类派生各个通讯设备类,如仪表,变频器,流量计,PLC等等,通讯设备类负责将要读或要写的数据打包给串口类,并接收来自串口类的回送数据进行处理,生成dll链接库,这个库最大,包含了五十多种设备的通讯,以后新加通讯设备只需拷贝一个,稍加修改即可。
3.再编个通讯串口类,调用WIN32通信API函数,负责将通讯设备类打包过来的发送数据发送出去,再将接收到数据返回给通讯类自身处理,生成dll动态链接库。
4.再编个消息类,负责将通讯的发送字节,接收字节,当前通讯设备的通讯设置参数,通信成功或失败等信息作为事件触发,生成dll动态链接库.
5.后面的就简单了,编个OCX控件直接引用上面的DLL库编几个小调用函数,再封装几个属性和消息事件触发,编译一下做个OCX安装程序。
6.发给同事OCX安装包,同事安装后直接注册下OCX即可用,只需在WINCC里初始化下这个OCX挂的各个设备名称,通讯地址,端口,波特率,数据位,停止位。然后再在循环处理过程里编个通用的轮循过程,要读的设备号,要读的参数或要写的参数及要写的数据。读写成功失败或者收发的字节通过OCX的事件触发来处理。
7.如果现场新加的通讯设备协议在这个OCX中,WINCC只需要改一下初始化过程,挂靠的OCX通讯设备名称,通讯参数即可,其它如轮循过程,变量处理根本不需要改动。
       如果WINCC只挂少量设备,也可以采用MSCOMM控件处理,毕竟MSCOMM简单,建议还是不要在WINCC里直接用MSCOMM控件,代码很乱,不方便移植。还是自己编个OCX,在OCX里面用MSCOMM控件,再封装几个方法属性出来给WINCC调用,也方便客户使用。 

638119700461696089393.jpg

      毕竟WINCC我很少用它,但它确实很强大,也许是我不熟的原因,觉得它通信慢。问下大家,读单字,双字大概算下来有合计800个16位字的通讯,MPI方式.下午顺便发了个测试代码给同事,同事说WINCC一次大概只能读100多个字,也就是200多个字节,再多了就失败,而且每次耗时大概1~2秒.那800个字不得调8次?感觉这样不行。我用的GetTagRaw函数.但是我记得如果采用PRODAVE方式,一次就可以读回来了,耗时感觉不到1秒,正考虑是不是把S7300/200 PLC通讯全移到OCX处理算了,不知有没这个必要。

1、CPU中的程序
      S7-300/400系列CPU 原则上运行两个不同的程序:操作系统和用户程序。
      每个CPU都带有集成的操作系统,组织与特定控制任务无关的所有CPU功能和顺序。操作系统任务包括下列各项:处理重启(热启动)和热重启;更新输入的过程映像表,并输出输出过程映像表;调用用户程序;采集中断信息,调用中断OB;识别错误并进行错误处理;管理内存区域;与编程设备和其它通讯伙伴进行通讯;通过修改操作系统参数(操作系统默认设置),可以在某些区域影响CPU响应。
      用户程序则是由用户进行创建,在STEP 7中进行编程后并将其下载到CPU中。它包含处理特定自动化任务所要求的所有功能,其任务包括:确定CPU的重启(热启动)和热重启条件,如用特定值初始化信号;处理过程数据,如产生二进制信号的逻辑链接,获取并评估模拟量信号,用于输出的二进制信号,输出模拟值;响应中断;处理正常程序周期中的干扰。
2、用户程序中的块
      在STEP 7编程软件中进行构建的用户程序,可以将程序分成单个或独立的程序段,称为“块"。,这对于一个大的工业自动化过程来说具有非常大的优点,比如易于理解、可以标准化、方便修改程序、简化测试等。表3-2所示为在S7用户程序内可使用多种块的类型。


      OB、FB、SFB、FC和SFC包含程序段,因此也称为逻辑块。每种块类型许可的块数目和块长度由CPU决定。

3、组织块
      组织块(OB)表示操作系统和用户程序之间的接口,它由操作系统调用,控制循环中断驱动的程序执行、plc启动特性和错误处理。用户可以在STEP 7中对组织块进行编程来确定CPU特性。
常见的组织块主要包括以下部分(如图1所示):

 
图1常见的组织块

      组织块确定单个程序段执行的顺序,即启动事件。启动事件触发OB调用称为中断,一个OB调用可以中断另一个OB的执行,哪个OB允许中断另一个OB取决于其优先级,高优先级的OB可以中断低优先级的OB,背景OB的优先级。
可以通过STEP 7给中断分配参数,如通过参数分配,可以取消选定参数块中的中断OB或优先级:日历中断、延时中断、循环中断和硬件中断(如图2所示)。

 
图2组织块优先级

      必须说明的是:S7-300 CPU上的组织块优先级固定,但是对于S7-400 CPU(和CPU 318),可以通过STEP 7 修改OB10 - OB47组织块的优先级或者可以将相同优先级分配给多个OB。具有相同优先级的OB按照其启动事件发生的先后次序进行处理。

4、功能块、功能和数据块
      功能块(FB)是属于用户自己编程的块,需要分配数据块(DB)作为其内存(实例数据块),因此传送到FB的参数和静态变量保存在实例DB中,而临时变量则保存在本地数据堆栈中。执行完FB时,不会丢失实例DB中保存的数据。但执行完FB时,会丢失保存在本地数据堆栈中的数据。
      系统功能块(SFB)是集成在S7 CPU中的功能块,SFB是操作系统的一部分,不作为程序的一部分而被加载。同FB一样,必须给SFB创建实例数据块,然后将它们作为程序的一部分下载到CPU中。
      功能(FC)也是属于用户自己编程的块,是一种"不带内存"的逻辑块。属于FC的临时变量保存在本地数据堆栈中,执行FC时,该数据将丢失,为保存该数据,功能也可使用共享数据块。由于FC本身没有内存,因此,必须始终给它实际参数。不能给FC的本地数据分配初始值。
      FC和FB输出参数之间的重要区别在于后者使用实例DB。在功能块(FB)中,访问参数时,使用实例DB中的实际参数副本。如果调用FB时,没有传送输入参数或没有写访问输出参数,那么将使用原先保存在实例DB(实例DB = FB内存)中的值。但功能(FC)没有内存。)因此,与FB相反,将形式参数分配给这些FC不是可选,而是必须的。通过地址(指针跨过区域边界指向目标)访问FC参数。当数据区(数据块)地址或调用块的局部变量用作实际参数时,实际参数的副本将临时保存到用于传送参数的调用块的本地数据区中。
      系统功能(SFC)是集成在S7 CPU中的预编程功能,可以在程序中调用SFC。SFC属于操作系统,不能作为程序的一部分而被加载。同FC一样,SFC也是"不具内存"的块。
      与逻辑块(如FB、OB等)相反,数据块不包含STEP 7指令,它们用来存储用户数据,即数据块包含用户程序使用的变量数据。共享数据块则用来存储可由所有其它块访问的用户数据,其大小各不相同。用户也可以任何方式构造共享数据块,满足特定要求。


技术支持:化工仪器网   sitemap.xml   管理登陆
© 2024 版权所有:浔之漫智控技术(上海)有限公司( www.xzmsh.cn)   备案号:沪ICP备20010280号-7