PROFINET的GSD文件描述

2023-11-16

目录

一、基础介绍:

二、文件命名:

三、文件结构:

 1、根元素:ISO15745Profile

 2、行规头部:ProfileHeader

3、行规体: ProfileBody

3.1、设备标识:DeviceIdentity

3.2、设备功能:DeviceFunction

3.3、应用处理:ApplicationProcess

3.3.2、模块列表:ModuleList

3.3.3、值列表:ValueList

3.3.6、图形列表:GraphicsList

3.3.7、分类列表:CategoryList

3.3.8、外部文本列表:ExternalTextList

附录1:分配ID前缀列表

参考资料:


一、基础介绍:

        1、作用:用来描述PROFINET设备的功能,包含与工程相关的和设备数据交换相关的数据。

        2、描述语言:GSDML(通用站描述标记语言),是一种基于国际标准的PROFINET行业规范,与XML(可扩展标记语言)本身无关,使用标准的XML解析器可解析PROFINET的GSD文件。

        3、内容:描述与通信相关的参数Parameter;通过DAP(Device Access Points-设备访问点)的定义描述整个设备族;描述与模块(Modules)相关的信息,并用于已定义的DAP

二、文件命名:

        PROFINET的GSD文件采用XML语言描述,后缀名为xml。按照约定,PROFINET I/O设备的GSD文件应遵循如下的命名规则:

GSDML-[架构版本]-[制造商名称]-[设备族名称]-[GSD发布日期].xml

下面是一个GSDML文件名示例: 

GSDML-V2.31-Renesas-TPS1-Template-20170222.xml

 

1、架构版本:该版本标识符必须与文件名GSDML-设备行规-[架构版本].xsd的版本标识符一致;

xsi:schemaLocation="http://www.profibus.com/GSDML/2003/11/DeviceProfile ..\xsd\GSDML-DeviceProfile-V2.31.xsd"

2、制造商名称:该名称允许使用连字符和空格。为了防止不同的设备制造商生成相同的文件名,推荐使用PNO-ID(VendorID)作为名称中的一部分,但貌似很多厂家都没有接受这种建议;

3、设备族名称:定义在GSDML中描述的设备族,在该名称中允许使用连字符和空格;

<Family MainFamily="I/O" ProductFamily="Renesas TPS-1 solution board"/>

        很显然瑞萨TPS-1评估板命名与设备族名称不一致,推荐使用ProductFamily作为设备族名称。

4、GSD发布日期:必须以"yyyymmdd"来指定。

三、文件结构:

        GSD文件基于ISO 15745,由行规头部(Profile Header)行规体(Profile Body)组成。

<!--XML特殊声明:文档的声明必须写在第一行第一列-->
<?xml version="1.0" encoding="UTF-8"?>
​
<!--xml:代表此文件是XML文件;
version=“1.0”:代表此文件用的是XML1.0标准;
encoding=“UTF-8”:代表此文件所用的字符集,默认值为utf-8。-->

 以下图表中1,0..1表示的意思如下表格:

 1、根元素:ISO15745Profile

<!--示例-->
<ISO15745Profile xmlns="http://www.profibus.com/GSDML/2003/11/DeviceProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.profibus.com/GSDML/2003/11/DeviceProfile ..\xsd\GSDML-DeviceProfile-V2.31.xsd">
    ...
</ISO15745Profile>

 

1、xmlns:表明元素ISO15745Profile的默认命名空间;

2、xmlns:xsi:表明XSD文件的命名空间;

3、xsi:schemaLation:指明XSD文件的路径,不同架构版本的xsd路径不同。

xsi:schemaLocation="http://www.profibus.com/GSDML/2003/11/DeviceProfile ..\xsd\GSDML-DeviceProfile-V2.31.xsd"
xsi:schemaLocation="http://www.profibus.com/GSDML/2003/11/DeviceProfile ..\xsd\GSDML-DeviceProfile-V2.4.xsd"

 2、行规头部:ProfileHeader

        规则头以ProfileHeader元素标记,包括了规则的标识、版本、名称、及ISO15745的相关信息,这个一般不怎么会改变,所以没有对具体内容进行说明。

<!--示例-->
<ProfileHeader>
    <ProfileIdentification>PROFINET Device Profile</ProfileIdentification>
    <ProfileRevision>1.00</ProfileRevision>
    <ProfileName>Device Profile for PROFINET Devices</ProfileName>
    <ProfileSource>PROFIBUS Nutzerorganisation e. V. (PNO)</ProfileSource>
    <ProfileClassID>Device</ProfileClassID>
    <ISO15745Reference>
        <ISO15745Part>4</ISO15745Part>
        <ISO15745Edition>1</ISO15745Edition>
        <ProfileTechnology>GSDML</ProfileTechnology>
    </ISO15745Reference>
</ProfileHeader>

3、行规体: ProfileBody

        规则体包含了PROFINET I/O设备(子站)的实际数据,由三个部分组成:

1、Device Identity(设备标识块):包含了用于确认该设备的标识信息;

2、Device Function(设备功能块):包含了用于描述设备功能的数据;

3、Application Process(应用过程块):这是整个通用站描述文件的主要部分,包含了设备访问点列表、模块列表、子模块列表、值列表等PROFINET I/O设备的数据。

3.1、设备标识:DeviceIdentity

         包括了该PROFINET I/O设备的供应商ID、设备ID及描述等信息。

<!--示例-->
<DeviceIdentity VendorID="0x02C7" DeviceID="0x1234">
    <InfoText TextId="TOK_DevIdent_InfoText"/>
    <VendorName Value="Renesas Electronics"/>
</DeviceIdentity>

1、VendorID(供应商标识):16Bit,由制造商向PI协会申请授权;

2、DeviceID(设备标识):16Bit,用于IO现场设备的详细区分,由制造商定义,不需要向PI协会申请授权;

3、InfoText(描述信息):用于描述产品信息;

4、VendorName(供应商名字):可以自己修改,根据公司名字填写。

3.2、设备功能:DeviceFunction

<!--示例-->
<DeviceFunction>
    <Family MainFamily="I/O" ProductFamily="Renesas TPS-1 solution board"/>
</DeviceFunction>

 

  1. MainFamily(主系列):可选项Drives,Encoders,Gateway,I/O,Sensors
  2. ProductFamily(产品系列):可以自己修改。

3.3、应用处理:ApplicationProcess

        包括了设备访问点列表,模块列表,子模块列表,值列表,通道诊断列表,单元诊断列表,图形列表,分类列表,外部文本列表。

 3.3.1、设备访问点列表:DeviceAccessPointList

 

        DeviceAccessPointItem,这部分是PROFINET I/O设备访问接口的描述,可以理解为分布式I/O的接口模块,一个GSD文件中可以包括多个接口模块的描述。 

<!--示例-->
<DeviceAccessPointList>
    <!--0.DeviceAccessPointItem-->
    <DeviceAccessPointItem ID="DAP 3" PhysicalSlots="0..64" ModuleIdentNumber="0x00000003" MinDeviceInterval="4" ImplementationType="ERTEC200P" DNS_CompatibleName="Hengxin-PN-w200" FixedInSlots="0" ObjectUUID_LocalIndex="1" MultipleWriteSupported="true" SharedDeviceSupported="true" DeviceAccessSupported="true" NumberOfDeviceAccessAR="1" MaxSupportedRecordSize="8192" NameOfStationNotTransferable="true" ParameterizationSpeedupSupported="true" LLDP_NoD_Supported="true" ResetToFactoryModes="2" CheckDeviceID_Allowed="true" PowerOnToCommReady="490" IOXS_Required="false" RequiredSchemaVersion="V2.31" PNIO_Version="V2.31" AddressAssignment="LOCAL;DCP">
        <!--1.ModuleInfo-->
        <ModuleInfo CategoryRef="ID_IO_Module">
            <Name TextId="TOK_Standard_MRP"/>
            <InfoText TextId="TOK_ModInfo_InfoTextId_DAP3"/>
            <VendorName Value="NingBo HengXin"/>
            <OrderNumber Value="Hengxin-PN-w200-v1.0"/>
        </ModuleInfo>
        <!--2.CertificationInfo-->
        <CertificationInfo ConformanceClass="C" ApplicationClass="Isochronous;HighPerformance" NetloadClass="III"/>
        <!--3.SubslotList-->
        <SubslotList>
            <SubslotItem SubslotNumber="32768" TextId="TOK_Subslot_8000"/>
            <SubslotItem SubslotNumber="32769" TextId="TOK_Subslot_8001"/>
            <SubslotItem SubslotNumber="32770" TextId="TOK_Subslot_8002"/>
        </SubslotList>
        <!--4.IOConfigData-->
        <IOConfigData MaxInputLength="2048" MaxOutputLength="2048"/>
        <!--5.UseableModules-->
        <UseableModules>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_Weight"        AllowedInSlots="1" FixedInSlots="1"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_Status"        AllowedInSlots="2" FixedInSlots="2"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_Gross_Weight"  AllowedInSlots="3" FixedInSlots="3"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_Flow"          AllowedInSlots="4" FixedInSlots="4"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_Division"      AllowedInSlots="5" FixedInSlots="5"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Read_FullScale"     AllowedInSlots="6" FixedInSlots="6"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Write_Division"     AllowedInSlots="7" FixedInSlots="7"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Write_FullScale"    AllowedInSlots="8" FixedInSlots="8"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Write_Status"       AllowedInSlots="9" FixedInSlots="9"/>
            <ModuleItemRef ModuleItemTarget="ID_Mod_Write_Calibration"  AllowedInSlots="10" FixedInSlots="10"/>
        </UseableModules>
        <!--6.VirtualSubmoduleList-->
        <VirtualSubmoduleList>
            <VirtualSubmoduleItem ID="DAP 3" SubmoduleIdentNumber="0x0001" Writeable_IM_Records="1 2 3 4" IM5_Supported="true" MayIssueProcessAlarm="false">
                <IOData/>
                <ModuleInfo>
                    <Name TextId="TOK_Standard_MRP"/>
                    <InfoText TextId="TOK_ModInfo_InfoTextId_DAP3"/>
                </ModuleInfo>
            </VirtualSubmoduleItem>
        </VirtualSubmoduleList>
         <!--7.SystemDefinedSubmoduleList-->
        <SystemDefinedSubmoduleList>
            <InterfaceSubmoduleItem ID="IDS_3I" SubslotNumber="32768" SubmoduleIdentNumber="0x0002" IsochroneModeSupported="true" IsochroneModeInRT_Classes="RT_CLASS_3" SupportedRT_Classes="RT_CLASS_1;RT_CLASS_3" TextId="TOK_DAP_InterfaceModule" SupportedProtocols="SNMP;LLDP" NetworkComponentDiagnosisSupported="true" PTP_BoundarySupported="true" DCP_BoundarySupported="true" MulticastBoundarySupported="true" DCP_HelloSupported="true" MaxFrameStartTime="1600" MinNRT_Gap="960" DelayMeasurementSupported="true" Writeable_IM_Records="1 2 3 4" IM5_Supported="true">
                <RT_Class3Properties ForwardingMode="Absolute;Relative" MaxBridgeDelay="2088" MaxBridgeDelayFFW="1024" MaxRangeIR_FrameID="1024" MaxNumberIR_FrameData="1024" StartupMode="Legacy;Advanced" MaxDFP_Frames="1" MaxDFP_Feed="340" AlignDFP_Subframes="false" FragmentationType="Dynamic" MaxRedPeriodLength="4000" MinFSO="1760" MinRTC3_Gap="1120" MinYellowTime="10240" YellowSafetyMargin="160" DFP_OutboundTruncationSupported="false" MaxRetentionTime="30000"/>
                <SynchronisationMode SupportedRole="SyncSlave" MaxLocalJitter="300" T_PLL_MAX="1000" SupportedSyncProtocols="PTCP" PeerToPeerJitter="250"/>
                <ApplicationRelations NumberOfAR="4" StartupMode="Legacy;Advanced" NumberOfAdditionalInputCR="0" NumberOfAdditionalMulticastProviderCR="0" NumberOfAdditionalOutputCR="0" NumberOfMulticastConsumerCR="0" PullModuleAlarmSupported="true">
                    <TimingProperties ReductionRatio="1 2 4 8 16 32 64 128 256 512" SendClock="8 16 32 64 128"/>
                    <RT_Class3TimingProperties ReductionRatioPow2="2 4 8 16" SendClock="4 6 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120 124 128" ReductionRatio="1"/>
                </ApplicationRelations>
                <MediaRedundancy SupportedRole="Client" MRPD_Supported="true"/>
            </InterfaceSubmoduleItem>
            <PortSubmoduleItem ID="IDS_3P1" SubslotNumber="32769" SubmoduleIdentNumber="0x0003" TextId="TOK_Port1" MaxPortRxDelay="198" MaxPortTxDelay="6" IsDefaultRingport="true" MAUType="100BASETXFD" MAUTypes="16" PortDeactivationSupported="true" LinkStateDiagnosisCapability="Up+Down" ShortPreamble100MBitSupported="true" CheckMAUTypeSupported="true" CheckMAUTypeDifferenceSupported="true" Writeable_IM_Records="1 2 3 4" IM5_Supported="true">
                <MAUTypeList>
                    <MAUTypeItem Value="16" AdjustSupported="true"/>
                </MAUTypeList>
            </PortSubmoduleItem>
            <PortSubmoduleItem ID="IDS_3P2" SubslotNumber="32770" SubmoduleIdentNumber="0x0003" TextId="TOK_Port2" MaxPortRxDelay="198" MaxPortTxDelay="6" IsDefaultRingport="true" MAUType="100BASETXFD" MAUTypes="16" PortDeactivationSupported="true" LinkStateDiagnosisCapability="Up+Down" ShortPreamble100MBitSupported="true" CheckMAUTypeSupported="true" CheckMAUTypeDifferenceSupported="true" Writeable_IM_Records="1 2 3 4" IM5_Supported="true">
                <MAUTypeList>
                    <MAUTypeItem Value="16" AdjustSupported="true"/>
                </MAUTypeList>
            </PortSubmoduleItem>
        </SystemDefinedSubmoduleList>
        <!--8.Graphics-->
        <Graphics>
            <GraphicItemRef Type="DeviceSymbol" GraphicItemTarget="ID_Graph_3"/>
        </Graphics>
    </DeviceAccessPointItem>
</DeviceAccessPointList>

3.3.2、模块列表:ModuleList

 

        该部分是PROFINET I/O设备中包含的模块的描述,它可以是一种可选择插入的模块(比如模块化的I/O设备),也可以是一种永久集成在I/O设备中的模块。

        ModuleItem,这部分是PROFINET I/O设备模块的描述,一个GSD文件中可以包括多个设备模块的描述。

<!--示例1-->
<ModuleList>
    <ModuleItem ID="ID_Mod_Read_Weight" ModuleIdentNumber="0x00001001">
        <!--1.ModuleInfo-->
        <ModuleInfo>
            <Name TextId="TOK_Mod_Read_Weight"/>
            <InfoText TextId="TOK_Info_Read_Weight"/>
        </ModuleInfo>
        <!--2.VirtualSubmoduleList-->
        <VirtualSubmoduleList>
            <VirtualSubmoduleItem ID="1001" SubmoduleIdentNumber="0x0001" FixedInSubslots="1" API="0" MayIssueProcessAlarm="false">
                <IOData>
                    <Input Consistency="All items consistency">
                        <DataItem DataType="Unsigned32" TextId="TOK_Read_Weight" UseAsBits="false"/>
                    </Input>
                </IOData>
                <ModuleInfo>
                    <Name TextId="TOK_Mod_Read_Weight"/>
                    <InfoText TextId="TOK_Info_Read_Weight"/>
                </ModuleInfo>
                <PROFIenergy ProfileVersion="V1.0"/>
            </VirtualSubmoduleItem>
        </VirtualSubmoduleList>
    </ModuleItem>
</ModuleList>
 <!--示例2-->
<ModuleList>
    <ModuleItem ID="ID_Mod_ControlStatus" ModuleIdentNumber="0x00001901">
        <!--1.ModuleInfo-->
        <ModuleInfo>
            <Name TextId="TOK_TextId_ControStatus"/>
            <InfoText TextId="TOK_InfoTextId_ControlStatus"/>
        </ModuleInfo>
        <!--2.VirtualSubmoduleList-->
        <VirtualSubmoduleList>
            <VirtualSubmoduleItem ID="1901" SubmoduleIdentNumber="0x0001" FixedInSubslots="1" API="0" MayIssueProcessAlarm="false">
                <IOData>
                </IOData>
                <RecordDataList>
                    <ParameterRecordDataItem Index="1" Length="8" TransferSequence="0">
                        <Name TextId="TOK_GeneralParm"/>
                        <Const Data="0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00" ByteOffset="0"/>
                        <Ref ValueItemTarget="Modbus_Write_Mode" DataType="Bit" ByteOffset="0" BitOffset="3" DefaultValue="0" AllowedValues="0..1" Changeable="true" Visible="true" TextId="IDT_MODBUS_WRITE_MODE"/>
                        <Ref ValueItemTarget="Retans_En" DataType="Bit" ByteOffset="0" BitOffset="7" DefaultValue="0" AllowedValues="0..1" Changeable="true" Visible="true" TextId="IDT_RETANS_EN"/>
                        <Ref ValueItemTarget="Modbus_Baudrate" DataType="Unsigned8" ByteOffset="1" BitOffset="0" DefaultValue="15" AllowedValues="11 13 15 16 17 18 19 20" Changeable="true" Visible="true" TextId="IDT_MODBUS_BAUDRATE"/>
                        <Ref ValueItemTarget="Modbus_DataLen" DataType="Unsigned8" ByteOffset="2" BitOffset="0" DefaultValue="8" AllowedValues="8" Changeable="true" Visible="true" TextId="IDT_MODBUS_DATALEN"/>
                        <Ref ValueItemTarget="Modbus_Parity" DataType="Unsigned8" ByteOffset="3" BitOffset="0" DefaultValue="0" AllowedValues="0..2" Changeable="true" Visible="true" TextId="IDT_MODBUS_PARITY"/>
                        <Ref ValueItemTarget="Modbus_StopBit" DataType="Unsigned8" ByteOffset="4" BitOffset="0" DefaultValue="1" AllowedValues="1..2" Changeable="true" Visible="true" TextId="IDT_MODBUS_STOPBIT"/>
                        <Ref ValueItemTarget="Modbus_Reply_Time" DataType="Unsigned8" ByteOffset="5" BitOffset="0" DefaultValue="20" AllowedValues="1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 200 255" Changeable="true" Visible="true" TextId="IDT_MODBUS_REPLY_TIME"/>
                        <Ref ValueItemTarget="Modbus_Idle_Time" DataType="Unsigned8" ByteOffset="6" BitOffset="0" DefaultValue="10" AllowedValues="1 2 3 4 5 10 20 30 40 50 60 70 80 90 100 200" Changeable="true" Visible="true" TextId="IDT_MODBUS_IDLE_TIME"/>
                    </ParameterRecordDataItem>
                </RecordDataList>
                <ModuleInfo>
                    <Name TextId="TOK_TextId_ControStatus"/>
                    <InfoText TextId="TOK_InfoTextId_ControlStatus"/>
                </ModuleInfo>
                <PROFIenergy ProfileVersion="V1.0"/>
            </VirtualSubmoduleItem>
        </VirtualSubmoduleList>
    </ModuleItem>
</ModuleList>

 

3.3.3、值列表:ValueList

        该部分包含了字段设备的单个参数具体值和关联文本之间的赋值。

 <!--示例1-->
<ValueList>
    <ValueItem ID="SubstitutionMode">
        <Assignments>
            <Assign TextId="Replacement value" Content="1"/>
            <Assign TextId="Last value" Content="0"/>
        </Assignments>
    </ValueItem>
</ValueList>  
 <!--示例2-->
<ValueList>
    <ValueItem ID="Modbus_Write_Mode">
        <Assignments>
            <Assign Content="0" TextId="Polling_Send"/>
            <Assign Content="1" TextId="Different_Send"/>
        </Assignments>
    </ValueItem>
</ValueList>

3.3.4、通道诊断列表:ChannelDiagList 

        该部分包含了通道的诊断信息,即通道的错误编号及其描述。

 

 3.3.5、单元诊断列表:UnitDiagTypeList

        该部分包含了该PROFINET I/O设备的诊断信息。

 

3.3.6、图形列表:GraphicsList

        该部分是GSD文件的图形列表,即在组态工具中显示的图形(图标)。

3.3.7、分类列表:CategoryList

        该部分包含了GSD文件的分类信息,比如DI、DQ、AI等模块的分类;

3.3.8、外部文本列表:ExternalTextList

附录1:分配ID前缀列表

 

参考资料:

  1. Profinet从站开发(1)- 初识ERTEC200P
  2. PROFINET工业以太网教程(16)-GSDML文件详解
  3. XSD文件详解
  4. Profinet GSD Checker: PN-IO设备的GSD文件xml语法检查器
  5. profinet协议开发文件
  6. GSDML / GSDX Specification for PROFINET v2.352
  7. 西门子GSDML文件用户手册
  8. 《PROFINET工业通信》[德] Manfred Popp著

注:原文链接

致谢:PROFINET的GSD文件描述 - 知乎 (zhihu.com) 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PROFINET的GSD文件描述 的相关文章

随机推荐

  • 【编程练习】回转寿司

    题目来源 牛客 美团2021校招笔试编程题 第3题 题目描述 题解 参考了别人的思路 这个问题可以分解为经典贪心 回转 当不考虑回转 环形 情形时 只需要用贪心求解最大连续子串值即可 当考虑回转 环形 情形时 可反向思考 就是 求解非环形连
  • matlab神经网络工具箱实现两个输入的BP神经网络

    请问各位大佬 matlab神经网络工具箱怎么实现具有两个特征的BP神经网络啊 是将以行为单位将每个样本的每一个特征按列存放就可以吗
  • upload-labs第1~2关 小试牛刀

    第一关 文件重命名 工具 Burp 蚁剑 原理 文件名修改 源码解析 先在前端判断是否为图片格式 是的话 就开始上传 也就是前端绕过 先传一个jpg格式的 再用burp抓包 改包 就可以实现前端验证绕过 绕过过程 文件上传肯定离不开一句话木
  • 全球根服务器分别部署在哪里?

    全球真的只有13台根服务器么 10台根服务器都在美国 如果根服务器被关闭 我们会不会被断网 关于DNS部署与根服务器的几点论述 知名网络黑客防御专家 东方联盟创始人郭盛华透露 根名称服务器是任何域名系统 DNS 服务器 它响应 DNS 根区
  • AI Challenger 2018 即将进入决赛,八大数据集抢先看

    雷锋网 AI 研习社消息 由创新工场 搜狗 美团点评 美图联合主办的 AI Challenger 2018 即将进入第二阶段比赛 今年的大赛主题是 用 AI 挑战真实世界的问题 主办方提供超过 300 万人民币奖金 8 月 29 日至 11
  • CMake下调用anaconda的pytorch及numpy传参CV::Mat给python(多线程版)

    经测试发现上次写的 CMake下调用anaconda的pytorch及numpy传参CV Mat给python 在多线程下就挂了 经过各种实验 终于完成了多线程的实现 在此分享一下 主要结构如下 Created by daybeha on
  • Vue中的三种绑定方式

    1 属性绑定 div img alt div
  • 《逆袭进大厂》 C++ 八股文问题目录

    如果有没看过前两期的小伙伴们可以点击下面两篇文章去温习一下 逆袭进大厂 之C 篇49问49答 绝对的干货 逆袭进大厂 第二弹之C 进阶篇59问59答 4W字超强汇总 知乎 逆袭进大厂 第三弹之C 提高篇79问79答 知乎 不逼逼了 逆袭进大
  • 解决 mac zsh 所有命令失效

    https www cnblogs com zhangrunhao p 9970656 html
  • Python - 使用多处理并行处理受 CPU 限制的任务

    多元处理 英语 Multiprocessing 也译为多进程 多处理器处理 多重处理 指在一个单一电脑系统中 使用二个或二个以上的中央处理器 以及能够将计算工作分配给这些处理器 拥有这个能力的电脑系统 也被称为是多元处理器系统 Multip
  • 如何克隆一个虚拟机/如何把虚拟机克隆一份给别人用/虚拟机互相通信

    https blog csdn net csdnliuxin123524 article details 80641649 https blog csdn net qq 42774325 article details 81189033 h
  • sqil-labs LESS5报错注入通关教程

    Less 5 报错注入 id 1 页面有回显 第一步 判断注入类型是数字型还是字符型 id 1 出现报错为 1 LIMIT 0 1 可判断为字符型且为单引号闭合 报错里面有数字 第二 判断字段数 使用order by order by 3时
  • JDBC 连接 DB2 的一个简单示例

    一 先贴上代码 后作解释 java源代码 public void getConnect Connection conn null PreparedStatement ps null ResultSet rs null try Class f
  • java多线程保证顺序执行

    前言 举例说明 比如要去冰箱里面拿牛奶 那么正常步骤是这样的 1 打开冰箱 2 拿出牛奶 3 关上冰箱 代码实现是这样的 public static void main String args Thread A new Thread new
  • Python-OpenCV 处理图像(一):基本操作

    0x00 图片读 写和显示操作 安装好 OpenCV 之后 首先尝试加载一张最简单的图片并显示出来 代码示例 第一种方式使用cv2 cv的LoadImage ShowImage和SaveImage函数 import cv2 cv as cv
  • SYMTCP: Eluding Stateful Deep Packet Inspection with Automated Discrepancy Discovery论文翻译

    SymTCP 基于自动发现差异的有状态深度包检测技术 Zhongjie Wang Shitong Zhu Yue Cao Zhiyun Qian Chengyu Song Srikanth V Krishnamurthy Kevin S C
  • Java里的date类型 加上秒单位后的时间

    时间加上秒后的时间 日期 public static Date timePastTenSecond Integer second String otime try SimpleDateFormat sdf new SimpleDateFor
  • Linux配置kdump大小,Kdump配置及测试

    How do I configure kexec kdump on Red Hat Enterprise Linux 5 Release Found Red Hat Enterprise Linux 5 Note for virtualiz
  • IDEA(2023)修改默认缓存目录

    作者介绍 一个有梦想 有理想 有目标的 且渴望能够学有所成的追梦人 学习格言 不读书的人 思想就会停止 狄德罗 个人主页 进入博主主页 专栏系列 无 欢迎小伙伴们访问到博主的文章内容 在浏览阅读过程发现需要纠正的地方 烦请指出 愿能与诸君一
  • PROFINET的GSD文件描述

    目录 一 基础介绍 二 文件命名 三 文件结构 1 根元素 ISO15745Profile 2 行规头部 ProfileHeader 3 行规体 ProfileBody 3 1 设备标识 DeviceIdentity 3 2 设备功能 De