浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子模块总代理商-商丘

西门子plc是一种应用于企业的计算机,全名为可编程控制器。 在西门子PLC投入运行时,其工作过程一般分为三个阶段,即输入采样、用户程序执行和输出刷新三个阶段。完成上述三个阶段称作一个扫描周期。在整个运行期间,西门子PLC的CPU以一定的扫描速度重复执行上述三个阶段。
中央处理器是西门子PLC正常工作的神经中枢,当PLC投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后按指令的规定执行逻辑或算数运算的结果送入I/O映象区或数据寄存器内。等所有的用户程序执行完毕之后,后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行,直到停止运行。
其次是存储器。存储器是存放系统软件的称之为系统程序存储器;存放应用程序的存储器则被我们成为是用户成粗存储器。
其三是电源。当PLC投入运行后,其工作过程一般分为三个阶段,即输入采样、用户程序执行和输出刷新三个阶段。完成上述三个阶段称作一个扫描周期。
以上就是由电工论坛整理的西门子PLC工作原理以及内部构造的简要介绍。


一、引言

    在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用语言开发一个简易实用的通信程序。微软公司推出的Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件MSCOMM.OCX。利用Windows API函数是通过调用读写等函数来操作串口。两种比较,使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了MSCOMM.OCX控件。

本文根据杭州某包装材料公司原料配料控制系统为背景,简述实现计算机与三菱FX系列PLC通信的实现过程。

 

二、硬件与选型

日本三菱公司是国际的工厂自动化设备制造商,工业可编程控制器在占有率一直保持前列。项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。系统框图如图一所示:

圆角矩形标注:  SC-09电缆                       


                            


            计算机                          三菱 PLC

                          图一

三、软件编程

    软件设计主要包括PLC梯形图设计和计算机VB程序、数据库设计。计算机操作系统为Windows98,编程语言用Visual Basic 6.0,数据库选用Access97,梯形图程序在三菱PLC编程软件GPPWIN 软件环境设计。上位机软件实现计算机对PLC内部数据读取、写入参数和保存数据到数据库。

三菱FX2N型PLC编程口通信协议如下:

命令

命令字

控制元件

     备注

读元件

0

X,Y,M,S,T,C,D

读字/位元件状态

写元件

1

X,Y,M,S,T,C,D

写字/位元件状态

置位

7

X,Y,M,S,T,C

位元件置位

复位

8

X,Y,M,S,T,C

位元件复位

      通信格式:

 起始符

命令字

首地址

数据区

结束符

和校验

      波特率9600,偶校验,8位数据位,一位停止位。

   在新建工程的表单上添加MSCOMM.OCX控件,初始化程序:

     Private Sub Form_Load()

     MSComm1.CommPort = 1 '选择COM1口

     MSComm1.Settings = "9600,e,7,1" 

     End Sub


系统参数主画面如下图所示: 


                           图二

    数据读取子程序:

Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String

  MSComm1.InputLen = GetBytes * 2 + 4

  MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)

   ‘传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码

  GetData = MSComm1.Input

  MSComm1.InBufferCount = 0

  MSComm1.InputLen = 0

End Function

    如需读取数据,通过调用GetData子程序。

    参数设置程序可参考读取子程序,只是改变命令而已。

Access97数据库中包含三个表单,包括参数表、记录表、报警记录表。

通过如下子程序是将实际称量值(记录表)更新到数据库:

 44.webp.jpg

技术规范


Private Sub SaveData()

Dim i As Integer

Dim valid As Boolean

On Error Resume Next

valid = True

Data1.Recordset.AddNew

Data1.Recordset.Fields("dtime") = TimeSerial(OnHour, OnMinute, OnSecond)

Data1.Recordset.Fields("systime") = Time      ‘系统时间

Data1.Recordset.Fields("get_xl") = LF(1)      ‘小料当前称量值

Data1.Recordset.Fields("get_fjs") = LF(2)       ‘方解石当前称量值

Data1.Recordset.Fields("get_cs") = LF(3)      ‘长石当前称量值

Data1.Recordset.Fields("get_sys") = LF(4)      ‘石英砂当前称量值

Data1.Recordset.Fields("get_cj") = LF(5)        ‘纯碱当前称量值

On Error Resume Next

Data1.Recordset.Update                    ‘更新数据库记录

Data1.Recordset.MovePrevious

End Sub

程序中,LF(i)变量对应为图二系统参数表单中实称值。

保存参数子程序只是对数据库操作,程序结构可参考以上子程序。

上位机与PLC通信质量的好坏,对系统的安全可靠运行影响极大,因此,编写程序时,除了在两者之间的通信协议上保持一致和采取相应的容错技术外,还要考虑系统的整体容错技术,防止系统的不正常。

四、结束语

    串行通信是目前计算机与其他设备之间通信广泛采用的方式之一,传送数据准确,程序稳定运行是系统开发的主要目的。本设计中充分利用计算机和PLC的资源,在几乎不增加设备开支的情况下成功的实现上位机与PLC之间的通信。

 

参考文献

1、美国 ·Microsoft Visal Basic 6.0 Controls reference 控件参考手册

2、舒继武·Visual Basic 中通信及应用·微型机与应用,1996;

3、陈小欧·Windows环境下串口异步通信程序设计·电子技术应用



发布时间:2023-10-26
展开全文
优质商家推荐 拨打电话