STEP7项目移植方法
在STEP7中有项目和库的区分,这个库与TIA博途的相比非常简单,只包含程序块,库中的程序块中包括DB、FC、FB以及SFC和SFB。怎么移植S7-300/400的库到TIA博途中并可供S7-1500使用呢?我们先看一下STEP7项目的移植过程。在不包含硬件的情况下,移植的过程如下:【一】对原有STEP7项目进行一致性检查,更正程序中不一致的块,例如调用FC后,修改FC的接口参数,这样将造成程序不一致,导致时间冲突。操作如下图所示:
【二】平台的移植。就是从STEP7移植到TIA博途平台。在TIA博途中点击“项目移植”选项后,再选择STEP7源项目打开就可以了。如图2所示。这个过程程序不会发生任何变化,TIA博途平台在打开的时候,后台也在打开STEP7并对项目进行编译,看看是否缺少相应的软件。TIA博途平台对程序的架构和数据类型的检测非常严格,平台移植非常简单,保证编译无错不简单,通常都是上百个错误,主要是源程序编写不严谨。如下图所示:
【三】将TIA博途中的S7-300/400程序移植到S7-1500,如图3所示。移植后替换S7-300/400程序中使用的SFC和SFB,因为系统发生变化,系统程序块不一定完全匹配。
STEP7库移植方法
上面说了STEP7项目移植过程。如果是一个STEP7的库应该怎么移植呢?我们先看一个实例。【一】使用STEP7解压缩打开后,库中包含若干个程序块文件夹,如图下图所示:【二】每一个程序块文件夹就相当于项目中的站,大家这里需要注意,库文件只能在“Libraries”标签中打开,如图下图所示:
【三】库文件的存储文件后缀是*.S7L,而项目文件是*.S7P,如下图所示:
【四】TIA博途只能移植项目文件即*.S7P文件,必须将库文件转化为项目文件。在STEP7中创建一个项目,将库文件一个一个地复制到项目中,这样库中所有的程序块就包含在一个项目中,就可以对该项目进行移植了。注意:源程序是SCL编写的,在STEP7中还需要安装SCL。如果没有SCL的源文件,使用TIA博途打开后,程序块可能将加锁保护,这样就不能移植到S7-1500了。这里可能还需要在STEP7中将程序块中的代码复制过来并放到STL创建的程序块中,再执行平台的移植。
【五】后续的过程就是前面介绍的移植3步了,希望第二部编译没有问题,概率比较小。其实大部分问题就是数据类型的不匹配。在S7-300/400中使用STL编程从来不需要考虑数据类型的匹配问题,这可能就是问题的根源。在S7-1500中增强了数据类型的安全性,检查严格了,原来这样的编程不允许了。参考下图数据类型不匹配的问题。
(1)错误描述为:“运算符“*” 与“DInt” 和“Real”的数据类型不兼容。”程序中TIME_TO_DINT(#t)将“t”转化为DINT类型,而“M”是Real类型,这两个类型不能相乘。再看前面是REAL_TO_DINT,需要将“t”Zui终转换为Real类型,更改的程序如图8所示,感觉一直再转换。
(2)还有一类错误是程序框架错误,如下图所示:
(3)明明返回值“OVERRIDE”赋值了,怎么报无返回值呢?查看程序发现,返回值的赋值都是有条件的,如果条件都不成立怎么办?可能是一个随机值。再前面加一个初始化就可以了,下图所示:
【六】程序移植成功后,在项目树下是一个一个的S7-1500的PLC站点。需要将站点中的程序块存放到TIA博途的库中。例如在TIA博途中创建新的库,按照原库中的格式创建文件夹,将移植的程序块复制到相应的文件夹中,如下图所示。这样S7-300/400的库移植到S7-1500库的工作就完成了。