EtherNet/IP开发:C++开发CIP源代码

这篇具有很好参考价值的文章主要介绍了EtherNet/IP开发:C++开发CIP源代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

① 介绍一下CIP

CIP是一种考虑到自动化行业而设计的通用协议。然而,由于其开放性,它可以并且已经应用于更多的领域。CIP网络库包含若干卷:

第1卷介绍了适用于所有网络自适应的CIP的常见方面。本卷包含通用对象库和设备配置文件库,以及通信模型、设备配置和CIP数据管理的一般说明。本卷还定义了一个辅助配电系统,该系统对CIP的所有改造都是通用的。

-第2卷是CIP的EtherNet/IP适配,描述了CIP如何适配到以太网TCP/IP和UDP/IP传输层。它还包含第1卷中EtherNet/IP所需材料的任何扩展,如可选的工业物理层和连接器。

-第3卷是CIP的DeviceNet适配,描述了CIP如何适配到CAN数据链路层。它还包含DeviceNet所需的对第1卷中材料的任何扩展。

-第4卷是CIP的ControlNet适配,描述了CIP如何适配到ControlNet数据链路层。它包含ControlNet数据链路层的完整描述以及ControlNet所需的第1卷中材料的任何扩展。

-第5卷为CIP安全。它包含在CIP网络上实施CIP安全协议所需的信息。

第6卷是CIP的CompoNet适配,描述了CIP如何适配到CompoNet数据链路层。它包含了对CompoNet数据链接层的完整描述,以及对第1卷中材料的任何扩展,这些都是CompoNet所必需的。

-第7卷是Modbus设备与CIP体系结构的集成。本卷描述了将Modbus设备集成到CIP世界的标准。

资料下载和源代码

www.jngbus.com 广州金南瓜科技

EtherNet/IP开发:C++开发CIP源代码,tcp/ip,c++,网络,ethernetip

② 上代码

C++处理CIP这块内容

代码写完,还需要大量PLC和EtherNet\IP模块测试

EtherNet/IP开发:C++开发CIP源代码,tcp/ip,c++,网络,ethernetip

CResult CCipHandle::SendData(EncapsulationHeader* pHeader, const char* pData, int nSize)
{
	int nAllSize = ENCAPSULATION_HEADER_SIZE + nSize;

	// 使用缓存,避免次次都创建内存
	vLocker lock(&m_syncSend);
	m_pSendDataBuffer.SetSize(nAllSize);
	unsigned char* pBuffer = (unsigned char*)m_pSendDataBuffer.GetString(); 
	if (pBuffer == NULL)
	{
		return CResult(EIP_MALLOC_FAIL, GetLanguage(EIP_MALLOC_FAIL));
	}

	// 处理转换
	SetShortLH(pHeader->nCommand, pBuffer);
	SetShortLH(pHeader->nLength, pBuffer + 2);
	SetIntLH(pHeader->nSessionID, pBuffer + 4);
	SetIntLH(pHeader->nStatus, pBuffer + 8);
	SetInt64LH(pHeader->nSenderContext, pBuffer + 12);
	SetIntLH(pHeader->nStatus, pBuffer + 20);
	memcpy(pBuffer + ENCAPSULATION_HEADER_SIZE, pData, nSize);

	// 发送数据
	return m_pCommHandle.SendData((char*)pBuffer, nSize);
}

数据大小端处理

EtherNet/IP开发:C++开发CIP源代码,tcp/ip,c++,网络,ethernetip文章来源地址https://www.toymoban.com/news/detail-814441.html



unsigned int GetIntLH(const unsigned char* pData)
{
	__int64 nNum = 0;
	nNum = pData[0];
	nNum += (((int)pData[1]) << 8) & 0xFF00;
	nNum += (((int)pData[2]) << 16) & 0xFF0000;
	nNum += (((int)pData[3]) << 24) & 0xFF000000;
	return (unsigned int)nNum;
}



void SetShortLH(__int64 nNum, unsigned char* pData)
{	
	pData[0] = nNum & 0xFF;
	pData[1] = (nNum >> 8) & 0xFF;
}


void SetIntLH(__int64 nNum, unsigned char* pData)
{	
	pData[0] = nNum & 0xFF;
	pData[1] = (nNum >> 8) & 0xFF;
	pData[2] = (nNum >> 16) & 0xFF;
	pData[3] = (nNum >> 24) & 0xFF;
}

到了这里,关于EtherNet/IP开发:C++开发CIP源代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络程序设计实验:TCP/IP协议栈源代码分析

    深入理解TCP/IP协议栈的源代码结构和功能,探究其与上层套接口和下层数据链路层的关联方式。 分析TCP的三次握手过程,理解其状态转换和数据传输机制。 掌握send和recv操作在TCP/IP协议栈中的执行路径,探究其与上层应用程序的交互方式。 了解路由表、ARP缓存以及IP到MAC地址

    2024年02月03日
    浏览(64)
  • 网络程序设计实验-TCP/IP协议栈源代码分析

    ​ inet_init代码如下: 调用inet_init的过程中,涉及到的函数如下: 1. start_kernel: start_kernel 是Linux内核的启动函数,定义在 init/main.c 文件中。 在启动过程中,首先执行 start_kernel ,这个函数负责进行内核的初始化工作。 2. rest_init: 在 start_kernel 中,会调用 rest_init 函数,该函数的

    2024年02月03日
    浏览(70)
  • Linux内核中的TCP/IP协议栈源代码分析

    目录 背景知识-Linux源码简介 TCP/IP协议栈相关问题 inet_init是如何被调用的?从start_kernel到inet_init调用路径 1.start_kernel(): 2.inet_init() : 3.fs_initcall() 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? TCP的三次握手源代码跟踪分析,跟踪找出设置和发

    2024年02月02日
    浏览(68)
  • 网络程序设计专题实验:TCP/IP协议栈源代码分析

    inet_init是如何被调用的?从start_kernel到inet_init调用路径 跟踪分析TCP/IP协议栈如何将自己与上层套接口与下层数据链路层关联起来的? TCP的三次握手源代码跟踪分析,跟踪找出设置和发送SYN/ACK的位置,以及状态转换的位置 send在TCP/IP协议栈中的执行路径 recv在TCP/IP协议栈中的执

    2024年02月02日
    浏览(68)
  • TCP/IP协议栈源代码分析:GDB调试环境搭建及源码分析

    Ubuntu 22.04 LTS Linux-5.4.34 busybox-1.36.0 2.1 安装相关工具 axel是一款多线程下载工具,用于下载Linux内核源代码及其他大文件;build-essential软件包里面包含了很多开发必要的软件工具,比如make、gcc等;QEMU是一种通用的开源计算机仿真器和虚拟器,为自己编译构建的Linux系统运行提供

    2024年02月03日
    浏览(60)
  • 使用CIP采集欧姆龙EtherNet/IP从入门到精通

    本文将会从以下几个方面介绍 1.CIP是什么 2.EtherNet/IP通信是什么 3.CIP通信报文解析 4.使用CIP常用的方法和功能介绍(UCMM) 5.自己封装了一个类,只要知道标签名称,和数据类型即可读写数据 6.demo展示 1.CIP是什么         CIP通信是Common Industrial Protocl(CIP)的简称,它是一个点

    2024年04月08日
    浏览(55)
  • 欧姆龙NJ/NX系列PLC 基于以太网的CIP通讯(EtherNet/IP)

    CIP (Common Industrial Protocol, 通用工业协议) 是由 ODVA组织提出并维护的具有增强服务的自动化通讯协议。是一种使用生产者-消费者通信模型的与媒体无关的协议,并且是上层的严格面向对象的协议。每个CIP对象都有属性(数据)、服务(命令)、连接和行为(属性值和服务之间

    2024年01月22日
    浏览(73)
  • 0基础开发EtherNet/IP:协议格式,JAVA、C#、C++处理

    经过一阵倒腾,把CIP、Ethernet/ip协议搞到手 协议的概念和理论就不提及了,上网随便一搜索EtherNet/IP遍地都是。 直接将协议关键点列举出来吧。 更多协议资料 www.jngbus.com 通讯软件群 30806722 这里讲解的是TCP和UDP协议的格式,EtherNet/IP数据所处位置。 ① 具体内容需要大家自己进

    2024年01月21日
    浏览(40)
  • ETHERNET/IP转TCP/IP网关tcp/ip协议包含哪几层

    大家好,今天我们将带大家了解一款自主研发的通讯网关,远创智控YC-EIP-TCP/IP。这是一个强大的工具,能帮助我们将ETHERNET/IP网络和TCP/IP网络连接在一起,让我们更好地管理和监控网络。 1, 首先,让我们来看看这款网关的主要功能。它能够将ETHERNET/IP网络和TCP/IP网络连接起来

    2024年02月16日
    浏览(52)
  • EtherNET/IP转Mpdbus Tcp协议网关协议

    JM-EIP-TCP 是一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 MODBUS-TCP 设备接入到 ETHERNET/IP 网络中。 本网关连接到 ETHERNET/IP 总线中做为从站使用,连接到 MODBUS-TCP 总线中做为主站(客户端)或从站(服务器)使用。 1.1. ETHERNET/IP 技术参数 ● 网关做为 ETHERNET/IP 网

    2024年02月06日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包