当前位置: 首页 > news >正文

51c~嵌入式~PLC~西门子~合集1

我自己的原文哦~       https://blog.51cto.com/whaosoft/14017842

===> PLC-- 西门子 --专辑
一、西门子PLC编程

关于西门子S7-300PLC模拟量方面的实例,包含了以下几个方面的要点:

1、对变送器进行取值,并进行控制

2、对模数功能块 FC105 进行调用

3、对 AI 模块进行设置

4、对 AI 量程块进行选择

这个实例, 调试的是一个流量调节回路中, 流量变送器输出 2-2-MA DC信号到 SM331 模拟输入模块,模块将该信号转换成浮点数,然后在程序中调用FC105将该值转换成工程量,我们就可以监视实际工程中的流量值了。

模拟量 AI 采用 SM311 模块是 8x12Bit(8 通道 12 位)对应货号是 6ES7 331-7KF02-OABO,在模数转化上利用传感器或变送器的, 电压或电流取出的值,到 AI 模块上进行转换, 然后把值传给西门子的 CPU 进行处理, 从而检测控制传感器的值,如图:

模拟量输入模块

模拟量输入用于连接电压和电流传感器、 热电耦、电阻和热电阻, 用来实现PLC 与模拟量过程信号的连接。

模拟量输入模块将从过程发送来的模拟信号转换成供 PLC 内部处理用的数字信号。

本次工程用的是 SM311 输入模块如下图所示。该模块具有如下特点:

分辨率为 9 到 15 位+符号位(用于不同的转换时间) ,可设置不同的测量范围。

通过量程模块可以机械调整电流 /电压的基本测量范围。

用  STEP 7硬件组态工具可进行微调。模块把诊断和超限中断发送到可编程控制器的 CPU 中。

模块向 CPU 发送详细的诊断信息。

模拟量输入模块的接线方式

两线制电流和四线制电流都只有两根信号线, 它们之间的主要区别在于:两线制电流的两根信号线既要给传感器或者变送器供电,又要提供电流信号 ;而四线制电流的两根信号线只提供电流信号。

因此,通常提供两线制电流信号的传感器或者变送器是无源的 ;而提供四线制电流信号的传感器或者变送器是有源的。

因此,当 PLC 的模板输入通道设定为连接四线制传感器时, PLC 只从模板通道的端子上采集模拟信号, 如图 2-3,而当 PLC 的模板输入通道设定为连接二线制传感器时,如图 2-2,PLC 的模拟输入模板的通道上还要向外输出一个直流 24V的电源,以驱动两线制传感器工作。

 传感器型号

两线制 (本身需要供给 24vDC 电源的,输出信号为 4-20MA ,电流)即+接 24vdc,负输出 4-20mA 电流。

◆四线制 (有自己的供电电源, 一般是 220vac ,信号线输出 +为 4-20ma 正,-为 4-20ma负。

01、(以 2 正、 3 负为例 ),两线制时正极 2 输出 24VDC 电压, 3 接收电流 ,所以遇到两线制传感器时, 一种接法是 2 接传感器正, 3 接传感器负 ;跳线为两线制电流信号。二种接法是 2 悬空,3 接传感器的负,同时传感器正要接柜内 24vdc;跳线为两线制电流信号。

02、(以 2 正、3 负为例 ),四线制时正极 2 是接收电流, 3 是负极。(四线制好处是传感器负极信号与柜内 M 为不同电平时不会影响精度很大,因为是传感器本身电流的回路 )遇到四线制传感器时,一种方法是 2 接传感器正, 3 接传感器负,plc 跳线为 4 线制电流。

“传感器正与 plc 的 3 相连, 2 悬空,跳线为两线制电流。”此条在四线制和二线制传感器均适用,大家可以自己试验,好用的顶起来。

03、(以 2 正、3 负为例 ),四线制传感器与 plc 两线制跳线接法:信号线负与柜内 M 线相连。将传感器正与 plc 的 3 相连, 2 悬空,跳线为两线制电流。

04、(以 2 正、3 负为例),电压信号:2 接传感器正, 3 接传感器负, plc 跳线为电压信号。 

量程卡的设置

量程卡 在模板的左侧装有量程卡,允许的设置为“ A”,“B”,“C”和“ D”,分别适用于不同的测量的类型和范围。在安装模板前必须正确地设置它。

没有量程卡的模拟量模板具有适应电压和电流测量的不同接线端子,这样,通过正确地连接有关端子可以设置测量的类型。

关于设置不同的测量类型及测量范围的简要说明印在模板上。对于这个工程,水位的测量采用的是二线制变送器,所以选择“ D”,如图 所示。

 输入模块设置

在“硬件”界面下设置好机架后,双击输入模块“ ATBx12bit”,如下图:

双击输入模块后会弹出一个执行框, 点击“地址”后,将开始地址改为 “256”如下图

改完地址后,再点击“输入” ,将“测量型号”中点击“ 2DMU ”设置传感器的类型。(本次用的是两线的变送器)

AI 系统

建立一个西门子硬件模块在添加好电源和 CPU 后,在配置文件中选择AI 模块如图 。

在添加完成时在硬件系统中会出现此模块如图 。

在此操作成功后双击进行选择,设置对话框点输入。如图 

在选择完成后点确定,就可以了,然后就是程序编写。

AI 程序 

在 S7-300中 AI 模块的程序已经, 厂方已经写好, 只要进行功能模块的调用就好了,调用方法 如图 

在上图的下对话框下找到 FC105 功能块,如图  

IN:使能端。

HI_LIM :高线。

L0_LIM :低线。

BIPOLAR :极性。

RET_VAL :报错存入。

OUT:输出的值(液位)

二、西门子双机架双CPU之间工业以太网通讯

<一>、建立项目 

首先需要建立一项新工程。

<二>、组态硬件

1.本说明组态以SIMATIC 400station为例。在STEP7中创建一个新的项目,分别插入两个S7-400站,打开options菜单下的Set PG/PC Interface选项,将通讯接口改为TCP/IPà本地网卡。

 2.对SIMATIC 400(1)站点进行硬件组态

双击SIMATIC 400(1)站的hardware选项,打开硬件组态画面,,双击CP的PN-IO口,填写相应的IP地址和子网掩码,并新组建一个工业以太网Ethernet(1),写入mac地址,IP地址设定为192.168.0.1,子网掩码为255.255.255.0,完成后如下图所示将所要配置的硬件型号抄下,按型号进行硬件组态配置,同时,将MAC地址写入网络配置。如下:

硬件组态完成后的整体画面如下图所示

3.对SIMATIC 400(2)站点进行硬件组态

组态方式与1站相同,将MAC以及IP地址分配好。

注:更改IP地址,防止重复。

最后完成图: 

<三>、网络组态

1、同项目下网络组态

在SIMATIC Manager画面下选择

Configure network按钮,打开网络组态画面。NetPro会根据当前的组态情况自动生成网络组态画面。如下:

选择SMATIC 400(1)站的CPU 416-2 DP,右键选择“Insert new connection”,如下图 

在弹出的对话框中,显示了可与1站建立连接的站点,选择CPU 416-2 DP站点,同时选择类型为“iso-on-tcp contion”如图所示 

将Connection下Type选项内容改为ISO-on-TCP connection: 

点Apply后出现如下对话框: 

Local Endpoint 下ID选项可以选择任意段,但是要与程序内部编写一致。本文以0001段为例。

对话框中Active connection establishment选项为主从选择,点选后为主站。如果有多个400站,则尽量将主站建立平均,因为主站占用内存比较大,都集中到一台CPU上是容易造成扫描周期变长。同时Block Paramenters选项卡默认为1。

选择SIMATIC 400(2)站中CPU 416-2 DP,在下面Local ID中右键选择属性将Local Endpoint地址改为0002段,步骤如下:

确定,完全编译,分别下装。 

2、不同项目下网络组态

双击SIMATIC 400(1)站的hardware选项,打开硬件组态画面,,双击CPU的PN-IO口,填写相应的IP地址和子网掩码,并新组建一个工业以太网Ethernet(1),写入mac地址,以IP地址设定为192.168.0.1,子网掩码为255.255.255.0为例,完成后如下图所示:

硬件组态完成后的整体画面如下图所示:

3.对SIMATIC 400(2)站点进行硬件组态

基本的组态步骤与1站相同,IP地址设定为192.168.0.2,子网掩码255.255.255.0。对准槽号,完成硬件组态后,分别将组态下载到相应的PLC中。

4.进行网络组态,建立相应的S7连接

在SIMATIC Manager画面下选择Configure network按钮,打开网络组态画面。NetPro会根据当前的组态情况自动生成网络组态画面。

选择SMATIC 400(1)站的CPU416-2DP,右键选择“Insert new connection”,如下图:

在弹出的对话框中,显示了可与1站建立连接的站点,选择Unspecified点,同时选择类型为“iso-on-tcp contion”如图所示 

点击OK后会出现连接属性的对话框,勾选“establish an active connection”以激活新连接,同时需要记住本地ID号和LADDR号,此号作为后续的通讯模块标识。画面如下图: 

同时在弹出的对话框中选择Address标签中Remote标签中写出对方的IP以及ASC。当写出ASC后,hex自动生成,如下: 

完成后的NetPro画面如下图: 

图中显示了相应建立的连接信息,至此硬件,网络层面的组态完成。分别下载到PLC即可。

<四>、程序编辑

为了进行数据的传送,这里需要调用FC5“AG-SEND”和FC6“AG-RECV”模块,来进行数据的收发。本实验以同项目下2个400站通讯为例。

1.在SIMATIC 400(1)站的Block中按

打开添加如下模块:在OB1中编写数据发送模块,调用FC5模块,并建立DB1、2,分别为CPU1发送给CPU2和CPU1 接收CPU2的数据,并插入变量表为后面的通讯验证做准备。如下图:

打开SIMATIC_NET_CP库:

找到FC5、FC6并复制: 

粘贴到400站中,并建立2个DB块,分别为发送和接收使用: 

在2个DB块中分别建立相同数量的变量: 

2.建立发送接收数据长度设定:

注意:发送接收数据最好分别设计2个MW地址,如果公用,有可能第一个使用完后MW内存储数据被清零。

3.OB1中对FC5的编写如下:

call fc 5                               //调用FC5

ACT := M 1.0,                          //通讯为1时可以发送。

ID :=1,                                //本机网络组态Block Parameters的ID

LADDR := W#16#3FFD,                   //本机数据段

SEND := P#db1.dbx0.0 byte 10,            //发送数据存储位置

LEN := MW 10,                         //发送数据长度

DONE := M 10.2,                        //发送状态(0为正在发送,1为发送完成)

ERROR := M 10.3,                       //错误状态

STATUS := MW 20;                            //错误代码

注意:发送接收数据最好分别设计2个MW地址,如果公用,有可能第一个使用完后MW内存储数据被清零。

FC5编辑定义如下:

4.OB1中对FC6的编写如下:

call fc 6                          //调用FC6

ID :=1,                          //本机网络组态Block Parameters的ID

LADDR := W#16#3FFD,             //本机数据段

RECV := P#DB2.DBX0.0 BYTE 10,      //接收数据存储位置

NDR :=M0.4,                     //接收状态

ERROR := M0.5,                   //错误状态

STATUS := MW30,                 //错误代码

LEN := MW12;                        //接收数据长度

FC6编辑定义如下:

5.在SIMATIC 400 (2)站中添加相应的模块,ID以及LADDR改为SIMATIC 400 (2)站的ID以及LADDR

6.分别下装到对应CPU中

<五>、效果验证

分别在两个站点的变量表中添加变量,进入监控画面,对1站输入不同的数值,可以看到2站对应的接收区发生了对应的变化,说明以太网通讯成功,效果如下图:

<六>、小结

1.以太网通讯的物理层关键在于IP地址要设定在同一网段内,同时注意子网掩码对网段的影响。这里网段统一在192.168.0.X区间上,保证物理层上的通讯畅通

2.建立连接的过程并不复杂,正确的组态以及IP分配即可。

3.数据的传送可以发送BYTE。基于M区,DB块等,灵活应用不同的传送方式可以实现多种不同的控制方式。

三、西门子PLC指令详解

指令( 英文全称意思 ):指令含义

1、LD ( Load 装载 ):动合触点
2、LDN ( Load Not 不装载 ):动断触点
3、A ( And 与 动合):用于动合触点串联
4、AN ( And Not 与 动断 ):用于动断触点串联
5、O ( Or 或 动合 ) :用于动合触点并联
6、ON ( Or Not 或 动断 ):用于动断触点并联
7、= ( Out 输出 ):用于线圈输出
8、OLD ( Or Lode):块或
9、ALD ( And Lode):块与
10、LPS ( Logic Push ):逻辑入栈
11、LRD ( Logic Read ):逻辑读栈
12、LPP ( Logic Pop ):逻辑出栈
13、NOT ( not 并非 ):非
14、NOP ( No Operation Performed ):无操作
15、AENO ( And ENO ):指令盒输出端ENO相与
16、S ( Set 放置 ):置1
17、R ( Reset 重置,清零 ):清零
18、P ( Positive):上升沿

19、N ( Negative):下降沿

20、TON ( On_Delay Timer ):接通延时定时器

21、TONR ( Retentive On_Delay Timer ):有记忆接通延时定时器
22、TOF ( Off_ Delay Timer ):断开延时定时器
23、CTU ( Count Up ):增计数器
24、CTD ( Count Down ):减计数器
25、CTDU ( Count Up/ Count Down ):增减计数器

26、ADD ( add 加 ) :加注意  

//ADD_I (_ I 表示整数) 

ADD_DI( DI表示双字节整数)

ADD-R (R 表示实数)

它们都是加运算只是数的大小不同。

27、SUB ( Subtract 减去,减少):减
28、MUL ( Multiply ):乘
29、DIV ( Divide ):除
30、SQRT ( Square root ):求平方根
31、LN ( Napierian Logarithm 自然对数 ):求自然对数
32、EXP ( Exponential 指数的 ):求指数
33、INC_B ( Increment 增加 ):增1

//其中_B代表数据类型 还有W(字节)、DW双字后面几个都是这样的。

34、DEC_B ( Decrement 减少 ):减1
35、WAND_B ( Word and 与命令 ):逻辑与 
36、WOR_B ( Word or 或命令):逻辑或
37、WXOR_B ( Word exclusive or 异或命令):逻辑异或
38、INV_B ( Inverse 相反 ):取反
39、MOV _B ( Move 移动 ):数据传送
40、BLKMOV_B ( Block Move 块移动):数据块传送
41、SWAP ( Swap 交换 ):字节交换
42、FILL ( Fill 填充 ):字填充
43、ROL_B ( Rotate Left 循环 向左):循环左移位
44、ROR_B ( Rotate Right 循环 向右):循环右移位
45、SHL_B ( Shift Left 移动向左):左移动
46、SHR_B ( Shift Right 移动向右 ):右移动
47、SHRB ( Shift buffer 移动缓存):寄存器移位
48、STOP ( Stop 停止 ):暂停
49、END /MEND ( End /Mend ):条件/无条件结束
50、WDR ( Watch dog reset ):看门狗复位
51、JMP ( Jump 跳):跳转https://www.diangon.com/wenku/plc/
52、LBL ( Label 位置 ):跳转标号
53、FOR ( For 循环 ):循环
54、NEXT ( Next 再下去):循环结束
55、SBR ( Subprogram Regulating子程序控制 ):子程序调用
56、SBR_T ( Subprogram Regulating Take ):带参数子程序调用
57、SCR ( Sequence Control 顺序控制 ):步开始
58、SCRT ( Sequence Control Transfer 顺序控制转移 ):步转移
59、SCRE ( Sequence Control End 顺序控制结束 ) :步结束
60、AD_T_TBL ( Add data to table 添加数据到表格中):填数据表
61、FIFO ( First in First out 先进先出 ):先进先出
62、LIFO ( Last in First out 后进先出 ):后进先出
63、TBL_FIND ( Table Find 表格查找 ) :表查找
64、BCD_I ( Binary Coded Decimal _I 二进制编码的十进制 ):BCD 码转整数
65、I_BCD ( I_ Binary Coded DecimaL ):整数转BCD码
66、B_I ( Bit to int ):字节转整数
67、I_B ( int to bit ):整数转字节
68、DI_I ( Double  int to int ):双整数转整数
69、I_DI ( int to double int ):整数转双整数
70、ROUND ( Round 取整 ):实数转双整数
71、TRUNC ( Trunc 截取 ):转换32位实数整数部分(舍去小数取整)
72、DI_I (double int to int ):双整数转实数
73、ENCO ( Encode 编码):编码
74、DECO ( Decode 译码):译码
75、SEG ( Segment decoder分断译码器 ):七段显示译码器
76、ATH ( ASCII码 turn hex ):ASCII码转16进制
77、HTA ( Hexadecimal to ascii):16进制转ASCII码
78、ITA ( // int to ascii):整数转ASCII码
79、DTA ( // double int to ascii ):双整转ASCII码
80、RTA ( // real to ascii): 实数转ASCII码
81、ATCH (//attach ):中断连接
82、DTCH ( Depatch ):中断分离
83、HDEF ( High speed counter definition ):高速计数器定义
84、HSC ( High Speed Counter 高速计数器 ):启动高速计数器
85、PLS ( Pulse 脉冲 ):脉冲输出
86、READ_ RTC ( Read real time clock 读实时时钟 ):读实时时钟
87、SET_RTC ( Set real time clock ):写实时时钟
88、XMT ( Transmitter ):自由发送
89、RCV ( Receive 接收 ):自由接收
90、NETR ( Net read 网络读 ):网络读
91、NETW ( Net write 网络写 ):网络写
92、GET_ADDR ( Get address 获取地址 ):获取口地址
93、SET_ADDR ( Set address 设置地址 ):设定口地址
94、PID ( Proportional Integral Differential 比例、积分、微分 ):比例积分微分调节器。

四、西门子PLCModbusRTU通讯和轮询

Modbus是PLC应用中常用的通讯手段,轮询是在进行一个控制器连接多个从站的通讯时常用的编程手段,由于ST语言在数据处理上的优势,此方法变得更为简单。下面以西门子S7 1214C PLC的ModbusRTU通讯为例,展现ST语言下的modbus通讯和轮询。

硬件连接

要准备的硬件和软件:

1.西门子PLC 1214C;

2.通讯板CB1241;

3.USB转RS485转换器;

4.Modscan2/Modsim32电脑模拟软件模拟主/从站,

5.SPU(serial port Utility),监视通讯报文。

PLC作为主站,使用软件Modsim32模拟从站,使用两芯线(最好是带屏蔽双绞线)进行连接:

将通讯板的AB两端与转换器的AB两端进行连接,要注意AB两端区分正负极,反接不会烧坏设备,但是无法正常通讯。

编写程序

1.设备组态

在博图软件中配置西门子PLC和通讯板。modbus通讯需要设置波特率、数据位、停止位和校验位等通讯参数,在博图中的设备组态中设置此参数,主从站设置一致即可通讯。

通讯参数

设置波特率9600,数据位8位,停止位1位,无校验,在PLC离线模式下下载硬件组态。

下载组态信息

2.调用modbus功能块

西门子的通讯一般都需要调用系统功能块,在“指令”-“通信”-“通信处理器”下可以找到modbus通讯功能块:

通讯功能块

可以看到这里提供两套modbus通讯模块,这两套都可以使用(暂不清楚具体的区别),本文选用的是下面的版本较低的模块。

新建程序段,将配置模块MB_COMM_LOAD和主站模块MB_MASTER拖入程序中:

调用功能块

功能块调用后要对必要的引脚进行赋值,各个引脚的功能可以按F1查看,建立一个DB数据块,声明一些变量连接功能块的引脚:

声明变量

上面声明了两个容量为5的字数组,用于数据的发送和接受,这个容量可以根据需求任意设置。然后将这写变量写入模块引脚:

模块赋值

配置模块MB_COMM_LOAD的触发REQ只需要在连接时触发一次啊,因此直接将系统内置的变量“firstscan”写入即可,上电后执行一次。

由于通讯的读和写都由主站模块MB_MASTER完成,因此我们对这个模块进行两次赋值,第一次实现读的功能,由modbus地址40100开始,读5个数据,写入"ModbusData".Read_Data中;第二次实现写的功能,将"ModbusData".Sent_Data中的数据写入由modbus地址40110开始的5个数据中。

程序写到这里已经可以进行通讯了,如果想要在线实验一下,可以将变量写入监控表,手动触发读写触发引脚变量,观察模块的输出状态,这里就不演示了。

3.编写轮询程序

所谓轮询就是依次询问,假设我们有3个设备作为modbus从站,从站地址(站号)依次为1,2,3,使用case语句依次对这3个设备进行读写操作,而读出和写入的数据分别存入3套不同的变量当中。

建立设备变量

使用一个结构体来描述一个设备的所有信息,包括5个状态字(states:Array[0..4] of Word)和5个控制字(ctrl:Array[0..4] of Word),将结构体声明为数量为3的数组,存放3个设备的数据。

在整个循环开始前,设定起始设备地址,然后按照“读操作触发,读数据,读设备地址+1,延时,写数据,写操作触发,写设备地址+1,延时”的顺序持续循环,按照设备地址号选择上面的结构体变量:

读操作

iStep=0时,关闭读写触发,设定读写设备地址为1;

iStep=10时,读操作触发,模块发出读数据命令,模块置位busy信号;

iStep=11时,等待读操作完成,模块读到设备数据后会置位done信号,复位busy信号,根据信号状态将读到的数据(Read_Data)写入设备数据结构体(DeviceData.states),如果设备地址=1,则写入DeviceData[1].states,设备地址变化,写入的结构体也会相应的变化,保证不同设备的数据不会互相干涉。这里加一个判断,一段时间读不到数据返回10步骤重新进行读操作。

iStep=12时,用计数的方式做一个简单的延时功能,避免因读写频率太快导致设备反应不过来。

写操作

向设备写入信息,在写入操作触发前要先将相应设备结构体中的数据(DeviceData.ctrl)写入发送数据缓存区(Sent_Data),然后再进行写操作,与读操作类似,写入完成后设备地址+1,跳转下一步骤。

运行程序

将程序编译写入后重启PLC,可以看到通讯板的指示灯已经开始闪烁,而轮询步骤iStep始终在10,11两步,证明读数据命令已经发出,但是没有接受到设备的反馈,始终在进行第一个设备的读操作。

虽然能够看到通讯灯在闪,但我们仍然不能直观的看到这个网络中的状态,这是就需要前面提到的SPU软件,监视串口网络中的报文。 

监视报文

设定端口号,选择Hex数据格式,点击开始,可以看到当前网络中所有报文,根据modbus协议的规格(可以自行百度),可以判断这些报文就是plc发出的读命令。

想要读到数据必须要有从站,我们使用modsim软件模拟出3个从站:

modsim

将3个模拟从站地址分别设为1,2,3,起始modbus地址与程序设为一致:40100,长度设为20,这样读写地址都能看到。点击connection设定通讯参数(波特率,数据位,停止位,校验位与程序中设为一致)。点击确定后能后看到通讯板和转换器的接受发送指示灯开始闪烁,程序中的设备地址也在1-3中循环变化:

通讯指示灯

由于动图的帧率选的较低,会漏掉几个灯的状态。。。

变化的设备地址

监看程序中设备地址,能够看到地址在1-3之间循环变化。可惜的是modsim与SPU不能共用一个串口,看不到modsim反馈的报文了。

接下来我们在modsim中改变几个地址的值,看看PLC的设备数据结构体中能否进行相应的变化,将设备1的数据设定为:

40100设置为110,

40101设置为111,

40102设置为112,

40103设置为113,

40104设置为114,

设定数据

数据设定后在PLC的DB块中监视DeviceData的值:

读取数据

可以看到DeviceData[1].states的值已经变化(16进制),而DeviceData[2]和DeviceData[3]并没有变化。

下面进行写数据的验证,在程序中将DeviceData[2].ctrl任意赋值,然后再modsim中查看:

写入数据赋值 

写入成功

可以看到modsim 3中相应地址的数据也已经变化,而其他模拟设备中并没有改变。

其他

在实际的项目中,例如变频器控制,通讯参数和数据地址一般都是设备(从站)规定好的,我们需要查阅设备手册,在程序中做相应的设置即可,通过通讯获取的数据可以有触摸屏显示出来,方便操作人员监控设备状态,也可以做一写判断,用于设备的报警等处理。

五、西门子1200与300 的九大区别

S7-1200作为新推出的紧凑型控制器,其产品定位在原有的SIMATIC S7-200和S7-300之间,它与S7-300的区别主要体现在硬件、通信、工程、存储器、功能块、计数器、定时器、工艺功能等方面。

一)、硬件的区别

在硬件扩展方面,S7-300的主机架多支持八个扩展模块,而S7-1200支持扩展多八个信号模块和多三个通信模块。以S7-300 CPU313C和S7-1200 CPU1214C为例,S7-1200的CPU支持通过信号板来增加IO点数,而S7-300CPU的IO点数是固定的。在硬件组态方面,S7-300和S7-1200的地址都可以由用户手动进行重新分配。

▲硬件的区别

二)、通信方面的区别

串行通信方面,S7-300和S7-1200都支持通过RS232和RS485实现点对点通信,支持ASCII、USS和MODBUS等通信协议。S7-300需要选用带PTP接口的CPU或者CP模块,实现RS232的串口通信。而S7-1200则是通过RS232通讯模块来实现串口通信。S7-1200本机集成了PROFINET接口,支持与编程设备、HMI以及其他CPU之间的通信。

▲通信的区别

三)、工程方面

S7-1200的编程软件STEP7 Basic提供了一个易用集成的工程框架,可用于SIMATIC S7-1200和精减HMI面板的组态。

▲工程框架

四)、存储方面的区别

S7-300和S7-1200的程序存储器和数据存储器的大小都是浮动的。S7-1200 CPU的符号表和注释可以保存在CPU中,可在线获取。在S7-1200中利用符号化存取,可以zui优化分配数据块所占的存储区。在保持存储区方面,S7-1200多可以设置2048个字节的保持区,可以对数据块中的离散变量设置保持性。而S7-300是以字节为单位进行保持性设置的。在存储容量方面,S7-1200的存储卡大可到24兆字节,对于S7-1200存储卡是可选项,而S7-300的存储卡是必选的。S7-300的存储卡无法存放配方和数据记录等。另外S7-1200的存储卡还将用来实现存储区扩展,程序分配及固件升级等功能。

▲存储的区别

五)、程序结构的不同

S7-1200和S7-300一样,有OB块、FB块、FC块及数据块等,程序结构高度模块化,并且可以重复利用,大嵌套深度为16。S7-1200和S7-300类似,都是通过组织块来分配事件的。

六)、数据类型的不同

S7-1200中的新数据类型使应用更加灵活。例如用于日期和时间时,S7-300通过调用系统功能块SFC读取日期时间数据,而S7-1200可以通过符号名访问DTL结构的所有组成部分。

▲数据类型的区别

七)、计数器指令的区别

S7-300中的计数器在计数值大于零时,计数器输出置位,而S7-1200中的计数器,在计数值大于等于设定值时,输出置位。S7-300 S5计数器的计数范围是0到999,而S7-1200的计数范围是可调的。

▲计数器指令的区别

八、定时器指令的区别

S7-300中的定时器在计时值大于设定值时,定时器输出置位,而S7-1200的定时器在计时值大于等于设定值时输出置位。另外S7-1200的定时时间可以像S7-300一样直接输入。

▲定时器指令的区别

九、工艺功能

S7-1200和S7-300类似,都是通过调用相应的块来实现不同的工艺功能。

▲工艺功能

六、西门子S7-200 SMART中断程序

中断就是中止当前正在运行的程序,去执行为立刻响应的信号而编写的中断服务程序,执行完毕后再返回原来中止的程序并继续执行。西门子S7-200 SMART CPU最多支持38个中断事件,其中8个为预留。为了便于识别,系统给每一个中断事件都分配了一个编号,又称中断事件号。

S7-200 SMART的中断

所有中断事件可以分为三大类:通信中断、I/O中断、定时中断。通信中断为CPU的串行通信端口可以由用户进行控制,称为自由端口模式,在该模式下接收信息完成、发送信息完成、接收一个字符均可以产生中断事件,利用接收和发送中断可以简化程序对通信的控制。I/O中断包括:上升沿中断、下降沿中断、高速计时器中断。CPU可以为输入点I0.0至I0.3以及可选信号板的I7.0和I7.1的上升沿或下降沿产生中断。高速计数器中断允许响应HSC的计数器当前值等于设定值、计数方向改变、计数器外部复位等中断事件。

中断事件

定时中断可以用来进行一个周期性的操作,以1毫秒为增量,周期时间可以取1毫秒至255毫秒。定时中断0和定时中断1的时间间隔分别写入特殊寄存器字节SMB34和SMB35。通常可以使用定时中断来采集模拟量或定时执行PID控制程序。定时器中断T32和T96允许及时响应一个给定时间间隔的结束,只有1毫秒分辨率的接通延时TON和断开延时TOF定时器,T32和T96支持此类中断,启用中断后当定时器的当前值等于预设值时,在CPU的1毫秒定时刷新中执行被连接的中断程序。

定时中断

每类中断中不同的中断事件又有不同的优先权,多个中断事件同时发生时,根据优先级组以及组内优先权来确定首先处理哪一个中断事件。优先级相同时,CPU按照先来先服务的原则处理中断。任何时刻CPU只能执行一个用户中断程序。一旦一个中断程序开始执行,它要一直执行到完成,即使更高优先级的中断事件发生,也不能中断正在执行的中断程序。正在处理另一个中断时发生的中断会进行排队等待处理。每一个优先级组分别设立相应的队列,产生的中断事件分别在各自的队列排队,先到先处理,各队列能保存的最大中断数以及队列溢出特殊寄存器位如下图表中所示。

中断队列 

西门子S7-200 SMART规定的中断优先级由高到低依次是通信中断、I/O中断、定时中断。S7-200 SMART的中断管理是通过指令完成的,中断指令包括中断允许与中断禁止指令、中断连接与中断分离指令。CPU进入RUN模式时,自动禁止所有中断。

中断指令

中断允许指令,全局性地启用对所有连接的中断事件的处理。中断禁止指令,全局性地禁止对所有中断事件的处理,但是已建立了关联的中断事件仍将继续排队。从中断程序有条件返回指令,在控制它的逻辑条件满足时,从中断程序返回。编译程序自动为各中断程序添加无条件返回指令。

中断允许与中断禁止

 中断连接指令,用来建立中断事件号EVNT与中断程序编号之间的联系,并自动允许该中断事件进入相应的队列排队,能否执行处理还要看禁止的情况。多个中断事件允许与同一个中断程序相关联,但同一个中断事件不允许与多个中断程序相连。

中断连接

中断分离指令,解除中断事件EVNT与所有中断程序的关联,所指定的中断事件不再进入中断队列,从而禁止单个中断事件。清除中断指令,从中断队列中清除所有编号为EVNT的中断事件。该指令可以用来清除不需要的中断事件。

中断分离

接下来我们通过一个简单的例子来学习中断指令的使用,并练习编写中断程序。在I0.0的上升沿通过中断使Q0.0立即置位,在I0.1的下降沿通过中断使Q0.0立即复位。我们来编写程序,启动STEP7-Micro/WIN SMART创建一个新项目,创建新项目后首先编写处理I0.0上升沿事件的中断程序,在指令树的位逻辑中拖放一个常开触点到中断程序INT_0,输入地址SM0.0,再拖放一个立即置位指令,输入地址Q0.0,置位个数为1。

编写中断程序INT_0

 我们再来编写一个处理I0.1下降沿事件的中断程序,插入一个新的中断程序INT_1,拖放一个常开触点SM0.0,再拖放一个立即复位指令,输入地址Q0.0,复位个数为1。

编写中断程序INT_1

 回到主程序,拖放一个常开触点输入地址SM0.1,在指令树的中断文件夹中拖放中断连接指令到编程区域,INT处输入0号中断程序名,EVNT处输入I0.0上升沿事件号0,向下分支,再拖放一个中断连接指令,INT处输入1号中断程序名,EVNT处输入I0.1下降沿事件3,继续向下分支,拖放一个中断允许指令,这样在程序第一次扫描时就关联了中断事件以及相应的中断服务程序并允许全局中断,程序编写完成后保存项目。

编写主程序调用中断程序

下载并测试。将项目编译并下载到PLC,在状态图表中输入地址Q0.0,启动对状态图表变量的持续监视,拨动外接开关使I0.0产生上升沿,Q0.0立即变为1,拨动外接开关使I0.1产生下降沿,Q0.0立即变为0。

七、西门子S7-300和S7-400指针类型与间接寻址

在西门子S7-300和S7-400的编程中经常需要调用一些系统功能或功能块,在输入参数时经常碰到有指针类型的参数,那么你对指针类型了解吗?我第一次接触指针一词是在学习C语言的时候,指针和链表是C语言中的一个重点难点。在C语言中,指针即存储器地址,在西门子PLC中的指针也是指地址。下面看看西门子POINTER类型的结构:

参数类型POINTER存储下列信息:

· DB编号(或0,如果数据没有存储在DB中)

· CPU中的存储区域(下表给出了参数类型POINTER存储器区的十六进制代码)· 

十六进制代码

存储区

描述

b#16#81

I

输入区域

b#16#82

Q

输出区域

b#16#83

M

位存储区域

b#16#84

DB

数据块

b#16#85

DI

背景数据块

b#16#86

L

本地的数据(L堆栈)

b#16#87

V

先前的本地数据

 数据的地址(格式为字节.位)

    STEP 7提供指针格式:p#memory_area byte.bit_address. (如果形式参数被声明为参数类型POINTER,只需要指出存储区域和地址。STEP 7将自动地重定输入指针的格式。) 下面的实例说明如何为以M50.0开始的数据输入参数类型POINTER:P#M50.0

存储器间接寻址:

    使用存储器间接寻址的程序语句包含一条指令,后面跟有[地址]标识符,最后是一个(地址必须括在方括号内)。根据所用的地址标识符,该指令会将存储于指定地址的数据解释为字或双字指针。完整的数据地址由地址标识符和指针构成,如下例所示。间接寻址的优点是能在程序执行期间动态修改指令的数据地址。

存储器间接寻址使用以下两部分地址:

1. 地址标识符

对于由位逻辑运算寻址的位,可分配地址标识符I、Q、M、L、DIX或DBX。

对于由装载指令寻址的字节、字和双字,可使用存储区I、Q、M、L、D和PI,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PIB、PIW、PID等形式的地址标识符。

 对于由传送指令寻址的字节、字和双字,可使用存储区I、Q、M、L、DB、DI和PQ,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PQB、PQW、PQD等形式的地址标识符。

要寻址定时器、计数器或块,可使用T、C、DB、DI、FB、FC形式的区域标识符。

2. 括在方括号"[ ]"内的字或双字指针的地址

字指针 - 含有定时器(T)、计数器(C)、数据块(DB、DI)或逻辑块(FC、FB)的标识号的字。字指针是十进制整数。

双字指针 - 指含有位、字节、字或双字的确切位置的双字。双字指针的格式为:P#字节.位。指针必须存储在下列区域之一,才能进行存储器间接寻址:

M - 位存储器

L  - 本地数据

D - 数据块(DB或DI)

STAT  静态数据(不是用于具有多重实例能力的块的静态数据)

注意如果要寻址使用存储器间接寻址的字节、字或双字,请确保指针的位号为双字格式0。

字指针实例:

L 5 //将指针值载入ACCU 1。T MW2 //将指针传送到MW2中。L T[MW2] //将5号定时器的当前时间值载入ACCU 1。

L C[MW2] //将5号计数器的当前计数值载入ACCU 1。

OPN DB[MW2] //将数据块DB5作为共享数据块打开。

OPN DI[MW2] //将数据块DB5作为背景数据块打开。

双字指针实例:

L P#8.7 //将指针值载入ACCU 1。T MD2 //将指针传送到MD2中。A I [MD2] //扫描输入位8.7的状态,并将其= Q [MD2] //信号状态分配给输出位Q 8.7。

区域内寄存器间接寻址:

使用区域内寄存器间接寻址的程序语句包含一条指令和以下组成部分:地址标识符[地址寄存器标识符,地址]。区域内寄存器间接寻址使用以下两部分地址:

1. 地址标识符

对于由位逻辑运算寻址的位,可以分配地址标识符I、Q、M、L、DIX或DBX。

对于由装载指令寻址的字节、字和双字,可使用存储区I、Q、M、L、D和PI,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PIB、PIW、PID等形式的地址标识符。

对于由传送指令寻址的字节、字和双字,可使用存储区I、Q、M、L、DB、DI和PQ,分配IB、IW、ID、DBB、DBW、DBD、DIB、DIW、DID、PQB、PQW、PQD等形式的地址标识符。

2. 方括号"[ ]"中的内容包括地址寄存器引用(AR1或AR2)、逗号分隔符","以及双字指针。

双字指针 - 指包含位、字节、字或双字的部分地址的双字。双字指针的格式为:P#字节.位。

注意请记住您现在使用的是两个格式为"P#字节.位"的指针。一个指针已被精确表示出来。另一个指针通过对地址寄存器AR1或AR2的引用来确定。如果要寻址字节、字或双字,请确保指针的位号为0。使用寄存器间接寻址的语句不更改地址寄存器的内容。

指针实例:

L P#8.7 //将指针值载入ACCU 1。LAR1   //用ACCU 1中的指针装载AR1。A I [AR1, P#0.0] //检查输入位I 8.7并将有符号的状态分配给Q 10.0。= Q [AR1, P#1.1] //确切地址8.7在AR1中。偏移量不对其产生影响。确切位置10.0由8.7 (AR1)加上1.1 (偏移量)得出,结果是10.0而不是9.8。

区域内寄存器间接寻址实例:

A    I [AR1,P#4.3]  对其位置是由AR1中的内容加上4个字节,再加上3个位计算得出的输入位,执行逻辑与运算。=    DIX [AR2, P#0.0] 将RLO位状态分配给位于AR2中的实例数据位。L    IB [AR1, P#10.0] 将输入字节载入ACCU 1中。地址由AR1的内容加上十个字节计算得出。T    LD [AR2,P#53.0] 将ACCU 1中的内容传送到本地双字中(该双字的位置由AR2的内容加上53个字节计算得出)。

区域内寄存器间接寻址的特点是:地址标示符在方括号前确定,方括号中的指针均为不含存储区信息(如[AR1,P#4.3]中AR1=P#8.7,两个指针都不含有存储区信息),否则将会与方括号前的地址标示符表示的存储区冲突。

跨区域寄存器间接寻址:  

使用跨区域寄存器间接寻址的程序语句包含一条指令和以下组成部分:地址标识符[地址寄存器标识符,地址]。

跨区域寄存器间接寻址使用以下两部分地址:

1. 对已寻址的数据对象(地址标识符)大小的规定数据对象大小规定    位(无规定表示是一个位)B   字节W   字D   双字

2. 方括号"[ ]"中的内容包括地址寄存器引用(AR1或AR2)、逗号分隔符","以及双字指针。双字指针 - 指包含位、字节、字或双字的部分地址的双字。指针具有以下区域内格式:P#字节.位。

注意事先必须已将跨区域双字指针载入到由寄存器间接地址引用的地址寄存器中。跨区域双字指针 - 包含位的部分地址(对于位逻辑指令)或字节、字或双字的部分地址(对于装载和传送指令)的双字。地址前面的区域标识符位于用来指定字节和位。跨区域双字指针格式为:P#区域标识符字节.位。

对于由位逻辑指令寻址的位,可以分配跨区域指针区域标识符I、Q、M、DIX或DBX。

对于由装载或传送指令寻址的字节、字和双字,可以分配跨区域指针区域标识符I、Q、M、DIX、DBX或P。    注意要在指针中指定外设输入或PI区域,请以P#Px.y形式输入指针。区域被指定为P。在跨区域指针中不能使用外设输出PQ区域。请记住您正使用两个指针:

作为偏移量,直接在地址中表示的区域内双字指针,例如P#4.0。

存储在地址寄存器(AR1或AR2)中的跨区域双字指针,例如P#Q4.0。

如果要访问通过直接寻址方式进行寻址的字节、字或双字,请确保这两个指针的位号均为0。使用寄存器间接寻址的语句不更改地址寄存器的内容。

跨区域寄存器间接寻址的第一个实例:

L P# I8.7 //将指针值和区域标识符载入ACCU 1。LAR1   //将存储区I和地址8.7存入AR1。L P# Q8.7 //将指针偏移量和区域标识符载入ACCU 1。LAR2  //将存储区Q和地址8.7存入AR2。A [AR1, P#0.0] //检查输入位I 8.7并将其信号状态分配给输出位Q 10.0。= [AR2, P#1.1] //偏移量0.0没有任何作用。输出位10.0由8.7 (AR2)加上1.1 (偏移量)得出,结果是10.0而不是9.8。跨区域寄存器间接寻址的第二个实例:

A I 0.0 JC M002 L P#M10.0 //将指针值和区域标识符载入ACCU 1。LAR1  //将存储区M和地址10存入ACCU 1。JU M001 M002: L P#Q0.3 //将指针值和区域标识符载入ACCU 1。LAR1  //将存储区Q和地址0.3存入ACCU 1。M001:A I 0.4 = [AR1, P#0.1] //I 0.0用于控制哪个指针用于此语句。将I 0.4的信号状态分配给存储器位M 10.1,或者分配给输出Q 0.4。

跨区域寄存器间接寻址实例A  [AR1,P#4.3],对于其位置是由AR1中的内容加上4个字节,再加上3个位计算得出的位,执行逻辑与运算。位的存储区在AR1的位24、25和26中指出。= [AR2, P#0.0]     将RLO位信号状态分配给位于AR2中的位。位的存储区在AR1的位24、25和26中指出。L B [AR1, P#10.0]  将字节(其位置由AR1的内容加上10个字节计算得出)载入ACCU 1。位的存储区在AR1的位24、25和26中指出。T D [AR2,P#53.0]   将ACCU 1的内容传送到双字(该字的精确位置由AR2的内容加上53个字节计算得出)。位的存储区在AR1的位24、25和26中指出。

跨区域寄存器间接寻址的特点是:地址标示符在方括号前确定,方括号中的地址寄存器中包含存储区信息(如[AR1,P#4.3]中AR1=P#Q0.3)。

区域内寄存器间接寻址和跨区域寄存器间接寻址的使用相当灵活,可以根据需要选择。由上面的说明可知,区域内寄存器间接寻址是针对存储区固定的间接寻址方式,寻址的存储区是确定的。而跨区域寄存器间接寻址则在指令中不确定存储区,存储区由地址寄存器中存储的指针中的信息确定,因而寻址的存储区是可变的。

八、西门子S7-200/300/400通讯方式

1.西门子 200 plc 使用 MPI 协议与组态王进行通讯时需要哪些设置?

1)在运行组态王的机器上需要安装西门子公司提供的 STEP7 Microwin 3.2 的编程软件,我们的驱动需要调用编程软件提供的 MPI 接口库函数;

2)需要将 MPI 通讯卡 CP5611 卡安装在计算机的插槽中,使用西门子公司提供的专用电缆和网络接头将 CP5611 卡和 S7-200 的 Port 口相连(CP5611 卡的 3,8 分别和 S7200的 PORT 口 3,8 连接),一般情况下 MPI 网络中连接最后一个设置得网络接头的终端电阻应打到 ON(有效)状态;

3)PLC 中 MPI 网络的创建和通讯波特率的正确设置;

4)在控制面板中 SetPG/PC 接口参数的设置;具体可参考组态王电子帮助。

2.组态王与西门子 200 plc 自由口协议通过 modem 通讯,硬件接线怎样实现?

设备上插标准 PPI 电缆,modem9 针口通过一个标准 232 交叉线接到 PPI 电缆上即可,232 交叉线的 modem 侧需要 1 4 6 短接,7 和 8 短接。

3.一台 S7 200 PLC通过串口方式能否接两个上位机通讯?

通过串行电缆的方式不行,可以考虑使用以下两种方式:

1)PLC 配置为 MPI 协议,这样两个上位机需要各配置一块 MPI 卡;

2)两个 PC 机中,一个作为采集站和 PLC 通讯,另外一个作为客户端和采集站通讯。

4.西门子 200Plc 通过 PPI 协议与组态王通讯失败,为何?

请检查如下设置是否正确:

1)用户编程电缆的拨码设置:在编程电缆的拨码中,第 5 个端子是设置通讯协议的:拨码设置为 0,表示 PPI/Freeport ;拨码设置为 1,表示 PPI(master);用户使用 PPI 协议和组态王通讯时,拨码选择 PPI/Freeport 对应拨码值即可;

2)PPI 通讯传输的是 11 位的数据,也就建议客户拨码选择 8 数据位 1 停止位偶校验(拨码默认为 11 位),并且 PLC 的波特率和 PPI、组态王要一致;

3)要求编程软件必须是离线时启动运行组态王。

5.西门子 200plc 通过 modbus 协议与组态王通讯时,组态王中定义的寄存器地址与plc 地址是如何对应的?

映射关系如下:0-Q,1-I,3、4、8、9-V;

3,4,8,9 的 dd 号与 PLC 中 V 寄存器的偏移地址(实际地址-1000)的对应关系:组态王中(寄存器的 dd 号-1)*2=PLC 中的 V 寄存器的偏移地址。组态王中 40031对应 PLC:VW1060 (组态王中寄存器 4 表示 SHORT 型变量)组态王中 90640 对应 PLC:VD2278 (组态王中寄存器 9 表示 FLOAT 型变量)。

6.西门子 200plc 通过 modbus 协议与组态王通讯,需要注意哪些事项?

需要注意如下几点:

1)需要向 PLC 中下载对应的初始化程序(KVmoddbus.mwp),由亚控提供。此程序默认的 plc 通讯端口为 port0,地址为 2,波特率 9600,无校验(地址和波特率可由程SBR0 中的 VB8,SMB30 进行修改);

2)由于 PLCModbus 协议程序占用 V1000 及以前的地址,所以用户在编写逻辑控制程序中用到的寄存器不能和亚控提供的协议中所占用的 V 区地址冲突;

3)西门子 S7200PLC 和通过 modbus 协议和组态王通讯时,CPU 上的开关必须拨在RUN 状态,否则 PLC 中的 modbus 通讯程序没有处于运行状态,组态王和设备通过自由口协议肯定通讯失败。

7.S7 300 MPI 电缆方式是否支持通过 GPRS 和组态王通讯?

不支持。

组态王的 GPRS 通讯方式要求必须创建虚拟串口并通过此串口进行数据通讯。而对于 MPI 协议,我们的 MPI 驱动是通过调用西门子 PLC 的专用动态连接库(s7onlinx.dll等)实现和 PLC 进行通讯的,并不是直接通过串口实现数据通讯。

其他类似调用方法的驱动,同样也不支持 GPRS 连接。

8.组态王和多台西门子S7-300、400 PLC 通过 DP 协议通讯时,设备地址应如何定义?

1)硬件连接:计算机中插入一块CP5611(或CP5613)可实现将多个S7-300/400PLC连接在一条 DP 总线上。

2)DP 协议设置:所有 PLC 必须设置的 DP Slave 站, CP5611(或 CP5613)要求通过 Simatic net 设置的 DP 唯一 master 站;

3)组态王中设备地址定义:选择 PLC/西门子/S7-200 系列(DP)/Profibus-DP ,设备地址固定为 1.1 (该地址与从站 PLC 的地址设置无关)。

9.西门子 300 plc 通过 MPI 通讯卡与组态王进行通讯时,能否实现双设备冗余的功能?

可以实现。

1)一个 cp5611 卡可以连接两台 s7300plc(使用西门子厂家提供的可编程插头来实现);

2)在组态王软件中建立两个 s7300plc,设备地址分别设备为 7.2 和 8.2(设备地址根据实际设备来设置),小数点前面的号指 plc 的地址,后面是 cpu 所在的槽号。这两个 plc 在 STEP7 编程软件中是单独定义的,所以除 plc 地址不一样,槽号是一样的;

3)在组态王中只须定义主设备的变量即可。

10.组态王和西门子 300、400PLC 通讯支持哪些通讯链路?是否需要西门子软件的支持?

1)MPI 电缆通讯方式:组态王所在的计算机必须安装 STEP7 编程软件;

2)MPI 通讯卡方式:组态王所在的计算机必须安装 STEP7 编程软件;

3)以太网通讯方式:不需要在组态王所在的计算机上安装 STEP7 或 Simatic net 通讯软件;

4)Profibus-DP通过方式:需要在本机上安装 STEP7 编程软件和 Simatic net 6.0(或以上版本)的通讯配置软件和授权;

5)Profibus-S7通过方式:需要在组态王所在的计算机上安装 STEP7 编程软件 ,但不需要安装SIMATIC NET 软件。

http://www.lryc.cn/news/575919.html

相关文章:

  • GO 语言学习 之 语句块
  • 汉中农业服务——激活田野的希望,共绘乡村振兴图
  • Guava Cache 本地项目缓存
  • 昇腾910(NPU)安装paddlepaddle【自用版】
  • LinuxBridge的作用与发展历程:从基础桥接到云原生网络基石
  • 【Linux指南】压缩、网络传输与系统工具
  • 用 pnpm + TurboRepo,构建多项目高效开发体系
  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系
  • 几种基于Doherty结构的GAN氮化镓功放设计方法介绍
  • Ehcache、Caffeine、Spring Cache、Redis、J2Cache、Memcached 和 Guava Cache 的主要区别
  • 算法-堆排序
  • 飞算科技依托 JavaAI 核心技术,打造企业级智能开发全场景方案
  • AIOps与人工智能的融合:从智能运维到自适应IT生态的革命
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_rmem 和 net.core.rmem_default 关系
  • MySQL(1)——count()聚合函数
  • V-by-One V1.4协议介绍
  • QT基础知识3——文件操作:QFile类
  • windows11 源码本地部署大模型anythingllm
  • web布局26
  • sqlite如何存储日期
  • 【数据交易】全国数据交易所的发展现状
  • 开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作
  • OpenLayers 拖动旋转和缩放
  • Python打卡训练营-Day44-预训练模型
  • 生成式人工智能实战 | WGAN(Wasserstein Generative Adversarial Network, GAN)
  • Thread Network:物联网时代的低功耗网状网络协议解析
  • 使用 Vcpkg 安装 Qt 时的常见问题与解决方法
  • SQL Server for Linux 如何实现高可用架构
  • Buildroot 2025.05 中文手册【AI高质量翻译】
  • 机器学习基础 多层感知机