施耐德开放自动化平台初体验(5)-硬件篇

 

               终于拿到了施耐德公司硬件PAC 产品M251MDESE 。以前对EcoStruxure Automation Expert 的测试都是基于软件SoftDPAC 的。总是有一种运行仿真软件的感觉,心中有点不踏实,现场还是要硬件设备解决问题。现在我终于见到能够运行IEC61499 的硬件DPAC了。这是我第一次看见的能运行IEC61499 的PAC。实际上它是在施耐德成熟的PLC硬件产品的基础上,通过软件升级成为IEC61499 PAC。这意味着它能够在现场高可靠运行,而且具有更多的IO模块可供选择。施耐德公司的EcoStruxure Automation Expert  系统让长期以来停留在学术领域的IEC61499 标准有机会走向在自动控制领域实际应用。正因为如此,我特别也期待EAE 的硬件产品的测试。

M251 简介

M251 是施耐德基于IEC61131-3 的PLC 产品。其中TM251MESE 型号是双口以太网的PLC 产品。

它的主要特点如下:

  •  带有2个端口的以太网交换机接口(ethernet1_1 和ethernet1_2),100M 速率,可以串联成分布式网络。
  • 带有另外一个以太网接口(ethernet 2),100M速率。可以连接现场总线。例如modbusTCP 。
  • 带有一个串行口和一个SD 卡座
  • 一个USB 插座,可以通过它更新固件和某些参数的设置。
  • 可以扩展TM3 /TM2系列的IO模块(右边),也可以扩展TM4 IO模块(左边)

相比我们头脑中传统PLC 的概念,M251这些特征透露出网络时代新一代PLC 的气息。我拿到的型号是TM251MDESE,其中的D大概是代表dPAC吧?

测试目的和方案

我主要测试两个方面:

1  通过Ethernet 2 连接一个modbusTCP 控制器上,实现modbusTCP 通信。

   这非常重要,意味着可以接入各种第三方远程IO模块,或者第三方的专用传感器,执行部件等。这意味着M251将称为一个IEC61499 网关,将无数非IEC61499 的设备瞬间具有了IEC499的能力。这是一件令人兴奋的事情。为此,我使用了一个自己原来研发的一个基于cortex-M 处理器的控制器modular-2 ,它采用Arm 公司的Mbed OS,具有一个Ethernet 网口。我为此编写了一个modbusTCP server 端程序(需要的读者可以私信分享)。相信许多的国产远程IO模块也能够方便地接入。

2 增加一个TM3DM8R-G 模块。测试数字IO 控制接口

 有了IO模块才更像PLC。但是施耐德公司提供给我的M251 没有带任何IO 模块,于是我自己在淘宝上买了一个TM3DM8R-G 模块,它具有4个24V的输入,4 个继电器输出。希望后面能接一些灯和开关,电机。构建一个应用场景。

测试床的框架如下图所示:

 

测试的过程

设置IP 地址

   第一件事情是要知道M251的IP 地址,几乎没有地方能找到M251的IP 出厂设置。我使用wireshark 软件检测它的IP ,具体的做法是打开wireshark ,选择ethernet。然后插拔一下网线,M251 会报一个IP 地址出来。经我们的测试,这台M251 的以太网IP 地址分别为:

  •   ethernet1  的IP 地址: 10.10.1.175
  •   ethernet 2 的IP 地址:10.11.1.176

ethernet 1 和ethernet 2 是隔离的,需要设置为两个网段。 下面我们会介绍通过EAE 软件也可以修改设备的Ethernet 1 的 IP 地址,而ethernet2 的IP 地址则需要通过 Automation Device Maintenance 软件才能够修改。这个软件可以在施耐德官网上免费下载。设置IP地址折腾了我一段时间,后来还是在施耐德工程师帮助下得以完全解决。

新建一个项目mtest

这个过程在我前面的博文中都有详细的描述,这里就不再絮叨。应用程序依然是最简单的功能块网络-一个计数器。

 

系统的拓扑图({physical Topology)

 

系统由交换机, M251和一个通用以太网现场设备 Generic Ethernet field device 构成,其中的通用以太网现场设备是一台基于低成本cortex-M Arm芯片的控制器,它运行Arm 公司的Mbed OS,我们在它上面编写了一个modbusTCP 的测试程序。你也可以连接一台PC 机,运行modbusTCP server 程序来测试。

下面是M251的 IP 地址的配置:

在这里我们修改了Ethernet 的IP 地址为192.168.31.175 .这要与M251 内部的IP地址一致。

注意:M251设备中的IP 地址要通过EAE 软件来设置,具体的做法如下:

鼠标点到左边Ethernet 1 的位置后击右键。弹出下面的子菜单:

选择 Set IP Address。然后会弹出:

这时你可以修改IPv4 address。然后按Apply 。修改IP地址之后,机器重新上电。

Ethernet 2 的地址可以使用Automation Device Maintenance 软件。这是一个设备维护软件,用来下载硬件的固件和修改某些参数。你可以使用它修改modbus TCP 的IP 地址。这里就不多描述。

添加modbus 和TM3DM8R-G 的硬件配置

添加modbus的Hardware CAT

在《施耐德开放自动化平台初体验(3)》已经有了描述。读者可以参考。再次提醒下面几点:

MODBUSGENTCPS 的属性中的IP 地址修改为外接modbusTCP 设备的IP 地址 10.11.1.100。

VAL_IN1_MODBUSGENTCPS和VAL_IN1_MODBUSGENTCPS 的ioevent 只能修改为cycle 。不能是requestread(我不知道这是为什么,需要进一步测试)

添加TM3DM8R-G模块 的Hardware CAT

打开HW_Configuration ,点击窗口上方的第一个图标 Add new master hardware CAT  ,然后弹出下面的窗口:

选择ST_IoTMx.BMTM3,在产生的项目上右键Add ,出现:

选择 :SE.IoTMx。TM3DM8R-G 模块。于是,HW_Configuration 的窗口变成为:

            在这个窗口中要填入“PLC_1"和”DOUT“ 。虽然它称为Value 实际上是一个符号连接(symbol link ),它是为这个硬件输出引脚定义了一个符号(名称)。

    App 中变量连接到硬件CAT  的符号连接

         BMTM3 CAT 不会像modbus 那样 通过mapping 在RES 中自动产生对应的SYMLINKMULTIVARSSRC功能块,需要手动地在App 中添加。

       在应用中,要使用一个符号连接多变量源功能块(SYMLINKMULTIVARSSRC) 或者符号连接多变量目标功能块(SYMLINKMULTIVARSDSR)来建立功能块网络中的数据与symbol link 的连接。这两个功能块在runtime.System 库中。在App 中添加了这个功能块后发现Value 带一个小红的x

这是因为VALUE 的类型为ANY ,可以通过interface 编辑,修改它的类型和数量。方法是击右键

      选择interface edit 。这时会出现下列对话框:

   第一行是Value的数量,可以增加,也可以将Any 改为UINT。这个功能还是比较贴心的。减少了IEC61499 功能块类型转换的麻烦(4diac 就是如此)。

适当的连线。

添加DPAC_FULLINIT 功能块

         完成了上面的功能块网络后,将应用部署到M251 中运行,发现程序运行正常,观察(watch )有关的数据也都能够看到正确的数据,但是令人遗憾的是M251 的硬件没有任何反应,Ethernet 2 没有发送ModbusTCP 数据帧,TIM3DM8R-G 也没有继电器的开关和信号灯闪烁。反复搞了很长时间,结果还是在施耐德上海公司的工程师给我了帮助,他提醒我要放置一个DPAC_FULLINIT功能块。这个功能块在SE>DPAC 库中。放上去以后,只要连一个INIT。

       OC_RETRIGGER 可以不用连接事件。然后下载下去后,modbusTCP 和TM3DM8R-G 都工作了。

结束语

   整整花了两天的时间,在施耐德公司工程师的指导下初步完成了 EcoStruxure Automation Expert   硬件 M251 PLC  应用测试。感谢施耐德公司的技术工程师们的帮助。他们总是能够在我山穷水尽时带来柳暗花明。

通过这个测试,我们更加能够体会到施耐德公司EcoStruxure Automation Expert 的魅力。在未来的工程中,只要使用像M251 这样成熟硬件的小型PLC 就可以实现一个IEC61499 分布式控制系统,由于采用了开放型现场控制协议,第三方的传感器,执行部件和远程IO模块也可以轻松地连接到IEC61499 网络中。 EcoStruxure Automation Expert使一个长期徘徊在实际应用系统之外的,孤芳自傲的IEC61499 标准走到了自动控制系统的现场。当然软件的逐步完善,文档,应用指南以及社区交流都非常重要。

下面我还将进一步地做细节的测试。也希望与正在测试EAE 软件的朋友做交流。

 

 

热门文章

暂无图片
编程学习 ·

C语言二分查找详解

二分查找是一种知名度很高的查找算法,在对有序数列进行查找时效率远高于传统的顺序查找。 下面这张动图对比了二者的效率差距。 二分查找的基本思想就是通过把目标数和当前数列的中间数进行比较,从而确定目标数是在中间数的左边还是右边,将查…
暂无图片
编程学习 ·

GMX 命令分类列表

建模和计算操作命令: 1.1 . 创建拓扑与坐标文件 gmx editconf - 编辑模拟盒子以及写入子组(subgroups) gmx protonate - 结构质子化 gmx x2top - 根据坐标生成原始拓扑文件 gmx solvate - 体系溶剂化 gmx insert-molecules - 将分子插入已有空位 gmx genconf - 增加…
暂无图片
编程学习 ·

一文高效回顾研究生课程《数值分析》重点

数值分析这门课的本质就是用离散的已知点去估计整体,就是由黑盒子产生的结果去估计这个黑盒子。在数学里这个黑盒子就是一个函数嘛,这门课会介绍许多方法去利用离散点最大化地逼近这个函数,甚至它的导数、积分,甚至微分方程的解。…
暂无图片
编程学习 ·

在职阿里5年,一个28岁女软测工程师的心声

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) ​ 编辑切换为居中…
暂无图片
编程学习 ·

字符串左旋c语言

目录 题目: 解题思路: 第一步: 第二步: 第三步: 总代码: 题目: 实现一个函数,可以左旋字符串中的k个字符。 例如: ABCD左旋一个字符得到BCDA ABCD左旋两个字符…
暂无图片
编程学习 ·

设计模式--观察者模式笔记

模式的定义与特点 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xf…
暂无图片
编程学习 ·

睡觉突然身体动不了,什么是睡眠痽痪症

很多朋友可能有这样的体验,睡觉过程中突然意识清醒,身体却动弹不了。这时候感觉非常恐怖,希望旁边有一个人推自己一下。阳光以前也经常会碰到这样的情况,一年有一百多次,那时候很害怕晚上到来,睡觉了就会出…
暂无图片
编程学习 ·

深入理解C++智能指针——浅析MSVC源码

文章目录unique_ptrshared_ptr 与 weak_ptrstd::bad_weak_ptr 异常std::enable_shared_from_thisunique_ptr unique_ptr 是一个只移型别(move-only type,只移型别还有std::mutex等)。 结合一下工厂模式,看看其基本用法&#xff…
暂无图片
编程学习 ·

@TableField(exist = false)

TableField(exist false) //申明此字段不在数据库存在,但代码中需要用到它,通知Mybatis-plus在做写库操作是忽略它。,.
暂无图片
编程学习 ·

Java Web day15

第十二章文件上传和下载 一、如何实现文件上传 要实现Web开发中的文件上传功能,通常需要完成两步操作:一.是在Web页面中添加上传输入项;二是在Servlet中读取上传文件的数据,并保存到本地硬盘中。 需要使用一个Apache组织提供一个…
暂无图片
编程学习 ·

【51nod 2478】【单调栈】【前缀和】小b接水

小b接水题目解题思路Code51nod 2478 小b接水 题目 输入样例 12 0 1 0 2 1 0 1 3 2 1 2 1输出样例 6解题思路 可以发现最后能拦住水的都是向两边递减高度(?) 不管两个高积木之间的的积木是怎样乱七八糟的高度,最后能用来装水的…
暂无图片
编程学习 ·

花了大半天写了一个UVC扩展单元调试工具

基于DIRECTSHOW 实现的,用的是MFC VS2019. 详见:http://www.usbzh.com/article/detail-761.html 获取方法 加QQ群:952873936,然后在群文件\USB调试工具&测试软件\UVCXU-V1.0(UVC扩展单元调试工具-USB中文网官方版).exe USB中文网 USB中文…
暂无图片
编程学习 ·

贪心(一):区间问题、Huffman树

区间问题 例题一:区间选点 给定 N 个闭区间 [ai,bi]请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N,表示区间数。 接下来 …
暂无图片
编程学习 ·

C语言练习实例——费氏数列

目录 题目 解法 输出结果 题目 Fibonacci为1200年代的欧洲数学家,在他的着作中曾经提到:「若有一只免子每个月生一只小免子,一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子…
暂无图片
编程学习 ·

Android开发(2): Android 资源

个人笔记整理 Android 资源 Android中的资源,一般分为两类: 系统内置资源:Android SDK中所提供的已经定义好的资源,用户可以直接拿来使用。 用户自定义资源:用户自己定义或引入的,只适用于当前应用的资源…
暂无图片
编程学习 ·

零基础如何在短时间内拿到算法offer

​算法工程师是利用算法处理事物的职业 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 如果一个算法有缺陷,或不适合于某个问题,执…
暂无图片
编程学习 ·

人工智能:知识图谱实战总结

人工智能python,NLP,知识图谱,机器学习,深度学习人工智能:知识图谱实战前言一、实体建模工具Protegepython,NLP,知识图谱,机器学习,深度学习 人工智能:知识图…
暂无图片
编程学习 ·

【无标题】

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…