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如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应