SFP光口通信控制电源

2023-10-31 04:10
文章标签 通信 控制 电源 sfp 光口

本文主要是介绍SFP光口通信控制电源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

千兆光电转换器测试

  • 0 首先拿到千兆光电转换器
  • 1 UDP设置值
    • 1.1 UDP帧格式
    • 1.2 UDP data
  • 2 接下来计划

首先在这要夸一下国产产品,现在的电子模块,标准电子元器件或者类似交换机、光电转换器这样的,国产真的是感觉不必国外的差,支持国产。
两天时间从淘宝上买下 就到了,非常的快捷。

0 首先拿到千兆光电转换器

产品如下图所示:
在这里插入图片描述

  • PC与光电转换器 网口连接以及光电转换器与电源光纤连接
    在这里插入图片描述

经过与客服上的技术支持 咨询,把光纤线连接如下,并ping通。电源的IP地址设置成192.168.0.100,PC上的IP地址设置成192.168.0.2;并成功ping通。
图片如下:
在这里插入图片描述

  • 指示灯状态说明
    其中光电转换器的指示灯状态说明如下:
    FX代表光纤连通,而FX右边的代表网口(电口)连通,上面1000代表1000M。
    以上说明物理层 以太帧这块基本没问题。

1 UDP设置值

  • 修改Demo例程
    通过之前的Python代码,把IP地址修改对应。
    需要根据技术手册把UDP帧格式搞懂
    根据向销售电源设备的技术支持询问,拿到一段Python代码并读懂,然后根据技术手册对UDP帧格式的说明,修改对应参数。
import socket
import struct # -----------------------------------------------------------------------------
# Parameters:
# -----------------------------------------------------------------------------
# IP地址应该要对应修改一下,变量声明HOST_IP = '192.168.0.2'
HOST_PORT = 28685   #端口自定义 DEST_IP = '192.168.0.100'#DEVICE_IP = '192.168.0.10'
#DEVICE_IP = '255.255.255.255'
DEVICE_PORT = 30721  #标准设备端口号
#RESP_TIMEOUT = 0.4# 是不是构建UDP格式
FAST_PROTOCOL_ID = 0x7631
COMMAND = 0xFFDD    # 这值设置的是不是有问题 
NONCE = 0x111122223333AAAAFAST_ADDR = 0xFFFF  # 地址值
SET_POINT = 6.0     #分别是MSB值 和LSB值 DUMMY_ADDR = 0xAACB
DUMMY_SET_POINT = -4012300012348754.123456789BROADCAST = True# -----------------------------------------------------------------------------
# Costants:
#data = b'\x43\x41\x45\x4E\x65\x6C\x73'   #CAENels
#data = b'\x12\x34'  
# Packet Header:# 把上面的帧打包成帧  对应UDP格式来进行打包
data = struct.pack('>H', FAST_PROTOCOL_ID) # Bin endian - unsigned short (16 bits - 2 bytes)
data += struct.pack('>H', COMMAND)         # Bin endian - unsigned short (16 bits - 2 bytes)
data += struct.pack('>Q', NONCE)           # Bin endian - unsigned long long (64 bits - 8 bytes)
# Packet data:
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT)   # 6 bytes
data += struct.pack('>Hf', FAST_ADDR, SET_POINT)   # Bin endian - unsigned short + float (2 bytes + 4 bytes)
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT)   # 6 bytes
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT)   # 6 bytes
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT)   # 6 bytes
data += struct.pack('>Hf', FAST_ADDR, SET_POINT)   # Bin endian - unsigned short + float (2 bytes + 4 bytes)
data += struct.pack('>Hf', DUMMY_ADDR, DUMMY_SET_POINT)   # 6 bytes# Broadcast socket configuration:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)    
s.settimeout(1.0)
s.bind((HOST_IP, HOST_PORT))s_recv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  
s_recv.settimeout(1.0)
s_recv.bind(('', DEVICE_PORT))# Send:
if (BROADCAST):s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.sendto(data, ('<broadcast>', DEVICE_PORT))
else:s.sendto(data, (DEST_IP, DEVICE_PORT))m = s_recv.recv(1024)
print("Recv:", m)# Close connections:
s.close()
s_recv.close()

1.1 UDP帧格式

UDP帧格式由:UDP header + UDP data 组成。
1.UDP header
UDP 头由 4 个字段组成,每个字段为 16 位。
UDP header = source port + destination port + length +checksum.

1.2 UDP data

The device Fast Address (ID) : 可以设置也可以读取
值是:65535 十六进制是:0XFFFF。
通过光纤可以进行设置数值,如下所示:
在这里插入图片描述

尝到成功的感觉了,有点兴奋,兴奋,兴奋。先兴奋半小时,接下来就是对变量和对数值的意义 进行搞清楚。现在是站在别人的肩膀上来实现成功了一下。

2 接下来计划

接下来自己尝试能不能FPGA尝试复现一下Python代码,用Verilog来重写描述一下。
方案:1. 首先是尽可能找到已有现成的FPGA实现Demo,阅读并加以理解。
2. 是看一下论文或者文章,了解一下这大致是个什么过程和实现原理
3. 修改测试一下,还是使用FPGA的网口连接电源。

这篇关于SFP光口通信控制电源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312714

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

【电机控制】数字滤波算法(持续更新)

文章目录 前言1. 数字低通滤波 前言 各种数字滤波原理,离散化公式及代码。 1. 数字低通滤波 滤波器公式 一阶低通滤波器的输出 y [ n ] y[n] y[n] 可以通过以下公式计算得到: y [ n ] = α x [ n ] + ( 1 − α ) y [ n − 1 ] y[n] = \alpha x[n] + (1 - \alpha) y[n-1]