[西门子] S7-1500 MFP:一个给IT工程师玩的高端PLC

[复制链接]
查看44357 | 回复0 | 2024-1-25 13:54:46 | 显示全部楼层 |阅读模式
作者:赵建非 - 西门子数字化工业集团F&B技术能力中心

1. 概述


MFP - 多功能平台,有啥与众不同?

    查一下S7-1500样本就知道,S7-1518 MFP它所有指标,无论是内存、处理速度、连接资源,还是支持的轴数等等,都完胜其它型号,一句话,最高端的S7-1500 CPU

    采用实时系统和Linux系统双系统并行架构

    可执行C/C++代码

    可执行MATLAB / SIMULINK 开发的模型


那不就是工控界的 IT 工程师的高端玩具吗?


2. 开发及测试环境


    TIA portal V16 +

    ODK 1500S V2.5(集成eclipse,所有需要JRE(Java Runtime Env))

    visual studio 2019 (或者其他IDE)

    PLCSIM Advance V3.0+

    Chrome浏览器


3. 开发及测试过程
3.1 新建一个portal项目

    创建一个新项目,项目名称如:Test_C++_MFP

    添加一个1518MFP CPU



    对CPU进行属性配置
(1)启动web服务器
web服务器用于上传SO(共享对象)文件,关闭HTTPS,使用HTTP,新建用户,并赋予权限,设置密码



(2)设置IP地址
选择启用使用该端口IP访问web服务,IP地址要与PLCSIM advanced的虚拟网卡在一个网段内,否则无法仿真


(3)新建程序块
新建一个OB100(用于初始化),一个全局DB(用于存储数据)



(4)启动PLCSIM Advanced V3.0



(5)将Portal项目下载到PLCSIM Advanced V3.0



如果下载过程中出现报错,按照下图所示开启块编译时支持仿真功能



重新编译下载,应该能够成功下载,这时portal部分的准备工作就已经做好了。


3.2 新建一个ODK项目

当你安装好ODK1500S后,打开开始菜单中的Eclipse for ODK 1500S V2.5;创建项目







3.3 在ODK中编写C++代码


    模板文件目录树
    代码要写在src文件夹内,如果使用多文件编程,那么最终的启动文件就是Test_CPP_MFP.cpp,如果时单文件编程,那么程序要写在Test_CPP_MFP.cpp中。def下面的Test_CPP_MFP.odk中做接口定义。

    开发过程中,只需要关注这两个文件夹,其他位置都不在开发过程的考虑范围内。



    单文件编程
    (1) 在Test_CPP_MFP.cpp文件下
using namespace std; // 命名空间
void sum(int a, int b, int res); // 函数声明
void sum(int a, int b, int res){  // 函数定义
        res = a + b;
}
// 下面是重点 套用模板
ODK_RESULT TestSum (const ODK_INT32& num1, const ODK_INT32& num2, ODK_INT32& result, ODK_DOUBLE& myReal)
{
    sum(num1,num2,result); // 调用函数,传入实参
    return ODK_SUCCESS;
}



(2) 在Test_CPP_MFP.odk文件下
// 定义函数名和接口
ODK_RESULT TestSum([IN]    ODK_INT32    num1
                                 , [IN]    ODK_INT32    num2       
                 , [OUT]   ODK_INT32    result               
                 , [INOUT] ODK_DOUBLE   myReal);


对比.odk和.cpp文件你会发现他们直接的规律和套路

    多文件编程

按照C/C++常规方法创建.h头文件即可

3.4 打包



build成功后会出现下面的文件目录树
Test_CPP_MFP.scl 是portal导入外部源文件使用的;
Test_CPP_MFP.so 需要使用1518MFP的web client上传。



3.5 测试


    导入外部源文件



    选择scl文件后右键,选择从源生成块



    生成成功后出现下图所有的程序块目录,XX_load功能块代表加载;

    XX_unload功能块代表卸载;

    XX_TestSum功能块代表C++的程序,XX表示的是创建ODK项目时候的项目名称,本例中是Test_CPP_MFP



    上传SO文件




    调用程序

(1) OB100 里面调用load程序load的作用是加载web server中的so文件



(2) OB1 里面调用unload程序+C++编程的代码块unload的作用是卸载web server中的so文件







stautus为0表示调用成功

4 特别声明


    当你需要修改程序的时候,必须按照下面的步骤进行



先clean all 再build all 生成的so文件和scl文件就是更新后的程序

    当你更换SO文件后,需要按照下面的步骤进行

(1) 先将unload的req位置为1,随后再置为0;
(2) 重新启动CPU



往期回顾

更多精彩


    WinCC项目程序(水处理/废水处理/轮胎/饮料...)

    VoT - 博途V17放的一个大招

    大势所趋?- WinCC 虚拟化应用浅析

    自动语音播报WinCC报警消息

    通过Web Service与WinCC交互数据

    WinCC设备运行数据-日报表

    西门子WinCC Unified V16选型指南

    我定框架,你填内容 - HMI设计模板

    西门子全新一代人机交互系统: WinCC Unified

    WinCC与 S7-200 SMART的OPC通讯

    按图索数-WinCC中的“地图+数据”

    WinCC报警控制摄像头自动定位



公众号:  人机常情 WinCC

( 扫码关注 )
微信群:西门子TIA 社区
(加好友标注:姓名-单位)




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则