通过单片机实现对PLC的不同控制和操作

2019-07-04 13:38:37 来源:互联网
标签:
HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机[1]作为其核心控制器,以实现实时快速处理。PLC和单片机结合不仅可以提PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。
 
1、 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。
 
它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机[1]作为其核心控制器,以实现实时快速处理。PLC和单片机结合不仅可以提PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。
 
 
2、Modbus通讯协议
 
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。 Modbus协议提供了主—从原则,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。主设备查询的格式:设备地址(或广播,此时不需要回应)、功能代码、所有要发送的数据、和一错误检测域。从设备回应消息包括确认地址、功能码、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
 
控制器能设置为两种传输模式:ASCII和RTU,在同样的波特率下,RTU可比ASCII方式传送更多的数据,所以采用KTU模式。
 
(1)典型的RTU消息帧
 
典型的RTU消息帧如表1所示。
 
 
RTU消息帧的地址域包含8bit。可能的从设备地址是0...127(十进制)。其中地址0是用作广播地址,以使所有的从设备都能认识。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。
 
RTU消息帧中的功能代码域包含了8bits,当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为;当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应,一般是将功能码的最高位由0改为1)。
 
从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的行为。这包括了像不连续的寄存器地址,要处理项的数目,域中实际数据字节数。如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。
 
当选用RTU模式作字符帧时,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测(CRC)方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。
 
(2)所有的Modbus功能码
 
Modbus的功能码定义如表2所示。
 
3、常用功能通讯程序的设计
 
本文介绍了几个Modbus常用功能程序的设计。笔者采用单片机作为主机,在单片机上编写程序实现单片机与PLC之间的通讯。由单片机向PLC发出命令信息,PLC自动作出回应。PLC通过单片机的串行通讯口通讯,程序用C51实现。程序的子函数及其功能:
 
(1)串口初始化
 
voidProtocolInit(void)
 
函数功能:串口设置为异步通讯方式1(起始位1位,数据位8位,停止位1位);定时/计数器1设置为波特率发生器,通讯速率9600bps;开串行中断,并把串行中断设置为高优先级。
 
(2)CRC简单函数
 
unsignedcharCrc16(unsignedchar*puchMsg,unsignedcharusDataLen)
 
函数功能:先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
 
(3)初始化变量
 
voidInitvar(void)
 
函数功能:初始化所有过程变量。
 
(4)串行中断服务程序
 
voidProtocolSerialProcess(void)interrupt4using2
 
函数功能:发送中断发送主机形成的命令数组,发送完后置标志位;接收中断接收PLC返回的响应数组,存入接收数组,并置标志位,且假设响应正确,留待主机处理。
 
(5)读N个位变量(线圈)
 
voidProtocolRead_bit(unsignedcharDeviceAddr/*PLC局号*/,unsignedcharRegType/*寄存器类型*/,unsignedintBitAddr/*起始地址*/,unsignedcharSubAddr/*子地址*/,unsignedintBitNum/*位数*/)
 
函数功能:根据函数参数,形成读N个位变量的命令数组,启动发送。等待发送完并接收完(如超时未接收完则重新发送)。分析接收数组:正确,保存读取的数据;错误,重新发送。
 
(6)写一个位变量
 
voidProtocolSetBit(unsignedcharDeviceAddr/*PLC局号*/,unsignedcharRegType/*寄存器类型*/,unsignedintBitAddr/*地址*/,unsignedcharSubAddr/*子地址*/,unsignedi
 
ntClrSet/*写值“1”或“0”*/)
 
函数功能:根据函数参数,形成置某位变量为“1”或“0”的命令数组,启动发送。等待发送完并接收完(如超时未接收完则重新发送)。分析接收数组:正确,返回;错误,重新发送。
 
(7)读N个字节变量
 
voidProtocolReadByte(unsignedcharDeviceAddr/*PLC局号*/,unsignedcharRegType/*寄存器类型*/,unsignedintRegAddr/*起始地址*/,unsignedcharSubAddr/*子地址*/,unsignedintRegNum/*个数*/)
 
函数功能:根据函数参数,形成读N个字节变量的命令数组,启动发送。等待发送完并接收完(如超时未接收完则重新发送)。分析接收数组:正确,保存读取的数据;错误,重新发送。
 
(8)写N个字节变量
 
voidProtocolSetByte(unsignedcharDeviceAddr/*PLC局号*/,unsignedcharRegType/*寄存器类型*/,unsignedintRegAddr/*起始地址*/,unsignedcharSubAddr/*子地址*/,unsignedintRegNum/*个数*/)
 
函数功能:根据函数参数,形成写N个字变量的命令数组(要写的数从某参数数组中读取),启动发送。等待发送完并接收完(如超时未接收完则重新发送)。分析接收数组:正确,返回;错误,重新发送。
 
4、结束语
以上的程序已经通过实验,并应用于实际的人机系统中。依照类似的方法,可以编写其他不同功能的程序,实现对PLC的不同控制和操作。利用单片机和PLC进行优势互补,可以组成网络化、智能化的工业控制系统。另外整个单片机系统程序用C51语言编程,程序简洁,便于阅读与调试。单片机和人机界面结合可以实时的显示PLC的工作状况,实时的控制、设置、调整PLC工作情况,提高工业控制的自动化程度和实时性。
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
海思新推 PLC-IoT 芯片,其中技术知多少?

电力线载波通信是电力系统特有的通讯方式。它具备不需要重新架设网络,成本较低,相较于其它无线技术,传输速度相对较快等诸多优点。然而,电力线载波通信受外界信号干扰和噪声影响比较大。海思最新推出一款Hi3921 PLC芯片可以提供稳定的电力线载波通信性能,并且具备了抗噪声、抗衰减等特性,成为了用户的不二之选。

单片机最小系统常见问题解析

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统. 对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.

基于 MPPT 的光伏发电系统介绍
基于 MPPT 的光伏发电系统介绍

之前我们简单地聊过光伏发电系统中的MPPT,聊了它大概的工作原理以及几种控制方式,今天我们再继续聊聊MPPT~

可预置可逆4位计数器设计
可预置可逆4位计数器设计

利用AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端,接四个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关,用来作加计数和减计数开关。

PLC梯形图中如何辨别辨别AND和OR命令
PLC梯形图中如何辨别辨别AND和OR命令

初学plc梯形图时,有两个逻辑指令很容易混淆。辨别AND和OR这两个指令很简单,其实从它们的含义就可区分,英文单词AND意思是和、与,OR意思是或者,因此两个在应用到逻辑电路里面的作用就能一目了然。

更多资讯
RISC-V暗潮涌动,ARM随变而变

X86架构和Arm架构厮杀多年,x86折戟了移动处理器市场,Arm也没能在服务器市场分到多少羹,两者各自安好,x86依然在PC处理器市场独领风骚,Arm依然在移动处理器市场稳坐老大。就在大家都认为主流架构市场会以当前格的局长治久安时,发生了中兴事件,打疼了中兴,打来了RISC-V崛起的机会。

造出巨型芯片的公司,到底是个怎样的存在?

其面积42225 平方毫米,拥有1.2 万亿个晶体管,400000 个核心,片上内存18G字节,内存带宽19PByte/s,fabric带宽100Pbit/s。是目前芯片面积最大的英伟达GPU的56.7倍。

日韩争端下,存储市场滑向失控,国内存储厂商能否顺势追赶?
日韩争端下,存储市场滑向失控,国内存储厂商能否顺势追赶?

也许是美国近两年发出的一张张“实体清单”给了日本启示,韩国半导体产业成为日本展开狙击的目标。 日本政府一张“出口管控”把韩国企业陷入困境。

DSP功放又是怎么回事?
DSP功放又是怎么回事?

DSP功放是指采用DSP芯片,可以通过电脑调教,每个声道的参数(EQ延时分频点等),是可以通过电脑更好的管理功放。

将细胞变成数字信号处理器是什么样的操作?
将细胞变成数字信号处理器是什么样的操作?

如今,一门新兴的前沿科技:合成生物学(synthetic biology)正蓬勃发展。它让科学家将目光转向对细胞的进行编程,将细胞转化为“活”的计算机,使之完成一系列有价值的任务,例如生产药物、精细化学品和生物燃料,检测病原体以及在体内释放医药分子。