PLC的高低字节转换
PLC的寄存器分为单字(Word)和双字(Dword),Word占用2个字节Byte,Dword占用4个字节Byte;
在PLC和其他设备通讯往往以字节为单位进行传送的,根据不同的通讯协议,传送所发的内容不一致,其中有些协议需要进行前后字节交换,向常见的PLC,三菱,汇川等日系PLC有专门的指令SWAP来进行转换;例如寄存器 A:=16#AABB,经过SWAP指令后,A=16#BBAA
Codesys编程和传统的PLC编程不一样,Codesys编程是属于一种面向对象的编程方式,使用起来比较具有灵活性,可以根据自己的编程习惯风格来进行编程程序;下面举例如何使用Codesys来进行编写SWAP指令;
代码如下:
---------------------------------------变量声明区--------------------------------------------------------------------------
PROGRAM PLC_PRG//程序名字
VAR
//
IN :WORD;//IN是变量名称, WORD是变量变量类型
OUT :WORD;
END_VAR
---------------------------------------程序执行区-------------------------------------------------------------
OUT :=IN/256+(IN MOD 256)*256;
(*
16位数据除以256,即将16位数据的高低8位自动分开。
例如原数值是;2#1111111100000000,转换成10进制就是 65280,转换出16进制就是FF00.
将该数值除以256和取余256,结果分别是 数值的高8位(整数),和数值的低8位(余数)
再将余数乘以256+整数得出的新数据就是高低字节转换后的数值;
*)
需要学习PLC(三菱,西门子,汇川,禾川,信捷,台达,松下,欧姆龙,Codesys)可以在评论区留言;
西门子S7-1200 PLC 水箱水位控制程序案例
给大家分享一个编程案例——S7-1200 PLC水箱水位控制,案例会应用到基本指令、模拟量转换指令、数据块的使用、FB和FC的使用等知识,这就要求大家要先掌握这些知识,才能更好地理解案例程序哦。话不多说,我们就开始吧。
先说明一下案例的控制要求:
1、该控制项目为水箱水位控制系统,系统中一共有3隔水箱,每隔水箱抖音一个液位传感器、输出的信号为0~10V电压信号,检测液位的高度为0~3m,液位为0.2m时为低液位,液位为2.5时为高液位。
2、每个水箱有三个进水阀和三个出水阀,进水阀分别是Y1、Y3、Y5,出水阀分别是Y2、Y4、Y6,每个水箱都有出水阀开和出水阀关两个按钮,出水阀开按钮分别是SB1、SB3、SB5,出水阀关按钮分别是SB2、SB4、SB6。
3、我们通过按SB1SB3SB5可以分别对各个水箱进行防水操作,顺序是随机的,当系统检测到水箱的“空”信号时,系统会自动打开水箱进水阀进行注水,当检测到水箱“满”信号时停止进水。水箱注水和水箱放空的顺序是相同的,而且每次只能对一个水箱进行注水的操作。
首先进行IO分配:
IO分配好之后根据IO分配的点进行接线即可,还需注意液位传感器需要接到模拟量输入模块,一共有三个液位传感器,那么可以选择SM1231 AI04的模块,分别接到通道1、通道2、通道3即可。
PLC控制程序设计:(案例源程序获取,请看文末)
1、首先进行硬件组态、配置模拟量模块的参数(案例源程序获取,请看文末)
我们选用CPU1214C DC/DC/DC型号的PLC,此外因为需要对三个水箱的水位进行采集,要使用到模拟量输入模块,我们选用的是SM1231 AI04模块,设备组态配置图如下图。
因为使用到了模拟量模块,还需要设置相应的模拟量输入信号的参数。根据液位继电器的输出信号类型进行配置,我们配置测量类型为电压,电压范围是正负10V,滤波为4个周期,启用溢出诊断和下溢诊断。通道0对应的地址是IW96,通道1对应的地址是IW98,通道2对应的地址是IW100。
2、编写模拟量处理程序
模拟量转换程序,是用来把采集到的模拟量信号转换成实际的液位,并将它与低液位和高液位做比较,从而输出是否达到低液位信号和高液位信号。因为三个水箱 计算过程是相同的,所以我们可以编写一个带形式参数的FC块,方便重复调用。具体操作是添加一个FC块,并且命名为“模拟量处理”,设置好变量并编写FC程序。
3、建立一个PLC数据类型、添加一个全局DB块
在PLC数据类型页面中添加一个PLC的数据类型,并把它命名为“Analog”,在里面建立之后需要用到的变量,包括当前水位、低水位和高水位,并且设置好这三个变量的数据类型。
此外,再新建一个全局DB块,把它命名为“水箱控制数据”,我们可以在里面建立一个名称为“模拟量”的变量名称,数据类型设置成数组Array[0..2]of “Analog”,然后把每个元素的数据类型选择成建立的PLC的数据类型。
4、编写水箱放水和进水控制程序(案例源程序获取,请看文末)
因为有三个水箱,它们的注水和放水的过程是一样的,我们就可以把水箱的注水和放水过程的程序编写成一个带形式参数的FB块,方便重复调用。具体操作是添加一个FB块,并命名为“水箱控制”,在FB的接口区建立相应的形式参数变量,然后再编写FB中的控制程序。
以上是打开放水阀程序,当按下放水阀开按钮时,放水电磁阀打开,按下放水阀关按钮或者水位达到低水位时,关闭放水阀。
以上标记水箱空标志程序,因为水箱出现空信号后可以进行注水操作,但是一次只能对一个水箱进行注水,所以当标记水箱为空标志信号为1时,才可以进行注水操作。
当水箱水位到达低水位,则说明水箱是空的,这时如果另外两个水箱的空标记信号没有,那么这个水箱的空标记信号输出为1,如果另外两个水箱已经有水箱出现空标记信号的话,那么这个水箱的空标记信号不能输出为1。
而且当这个水箱开始注水时,水箱的空标记信号需要复位。
以上是开进水阀程序,当水箱空标记为1时,就可以打开进水电磁阀,同理因为一次只能对一个水箱进行注水操作,所以如果检测到另外两个水箱有注水操作时,那么这个水箱也不能进行注水操作。当达到高水位时停止关闭进水电磁阀,停止注水操作。
5、调用模拟量处理FC块和水箱控制FB块程序(案例源程序获取,请看文末)
添加一个FB块,并命名为“水箱水位控制程序”,我们在这个FB块中调用模拟量处理FC块,模拟量处理FC块的作用是对每隔水箱的液位传感器的数据进行处理。
此外还要调用水箱控制FB块程序,需要注意调用FB块在分配背景数据块时,要选择多重实例背景,调用之后编写每隔水箱的放水和进水的程序。
(案例源程序获取,请看文末)
以上程序对应的变量表,包括名称、地址、数据类型如下图所示。
6、主程序OB1中调用水箱水位控制程序的FB块
这样,我们就完成了整个控制案例的程序设计,当然这并不是一个完整的项目,如果是应用到实际项目中,可能还会有其他需要考虑的问题哦,这个就等待大家家去思考啦~
技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究~
相关问答
plc高低电平接法?
PLC是高电平输入,只需将0V连接到PLC的com端子或plc电源的0v端子,如果你的plc是低电平输入,则只需将24V连接到com端子或plc的24v端子。只要在输入端形成回路就...
plc怎么变高电平?
通过中间继电器的触点,可以将电路从连接到低电平转换连接到高电平,或者反过来将连接到高电平的线路转换连接到低电平;具体将需要变换的线路接到中间继电器的...
PLC怎样测量电线直径?
PLC(可编程逻辑控制器)通常不能直接测量电线直径,因为它主要用于自动化控制。然而,可以通过使用传感器来测量电线直径。例如,可以使用激光传感器或光电传感...
plc感应器怎么对零点?
要对PLC感应器进行零点校准,可以按照以下步骤进行:1.确认感应器的安装位置:感应器通常用于检测物体的位置、距离或运动等。需要确定感应器的安装位置,并将...
三菱高低位转换指令?
高低字节交换指令SWAP的功能指令编号为FNC147。它的源操作数可取KnY、KnM、KnS、T、C、D、V和Z。16位运算占5个程序步,32位运算占9个程序步。一个字节...高...
2D公差符号代号表示2D图纸标题明细栏中尺寸公差:1PLC±0.1,2...
[最佳回答]1PLC代表上偏差.2PLC代表下偏差.至于ANGL嘛,应该是旋转角的意思.
如何查看西门子plc公共端输出高低电平?
查看西门子plc公共端输出高低电平的方法PLC的输入跟输出的是高电平还是低电平,跟PLC的输出型号有关系,1、FX1系列或FX2系列例如FX1N-40MT(晶体管输出)输...
PLC编程语言?
1.LadderDiagram(梯形图):是PLC最常用的程序设计语言,采用电气线路图的形式表示控制逻辑,能够可视化控制方案,易学易懂。2.FunctionBlockDiagrams(.....
agv是用plc控制吗?
1.是的,AGV(自动导引车)通常是使用PLC(可编程逻辑控制器)进行控制的。2.这是因为PLC具有高度可编程性和灵活性,能够满足AGV在不同场景下的控制需求。PLC...
plc变频器25hz参数?
1、对于PLC变频器,25Hz参数包括:输出频率(25Hz)、输出电压(视具体需求而定)、输出功率(根据负载需求)、额定电流(根据负载需求)、控制方式(如V/F控制...1、对...