Profinet Driver(PNDriver)从V2.3开始支持IO设备(IOD)功能,支持通用网络接口和Linux操作系统,最小支持2ms的通讯周期。本文介绍如何编译PNDriver并运行在IOT2050上。

1. 编译PNDriver

因为PNDriver只支持32位模式,因此需要安装32位交叉编译环境。准备虚拟机(笔者的环境是VMWare + Ubuntu18.04),在虚拟机运行:

sudo apt-get install gcc-arm-linux-gnueabihf

sudo apt-get install g++-arm-linux-gnueabihf

在命令行中输入:arm-linux-gnueabihf-gcc --version 检查一下是否安装成功

将PNDriver源代码拷贝到虚拟机。

1)修改

/pn_driver/src/source/pnd/src/pnio_user_core/base/pnd_ValueHelper.cpp

将1279 行修改为:va_list argList, tmpList; //=LSA_NULL;

2)修改pn_driver/src/examples/lib/linux32_native/build/Makefile

将 gcc 修改为arm-linux-gnueabihf-gcc

将 g++ 修改为arm-linux-gnueabihf-g++

并且删除 -m32的编译选项如下:

CCFLAGS = -c -pthread $(REMOVE_WARNINGS) -O2 -Wall -fmessage-length=0 -fno-strict-aliasing -ffunction-sections -fdata-sections -Wl,--gc-sections -MMD

CXXFLAGS = -c -pthread $(REMOVE_WARNINGS) -O2 -Wall -fmessage-length=0 -fno-strict-aliasing -ffunction-sections -fdata-sections -Wl,--gc-sections -MMD -std=c++11

CCLINK   = -pthread $(REMOVE_WARNINGS) -O2 -Wall -fmessage-length=0 -fno-strict-aliasing -ffunction-sections -fdata-sections -Wl,--gc-sections -MD -MP

3)在pn_driver/src/examples/lib/linux32_native/build/路径下运行make

4)修改pn_driver/src/examples/iod/test_app_iod/linux32_native/build/Makefile

将 gcc 修改为arm-linux-gnueabihf-gcc

将 g++ 修改为arm-linux-gnueabihf-g++

并且删除 -m32的编译选项如下:

CCFLAGS = -c -pthread $(REMOVE_WARNINGS) -O2 -Wall -fmessage-length=0 -MMD

CCLINK   = -pthread $(REMOVE_WARNINGS) -O2 -Wall -fmessage-length=0 -MD -MP

5)在pn_driver/src/examples/iod/test_app_iod/linux32_native/build/路径下运行make

6)将pn_driver/src/examples/iod/test_app_iod/linux32_native/路径下的test_app_iod和PND_IOD.xml拷贝到IOT2050,例如/opt路径下

2. 准备运行环境

在IOT2050连接互联网的前提下,在IOT2050的命令行,依次输入如下命令:

apt-get update

dpkg --add-architecture armhf

apt-get update

apt-get install libc6:armhf

apt-get install libstdc++6:armhf

cd /opt

chmod +x test_app_iod

修改配置文件

vi /etc/sysctl.conf

在末尾添加:

net.ipv4.ip_local_port_range = 49152 59000

保存后运行:

sysctl -p /etc/sysctl.conf

3. 连接PLC

按照如下方式连接PLC,eno1作为PN接口,eno2作为普通以太网接口

在TIA中添加GSDML文件,位于pn_driver\src\engineering\GSDML,安装如下图所示的GSDML文件

在态中添加设备IOD-Linux native

分配控制器后如下图所示:

打开设备配置,添加如下模块:

默认的设备名称为:pnd-iod-linux-native

编译下载组态到PLC

在IOT2050的终端,在保存test_app_iod的路径下(例如 /opt)运行:

./test_app_iod

输入2:并选择eno1

输入5 (Open Device)

输入10,再选择 1(Activate Device)

这样IO设备就启动起来了

通过TIA分配设备名称。

在IOT2050的终端可以看到PLC建立连接的信息

在线看一下,PN设备正常连接上了

如何使IOT2050成为PN设备相关推荐

  1. 计算机移动设备有限公司,使计算机,移动设备更节能

    计算机的缓存是存储器的一部分,其中存储经常使用的项目以加速处理. 例如,如果您经常访问手机上的相同网站,您的手机可能会保存有关这些网站的信息,因此您的浏览器或应用每次都不需要重新下载. 亚利桑那大学电 ...

  2. oracle中的脱机与联机,使存储池中的设备联机和脱机

    使存储池中的设备联机和脱机 使用 ZFS 可使单个设备脱机或联机.硬件不可靠或无法正常工作时(假定该情况只是暂时的),ZFS 会继续对设备读写数据.如果该情况不是暂时的,您可以指示 ZFS 通过使设备 ...

  3. 多个蓝牙缺陷可使攻击者假冒合法设备

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 攻击者可滥用从 Bluetooth Core 和 Mesh Profile 标准中发现的多个漏洞在配对过程中模拟合法设备并发动中间人攻击. ...

  4. 【转】使IFRAME在iOS设备上支持滚动

    原文链接:Scroll IFRAMEs on iOS 原文日期: 2014年07月02日  翻译日期: 2014年07月10日 翻译人员:铁锚 很长时间以来, iOS设备上Safari中超出边界的元素 ...

  5. 部署SNMP使网管与设备通信,配置关于TCP测试NQA的配置案例

    一.部署SNMP 组网需求:通过部署RouterA由NMS网管设备管理用于监控网络是否畅通和业务是否正常.为了保证NMS和RouterA之间有一个数据传输安全.接入方式灵活.链路传输可靠的网络,并且可 ...

  6. 使IFRAME在iOS设备上支持滚动

    原文链接: Scroll IFRAMEs on iOS 原文日期: 2014年07月02日  翻译日期: 2014年07月10日 翻译人员: 铁锚 很长时间以来, iOS设备上Safari中超出边界的 ...

  7. 嵌入式linux仪器,一种基于嵌入式Linux设备双系统的启动方法

    一种基于嵌入式Linux设备双系统的启动方法 [技术领域] [0001]本发明涉及一种基于嵌入式Linux设备双系统的启动方法. [背景技术] [0002]Linux操作系统特别是其嵌入式系统由于其源 ...

  8. 弹出硬盘时应用程序阻碍停用设备_7GB硬盘空间被Win 10“偷走”?微软系统的这些“潜规则”你掌握了吗?...

    01 找回被系统"偷走"的硬盘空间 分区较小的Windows 10的用户经常会遇到磁盘空间不足的问题,虽然微软一直允许用户在存储空间有限的设备上运行Windows 10,但2019 ...

  9. 远程计算机串口控制软件,智能控制的设备上使用远程开关需要用到RS485串口继电器、网关、电脑平台...

    原标题:智能控制的设备上使用远程开关需要用到RS485串口继电器.网关.电脑平台 方案需求 对于设备的远程联网自动化场景来说,避免不了的是自动化开关,以往传统的改造难度大,成本高,整套换掉的可能性不大 ...

最新文章

  1. SQL2008错误:当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)。...
  2. 密位测距离口诀_电气故障怎么查?最新最全的79条电气故障诊断口诀
  3. java开发中实际遇到的问题总结_内行总结:装修中最容易遇到的16个问题及其解决方式!...
  4. java读取gxk文件,Java中常见的IO流及其使用
  5. JS module的导出和导入
  6. BZOJ 1503 郁闷的出纳员 Splay
  7. linux由哪些部分组成,linux内核处于什么位置?,Linux由几部分组成?Linux系统结构介绍!...
  8. 数字孪生智慧高铁研究案例
  9. 硬盘分区时GPT和MBR的区别/选择
  10. git的版本回溯(git想要退回到之前写过的某一个版本)
  11. 记住看小电影前一定要检查网址是不是 HTTPS 的,不然…
  12. 伽罗瓦2^8域下模多项式求逆python(查表)实现
  13. Sklearn 中的可用数据集
  14. mysql 语法 日期转换成字符串_mysql日期转换成字符串的方法
  15. 2019考研 | 天津大学计算机专硕初试394分考研经历与经验总结(初试)
  16. python判别性别的代码_学习文章—(Python实践)Python实现手机号自动判断男女性别...
  17. vbnet加载ocx控件不能生成窗体_解决VB6.0中不能加载MSCOMCTL.OCX的错误提示
  18. CG学习prepare
  19. pgsql报错:User query might have needed to see row versions that must be removed.
  20. 关于LeetCode每日一题打卡失败的感悟

热门文章

  1. c语言强制写注册表,:注册表的认识以及用c语言编写一个“百分之一熊猫烧香”...
  2. 实用计算机快捷键,这9个超实用电脑快捷键技巧,你应该知道!
  3. 简单来看看什么是侧信道攻击
  4. 2022.01.16 求最小公约数和最大公倍数、加循环
  5. draggable 和 sortable的JS原生实现
  6. RFID卡的实现流程
  7. 如何使用cad迷你看图导出bmp?
  8. Python:类与结构体
  9. PMP考试流程是怎么样的?
  10. mtk平台 mt_usb设备以及otg初始过程