搜档网
当前位置:搜档网 › VB上位机与PLC通信

VB上位机与PLC通信

VB上位机与PLC通信
VB上位机与PLC通信

随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、可靠性高等一系列优点长期以来获得了广泛的应用。计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用价值,特别在Windows下的串口通信可以充分利用Windows

下的软件资源优势,实现多任务条件下对外部的数据传输、信息收集和处理。在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。在PLC与上位计算机之间采用RS-485和RS-232C标准通信接口进行通信。

在两级计算机控制系统中,最不稳定的环节就是上位机。为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。上位机需要通过串行通信取得所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC 的数据存储区。因此,串行通信作为上位机和下位机联系的唯一方式,在整个系统中具有非常重要的作用。

1.1上位机与PLC间的串行通信

计算机与计算机或计算机与外部设备之间的数据传输和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。

1.1.1串行通信

串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。

1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共

享一个时钟或定时脉冲源保发送方和接收方准确同步。这种通信方式的效率较高,但是对时钟同步要求非常严格,成本较高。

2.异步串行通信方式:异步串行通信以字符为信息单位传送。双方需要遵守异步通信协议,以字符为数据单位,发送方传送字符的时间间隔不确定。每个字符传输都以起始位开始,以停止位结束。通信双方所指定的字符的数据位数,奇偶校验方法和停止位数必须相同。其传输效率比同步通信方式低,但是成本较低。

异步通信是在以起始位开始、停止位结束的一个字符内按约定的频率进行同步接收。各个字符之间允许有间隙,而且两个字符之间的间隔是不固定的。在同步通信方式中,不仅同一字符中的相邻两位间的时间间隔要相等,而且相邻字符间的时间间隔也要求相等,这也是同步通信和异步通信方式的主要差别所在。

因此,异步串行通信一般用在数据传送时间不能确知,发送数据不连续,数据量较少和数据传输速率较低的场合;而同步串行通信则用在要求快速、连续传输大批量数据的场合。

1.1.2串行通信接口标准

在串行通信时,要求通信双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通信。在设计通信接口时,一般都采用标准接口以提高其通用性。本系统中,上、下位机进行通信首先面临的问题就是通信标准的选择问题。

1、RS-232C接口标准

RS-232C接口标准(全称EIA-RS-232C标准)是在1969年由美国电子工业联合会(EIA,Electronic Industrial Associate-Recommended Standard-232C)与Bell公司、调制解调器厂家及计算机终端生产厂家共同开发的用于串行接口的通信协议。它最初是为远程通信连接数据终端设备DTE(Data Terminal Equipment)和数据通信设备DCE(Data Commu

nication Equipment)而制定的[46]。虽然这个标准的制定没有考虑计算机系统的应用要求,但是广泛的用于计算机与终端或外设之间的连接。

RS-232C标准规定了在串行通信时,数据终端设备和数据通信设备之间的接口信号。其中常用信号的名称、引脚号以及功能如表4-1所示。

表4-1 RS-232C常用信号定义

引脚号信号名称简称信号功能说明

2 发送数据TxD DTE向DCE发送串行数据

3 接收数据RxD DTE从DCE接收串行数据

4 请求发送RTS 请求通信设备切换到发送方向

5 清除发送CTS 响应DTE请求,提示DCE开始发送

6 数据设备就绪DSR DCE通信设备就绪

7 信号地SG 整个电路的公共信号地

8 数据载波检测DCD DCE收到载波

20 数据终端就绪DTR DTE终端设备就绪

22 振铃RI 通信线路上有振铃

RS-232C的电气特性:RS-232C采用的是负逻辑工作,即逻辑“1”用负电压(-3~-15V)表示,逻辑“0”用正电压(+3~+15V)表示。介于-3V和+3V之间以及低于-15V或高于+15V的电压没有意义。实际工作时,应保证电平在±(5~15)V之间。由于RS232C是用正负电压来表示逻辑状态,与以高低电平表示逻辑状态的TTL不同。为了能够同计算机接口或终端的TTL器件连接,必须进行电平和逻辑关系的转换。目前使用较为广泛的是集成电路转换器件,如M C1488和MC1489。

RS-232C的机械特性:虽然RS-232标准定义了25个信号,但进行异步通信时实际只用到了9个信号:2个数据信号、6个控制信号和1个信号地线。因此RS-232的连接器主要有DB25和DB9两种类型。现在微型计算机上均采用DB9型连接器作为主板上COM1和CO M2两个串行口的连接器,其引脚及信号分配如图4-2所示。

3、RS-485接口标准

RS-485标准也是一种平衡传输方式的串行接口标准,它和RS-422A兼容并且扩展了RS-422A的功能。

RS-485的电气特性:逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。数据最高传输速率为10Mbps。RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗干扰性好。RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米。RS-485接口在总线上是允许连接多达128个收发器,具有多站能力,用户可以利用它建立起设备网络。RS-485接口由于具有良好的抗干扰性、传输距离长和多站能力等优点使其成为首选的串行接口。

本系统中,上位机和下位机的通信运用了以上标准中的RS485和RS232C两种通信标准。计算机具有标准RS232C接口,而PLC具有标准RS485接口,两者通过电缆和RS485/R S232C转换模块连接(如图所示4-3)。

1.2通讯参数设置和通讯测试界面

在供水自动化监控系统中,信息管理及监控软件作为处理、显示和存储数据的核心,主要负责对各个电动机的转速和各处管道压力的查询、监控以及报警的处理。运行信息管理及监控软件的计算机与PLC之间的通讯主要是通过RS-232C串行接口(PC机一般提供了COM1和COM2两个串行口)进行通讯,实现系统的监测控制和信息管理功能。

本系统中上位机的信息管理及监控软件运行在Windows2000/NT操作系统下,串行通讯程序运用Inprise公司推出的快速开发工具Delphi 6.0开发。PPI通信协议是西门子专为S 7-200系列PLC开发的一个通信协议,物理上采用RS485信号电平,PLC默认处于该方式。

使用PPI方式对PLC编程及调试监控,其硬件连接只需通过编程(PC/PPI)电缆即可实现。软件编程采用中文环境、内部系统协议,设计人员只需通过软件设置一下参数,数据如交换不需要考虑,用NETR和NETW 两条语句即可进行数据的传递。

1.2.1通讯参数设置

为了进行串口通信, 实现系统的监测控制和信息管理功能,必须对通讯参数加以设置。

通信设置:

串口:COM1、COM2

波特率:300、600、1200...

校验方法:N、E、M、O、S

数据位数

停止位数:

Setting:

缓冲区设置

接收缓冲区:字节

发送缓冲区:字节

数据传送方式

文本形式和二进制形式

流控制

不握手(默认)、XON/XOFF方式、

RTS/CTS方式、XON/XOFF AND RTS/CTS方式

1.2.2通讯测试界面

通信测试界面如图4-5所示。

通讯设置

Setting属性值

commport属性值

通讯状态

串口状态

发送字节数

接收字节数

数据显示

接收数据显示

发送数据显示

1.3 PLC通信程序设计

1.3.1 PLC网络通信协议[19]

本系统采用的PLC是德国SIEMENS公司生产的S7-200系列,主模块采用CPU226,扩展模块采用数字量扩展模块EM222和模拟量扩展模块EM235。

S7-200系列CPU具有强大的通信能力。主要支持以下几种协议:

1.PI(Point-to-Point)协议,即点到点接口协议。PPI是一个主/从协议,主站(其它CPU或SI MATIC编程器)给从站发送申请,从站进行响应。从站不初始化信息,只响应主站的申请或查询。如果在用户程序中允许PPI主站模式,S7-200 CPU在RUN模式下可以作为主站,还可以利用网络读(NETR)和网络写(NETW)指令读写其他CPU,同时也能够作为从站响应

来自其它主站的申请。采用PPI协议的网络中最多只能有32个主站。该协议主要是用来编程、PPI组网等

2.MPI(Multi-Point)协议,即多点接口协议。MPI可以是主/主协议或主/从协议,协议如何操作依赖于设备类型(设备是S7-200系列CPU时建立主/从连接)。MPI总在两个相互通信的设备之间建立连接,其它主站不能干涉两个设备之间已建立的连接。由于S7-200的连接是非公用的,并且需要CPU中的资源,每个S7-200 CPU只能支持4个连接,每个EM2 77模块支持6个连接。在使用时,每个S7-200 CPU和EM277模块保留两个连接,分别用于连接SIMATIC编程器(或计算机)以及操作面板。这些保留连接不能被其它类型的主站使用。

3.ROFIBUS协议。PROFIBUS协议设计用于分布式I/O设备(远程I/O)的高速通信。PRO FIBUS网络通常有一个主站和几个I/O从站,主站配置成知道所连接的I/O从站的型号和地址。主站初始化网络并核对网络上的从站设备和配置中的是否匹配。主站连续的把输出数据写到从站并从它们读取输入数据。

4.户自定义协议(自由口协议)。自由口协议可以由用户定义通讯协议,通过用户程序控制S 7-200通信口的操作模式,将CPU与任意通讯协议公开的设备联网,如上位计算机、打印机、变频器等。用户程序通过使用接收中断、发送中断、发送指令(XMT)和接收指令(RCV)来控制通信口的操作。在自由口模式下,通信协议完全由用户程序控制。用户程序通过设置SMB30(0口)允许自由口模式,而且只有在CPU处于RUN模式时才能允许。当CPU处于STOP模式时,自由口通信停止,通信口转换成正常的PPI协议操作。

可以利用PC/PPI电缆和自由口通信功能把S7-200 CPU连接到许多和RS-232标准兼容的设备。PC/PPI电缆支持波特率设置,利用PC/PPI电缆盒上的DIP开关可以配置所需的波特率。波特率和开关位置的对应关系如表4-6所示:

表4-6 波特率和开关位置对应表

波特率38400 19200 9600 4800 2400 1200 600 300

开关(1=上) 000 001 010 011 100 101 110 111

当数据从RS-232传送到RS-485口时,PC/PPI电缆是发送模式。当数据从RS-485传送到RS-232口时,PC/PPI电缆是接收模式。当检测到RS-232的发送线有字符时,电缆立即从接收模式转换到发送模式。当RS-232发送线处于闲置的时间超过电缆切换时间时,电缆又切换到接收模式。这个时间与电缆上的DIP开关设定的波特率选择有关,如表4-7所示:

表4-7 PC/PPI电缆转换时间(发送模式到接收模式)

波特率38400 19200 9600 4800 2400 1200 600

转换时间(ms) 0.5 1 2 4 7 14 28

在使用自由口的系统中使用PC/PPI电缆时,必须在S7-200 CPU的用户程序中包含转换时间。S7-200 CPU在接收到RS-232设备的申请信息后,S7-200 CPU的发送信息响应必须延迟超过或等于电缆的切换时间。RS-232设备在接收到RS-232设备的申请信息后,S7-200 CPU的下一次申请信息的发出必须延迟超过或等于电缆的切换时间。在以上两种情况中,需要通过延迟使PC/PPI电缆有足够的时间从发送模式切换到接收模式,以便于数据从RS-485口传送到RS-232口。

1.3.2 PLC通信程序设计

PLC作为控制系统中的下位机,不主动发送数据而是被动的响应上位机的命令,根据上位机的指令进行数据发送和接收。PLC中的通信程序由主程序、三个子程序和三个中断组成,通信程序的流程如图4-4所示。

1、主程序

PLC在第一次扫描时执行初始化子程序,对端口及RCV指令进行初始化。初始化完成后,使端口处于接收状态。RCV指令将接收到的数据保存到接收缓冲区,同时产生接收完成中断。PLC每接收到一条指令后都会发送一条反馈信息,发送完成后产生发送完成中断。程序中使用的标志位含义约定如下:

M0.0:BCC校验正确则置位;

M0.1:Verify子程序的触发条件,被置位表示进行BCC校验。

//主程序

LD SM0.1

CALL Init

LDB= VB117, VB150 //接收数据

AB= VB103, 16#05

A M0.0

CALL Recv

LDB= VB117, VB150 //发送数据

AB= VB103, 16#06

A M0.0

CALL Send

LD M0.1 //校验

CALL Verify

RCV VB100, 0

2、通信初始化子程序(Init)

本系统采用自由口通信,通信协议为自定义的。用户可以通过设置PLC中相应的特殊寄存器SMB30等的参数改变485口的波特率、数据格式(数据位数、停止位、校验),以适应不同的通讯协议。PLC采用了特殊存储器(SM)标志位,提供大量的状态和控制功能,并且能够使CPU和用户程序之间交换信息。

SMB30和SMB130是自由端口控制寄存器。SMB30控制自由端口0的通信方式,SMB13 0控制自由端口1的通信方式。这两个寄存器是用来设置自由端口通信的操作方式,并提供自由端口或者系统所支持的协议之间的选择。Pp用于校验选择,00和10表示不校验,01表示奇校验,11表示偶校验。d用于指定每个字符的数据位,0表示8位字符,1表示7位字符。bbb用于选择自由口通信的波特率,其含义同表4-2。mm用于协议选择,00表示P PI/从站模式,01表示自由口协议,10表示PPI/主站模式,11保留不用。

SMB87或SMB187用于控制接收信息的标志;SMB88或SMB188用于指定开始的信息字符;SMB88或SMB188用于指定结束的信息字符。SMB94或SMB194用于指定端口0或端口1接收字符的最大个数(1~255Byte)。该区要设为需要的最大缓冲区,否则可能会丢失信息。

本系统采用端口0,自由口方式通信,波特率为9600Kbps,发送数据的最大长度为16。因此SMB30的值为09H(十六进制),SMB87的值为ECH(十六进制),SMB94的值为1 6。当PLC的工作模式开关处于“RUN”(SM0.7=1)时初始化通信端口,初始化完毕打开接收数据中断。PLC的通信初始化程序如下:

//通信初始化子程序

MOVB 16#09, SMB30

MOVB 16#EC, SMB87

MOVB 103, SMB88

MOVB 71, SMB89

MOVW +1000, SMW92

MOVB 16, SMB94

R SM87.2, 1

LD SM0.0

ATCH INT_1, 23

ATCH INT_2, 9

ENI

LD SM0.0

MOVD &VB102,VD120

MOVB 2, VB150

MOVB 0, VB147

MOVB 0, VB148

2、发送子程序(Send)

在PLC接收到上位机的读取数据命令后,调用发送程序将指定的数据通过端口0发送给上位机。在PLC的存储区中,从VB126到VB141为约定的数据存储区,VB125为发送的数据个数。发送完数据后,打开发送完成中断。

//发送子程序

R SM87.7, 1

R M0.0, 1

RCV VB100, 0

MOVB 103, VB126 MOVB 16#01, VB127 MOVB 26, VB141 MOVB 16, VB125

LD SM0.0

FOR VW121, +1, +12 XORB *VD121, VB148 INCD VD181

NEXT

LD SM0.0

HTA VB148, VB140, 1 XMT VB125, 0

3、接收子程序(Recv)

LD SM0.0

R SM87.7, 1

R M0.0, 1

RCV VB100, 0

MOVB 21, VB125

MOVB 103, VB126

MOVB 16#02, VB127

MOVB 16, VB141

LD SM4.5

XMT VB125, 0

4、接收完成中断(INT_0)

接收完成中断用来处理接收完成中断事件,它将接收缓冲区的数据还原并保存,同时将M0. 1置位。

//接收完成中断

LD SM0.0

ATH VB102, VB123, 1

ATH VB104, VB129, 1

ATH VB115, VB140, 1

S M0.1, 1

MOVB 0, VB147

MOVD &VB102, VD120

5、发送完成中断(INT_1)

发送完成中断用于处理发送完成中断事件,主要是将M0.0复位、BCC码寄存器清零、将接收缓冲区中存放结束字符的字节清零等。

//发送完成中断

LD SM0.0

R M0.0, 1

S SM87.7, 1

MOVB 0, VB147

MOVB 0, VB148

MOVD &VB102, VD120 MOVB 0, VB100

6、BCC校验程序(Verify)

将接收到的数据进行异或和校验。

LD SM0.0

R M0.1, 1

LD SM0.0

FOR VW143, +1, +12

LD SM0.0

XORB *VD121, VB147

LD SM0.0

INCD VD121

NEXT

LDB= VB147, VB119

AB= VB116, 71

S M0.0, 1

LDB= VB116, 71

AB<> VB147, VB119

MOVB 16, VB119

MOVB 16#03, VB125

R SM87.7, 1

RCV VB100, 0

XMT VB125, 0

LDB<> VB116, 71

MOVB 16, VB125

MOVB 16#04, VB127

R SM87.7, 1

RCV VB100, 0

XMT VB125, 0

1.4 上位机的通信模块设计

该恒压供水监控系统采用一台工控机对泵房的水泵机组进行监控,监控程序程序的功能包括水位、水压、电机速度信号的采集;监测显示水泵机组的工作状态和运行情况;检测故障信号,进行报警及语言提示;相关数据的存储、动态实时报表、历史数据的随时查询、打印;根据现场工作情况发出控制指令给PLC实行水泵机组的切换;根据生产实际情况修改工作参数等等。系统软件采用Delphi高级语言编程,能够及时准确地对供水自动化生产实行监控。串行通信作为上位机和下位机联系的桥梁,因此上位机通信模块设计在整个监控程序占有非常重要的地位。

用Delphi实现串口通信,最常用的办法是使用控件(如MSCOMM等),利用MSCOMM 控件开发串口通信程序,只需设置相关的属性,使用相关的方法与相应的事件,实现串口通

信较为简单方便。本系统中上位机的信息管理及监控软件运行在Windows2000/NT操作系统下,并利用MSCOMM控件开发设计了上位机与PLC的串行通信程序,对供水系统的运行状态进行监控。MSComm32控件的主要属性、方法及事件如下[6-8]:

CommPort属性:用于设置或返回通讯端口号。计算机的串行通讯端口一般有COM1和C OM2两个,必须在打开端口以前设置该属性。如果设置的端口不存在,运行时会产生设备无效错误。

CommEvent属性:返回通信事件或错误。

Setting属性:设置并返回初始化参数,即波特率、奇偶校验、传输数据位和停止位。InputMode属性:设置或返回接收到的数据的类型。缺省为ComInputModeText表示以文本(ASCII码)形式接收数据,而ComInputModeBinary表示以二进制形式接收数据。Input属性:返回并删除接收缓冲区中的数据,在设计时Output属性:向输出缓冲区中写入数据,在设计时无效,运行时为只读。

Output属性:向输出缓冲区中写入数据,在设计时无效,运行时为只读。

PortOpen属性:设置并返回通信端口开或关的状态,运行时有效。

CommInit方法:初始化并打开指定的串口。

RecvData方法:接收数据。

SendData方法:发送数据。

ComOpenOrClose方法:打开或关闭串口。

OnComm事件:当CommEvent属性的值发生变化时,就产生此事件,标志发生了一个通信事件或错误。

通信模块作为上位机和PLC交换数据的平台,具有十分重要的作用。通信模块的设计主要包括几个方面:

1、串口初始化。串口初始化包括设置通信协议、输入输出缓冲区大小等内容。

2、数据的接收和发送以及校验。上位机首先发出命令给PLC,PLC从串口输出缓冲区内接收数据,然后PLC自动发送一个响应帧,上位机检测到输入缓冲区的数据开始接收数据。命令帧的格式为站号、读/写操作类型、发送数据、校验码、结束字符。响应帧的格式为站号、接收数据、校验码、结束字符。为了保证通信数据的正确性,上位机对接收到的数据需要进行校验,校验是通过一个BCC校验函数来进行。BCC校验码就是将要传送的字符串的ASCII码以字节为单位作异或运算,并将异或运算结果作为指令的一部分传送出去。

3、数据转换。由于PLC在发送数据时,有些模拟量数据,如管网压力和电机转速,采用的是二进制的形式,在计算机接受到数据之后必须进行转换,方能正确显示。

4、错误处理和报警。对于传输过程中可能出现的各种错误,需要采取相应的处理措施,不可恢复的严重错误必须报警。

通信模块中的部分事件源代码如下:

//串口初始化

procedure https://www.sodocs.net/doc/795885948.html,mInit;

begin

if MSComm1.PortOpen then MSComm1.PortOpen:=false;

MSComm1.Settings:=cboSetting.Text;

if chkTextOrBin.Checked then

MSComm1.InputMode:=ComInputModeText//文本形式

else MSComm1.InputMode:=ComInputModeBinary;//二进制形式

MSComm1.InputLen:=0;//读接收缓冲区所有数据

MSComm1.InBufferSize:=CommOption.inbuffer;//设置缓冲区大小

MSComm1.OutBufferSize:=CommOption.outbuffer;

MSComm1.RThreshold:=1;//每接收到一个字符都产生OnComm事件 if cboCommPort.Text='COM1' then

https://www.sodocs.net/doc/795885948.html,mPort:=1

else

https://www.sodocs.net/doc/795885948.html,mPort:=2;

MSComm1.Handshaking:=CommOption.handshake;//设置握手协议end;

procedure TfrmCommTest.chkSendHexClick(Sender: TObject);

var bChk:boolean;

str:string;

begin

if chkSendHex.Checked then //十六进制形式

begin

bChk:=true;

end

else //字符串形式

begin

bChk:=false;

end;

str:=ConvertHexChar(memSend.Text,bChk);

memSend.Clear;

memSend.Text:=str;

end;

procedure TfrmCommTest.chkRecvHexClick(Sender: TObject);

var bChk:boolean;

str:string;

begin

if chkRecvHex.Checked then //十六进制形式

begin

bChk:=true;

end

else //字符串形式

begin

bChk:=false;

end;

str:=copy(memRecv.Text,1,length(memRecv.Text));//需转换的字符 str:=ConvertHexChar(str,bChk);

memRecv.Clear;

memRecv.Text:=str;

end;

//发送数据

procedure TfrmCommTest.SendData;

var str:string;

begin

str:='';

if not MSComm1.PortOpen then//串口未打开

begin

MessageDlg('请先打开串口!',mtInformation,[mbOk],0);

exit;

end

else //串口已打开

begin

if memSend.Text='' then

MessageDlg('请输入需要发送的数据!',mtInformation,[mbOk],0);

str:=memSend.Text;

sumSend:=sumSend+length(str);

MSComm1.Output:=str;

edit2.Text:=inttostr(sumSend);

end;

end;

//接收数据

VB控件Mscomm控件与PLC进行RSModbus通讯源码

V B控件M s c o m m控件与P L C进行 R S M o d b u s通讯源码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

V B控件M s c o m m控件与P L C进行R S485(M o d b u s)通讯源码本人用的是ModbusRTU通讯模式,通过计算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而达到自动化控制远端设备。 DimHiByteAsByte DimLoByteAsByte DimCRC16LoAsByte DimCRC16HiAsByte DimReturnData(1)AsByte DimKAsInteger DimCmdLenthAsInteger PrivateSubCommand1_Click() K=Text9.Text'写6个字节 Text13.Text="" '===========数组赋值输入代码 =============================================================== ======================== '<<算法一>> DimWriteStr()AsByte DimuAsInteger ReDimWriteStr(K+2)

Foru=0ToK WriteStr(u)=Val("&H"&Text1(u).Text) Next '<<算法二>> DimCRC_2()AsByte DimvAsInteger ReDimCRC_2(K) Forv=0ToK CRC_2(v)=Val("&H"&Text1(v).Text) Next '============================================================== ==================================== CallCRC161(CRC_2()) CallCRC16(WriteStr(),K) MSComm1.InBufferCount=0 '==========显示发送代码 =============================================================== ========================= DimmAsInteger Form=0To23 Ifm<=KThen Text8(m).Text=Hex(WriteStr(m))

VB与AB的PLC之间通讯

VB与AB的PLC之间通讯 2007-05-31 来源:西部工控网浏览:300 [推荐朋友] [打印本稿] [字体:大小] VB与AB PLC之间通讯 AB系列PLC一般都有专用驱动程序用于实现PLC和计算机之间通讯,如RSLINX 就是专门用于做这项工作,但使用RSLINX也具有一定局限性,这里提供一个使用VB编程实现PLC和计算机之间通讯程序,使用协议是DF1,可以支持Micrologix、SLC500等系列PLC。使用代码如下: Option Explicit Dim tns%, comunicating Private Sub Command1_Click() ReDim tb%(10) Dim st If ReadTable(0, tb%()) Then For st = 0 To 9 '显示结果 Text1.SelText = Str(tb%(st)) + Chr(32) Next st Text1.SelText = Chr(13) + Chr(10) End If End Sub Private Sub Command2_Click() ReDim tm%(5) tm%(0) = Rnd * 32768 tm%(1) = Rnd * 32768 tm%(2) = Rnd * 32768 tm%(3) = Rnd * 32768 tm%(4) = Rnd * 32768 If Not WriteTable(4, tm%()) Then Text1.SelText = "写入错误!!" End Sub Private Sub Exit_Click() Unload Me End End Sub Private Sub Form_Load() Comm1.PortOpen = True End Sub

VB与S7 200通讯

本文以下内容为采用VB6.0设计人机界面的工业控制计算机与S7-200PLC 自由口通信进行的方法。 常规的通过PC机,利用PLC对工艺对象的控制,大多都是在具有组态软件或通讯模块的情况下进行,但是对于一些小型的控制系统而言,由于受到简单实用和成本低的原则限制,不适合使用常规方法。利用Visual Basic结合PLC中的通信语言进行编程,实现上位机与PLC之间,在无通讯模块情况下的数据信息的双向通信传输。 SIMATIC S7-200内部集成的PPI接口物理特性为RS485,可在多种模式下工作,其中自由口通信方式是S7-200PLC的一个很有特色的功能,它可以与任何协议公开的其它设备、控制器等进行通信。上位机串口符合RS-232C标准协议,为了实现两者的通信必须进行协议转换,可以利用PC/PPI电缆连接两者,并同时完成协议转换的任务。 控制系统组成 基于VB和PLC的液压试验台监控系统结构如下图所示,主要由上位机监控系统和下位机控制系统组成。 VB6.0提供了串行端口通信控件MSComm,该控件封装了通信过程的底层操作,用户只需设置MSComm控件的属性和对相应的事件进行编程,即可完成串行通信功能。 MSComm控件提供了事件驱动和查询2种处理通信的方法,其中事件驱动方法通过设置CommEvent、Rthreshold等属性实现对MSComm控件的OnComm 事件驱动;查询方法则通常通过OutPut属性直接写输出缓冲区,且通过InPut 属性直接读输入缓冲区实现。因为事件驱动方法程序响应及时、可靠性高,所以本系统采用事件驱动方法实现工控机与PLC之间的串行通信。 1.S7-200PLC的自由口通信 西门子S7-200系列PLC的CPU支持多样的通信协议,如PPI接口协议、

VB与PLC的通信

利用VB6.0 实现PC 与三菱PLC 的通信 本文介绍的 PC 与三菱 FX 系列 PLC 通信,是通过 PLC 的编程口与 PC 机的串口进行的,采用编程电缆作为计算机与 PLC 通信的连线。 FX2系列PLC的编程接口采用RS-422标准,而计算机的串行口采用的是RS-232标准,因此作为实现PLC与计算机通信的接口模块FX-232AW,必须将RS-422标准转换成RS-232标准,同时在实现上述过程中采用光电隔离技术。 图1 一、串口的相关知识 1)串行通信的概念 图2 所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。如图2所示。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢 2)常见的串口通信规约: 目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,且直接用RS232相连。RS-232C: “1”=-3~-15;“0”=+3~+15速率:0~20000bps;一般传输距离:15m。RS-422:采用平衡传输,平衡发送器、差动接收器,速率:10Mbps/15m;90Kbps/1200m抗干扰能力强。

DB9和DB25的常用信号脚说明 由于FX 2-232AW 价格过贵所以我们选用选用MAXIM 公司的MAX202实现RS-232与TTL 之间的电平转换。MAX202内部有电压倍增电路和转换电路,仅需+5V 电源就可工作,使用十分方便;选用MAX490实现RS-485与TTL 之间的转换。每片MAX490有一对发送器/接收器,由于通信采用全双工 方式,故需两片MAX490,另外只需外接4只电容即可。PLC 的RS-422接口配接DB-25型连接器,而PC 机我们一般用DB-9型连接器。硬件电路图如上。 二、 通信控制线的连接 如图3,由于计算机的RS-232接口的4脚和5脚短接,因此,对计算机发送数 据来说,PLC 总是处于数据就绪状态。也就是说,计算机在任何时候都可以将数据送到PLC 内。又由于RS-232的接口的20脚和6脚交叉相连接,因此,对计算机接受数据来说,就必须检测PLC 是否处于准备就绪状态。如果6脚为1,这可以接受数据:如果6脚为0,则必须等待,直到为1时,才可以接受数据。

VB与PLC通信程序.doc

VB与PLC通信程序(欧姆龙PLC)(2007-08-01 21:00:11) 关于VB的MSCOMM控件可参考相关资料。通信程序摘要如下: (1)初始化程序 https://www.sodocs.net/doc/795885948.html,mport=2 ’选择COM2 Mscomm1.Settings=”9600,N,8,2”’设置通信参数 Mscomm1.Inputlen=0 ’读入接收缓冲区全部字符 Mscomm1.OutbufferSize=256 ’设置发送缓冲区大小 Mscomm1.InbufferSize=512 ’设置接收缓冲区大小 Mscomm1.PortOpen=True ’打开COM2 (2)发送命令程序 比如读取节点号03的PLC中IR000到IR009的内容,并放到tag1字符串变量中,此时有: Dim Command, node, begin, number as string Dim Answerlen as integer node=”03”’节点号 Command=”RR”’命令为读IR区 begin=”0000”’从IR000开始 number=10 ’读取长度 Answerlen=51 ’计算接收字符串长度 进行命令发送和接收应答处理: Dim FCS, I as integer Dim s ,f as string s=”@”+node+Commad+begin+number FCS=0 For i=1 to Len(s) FCS=FCS xor Asc(Mid$(s,i,1) ) ’帧校验码FCS Next i f=Hex$(FCS) If Len(f)=1 Then f=”0”+f Commfrm.MSComm1.Output=s + f + ”*” + CHR$(13) ’命令帧发送 Do Dummy=DoEvents() Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen ’等待应答帧 Do tag1= Commfrm.MSComm1.Input Loop Untill Commfrm.MSComm1.InbufferCount=0 ’读完应答帧 上述程序具有相当的通用性,对于其它设备不同的只是各自的数据帧格式,因而只需做相应少量修改即可。

三菱PLC与PC上位机VB通讯

三菱PLC与PC上位机VB通讯 三菱PLC:FX1N + FX1N-232-BD FX2N + FX2N-232-BD 计算机:Windows XP中文企业版+ V isual Basic 6.0中文企业版 Windows 98中文版+ V isual Basic 6.0 中文企业版 两者之间连接使用的是FX-232CAB-1电缆线(2-3,3-2,4-6(8),5-5) 一.三菱PLC的设置 三菱FX PLC在进行计算机链接(专用协议)和无协议通讯(RS指令)时均须对通讯格式(D8120)进行设定。其中包含有波特率、数据长度、奇偶校验、停止位和协议格式等。在修改了D8120的设置后,确保关掉PLC的电源,然后再打开。 此外,对于采用RS485形式1:N计算机链接的还必须对站点号(D8121)进行设定。设定的范围从00H到0FH(即0到15)。 在这里对D8120采用下述设置: b15 b0 0110 1000 1000 1110 6 8 8 E 即数据长度为7位,偶校验,2位停止位,波特率为9600bps,无标题符和终结符,采用计算机链接(RS-232C),自动添加和校验码,采用专用协议格式1。 同时设定站号为0。具体设定如下所示: FX PLC进行计算机链接时可用的专用协议有两种:格式1和格式4。两种格式的差别在于是否在每一个块上添加了CR + LF,其中添加了CR + LF的是格式4。在这里采用格式1。 二.上位机程序的编制 这里采用Microsoft公司的Visual Basic 6.0中文企业版编制上位机程序。 Visual Basic中提供了一个名为MSComm的通信控件便于设计串行通信的程序。MSComm控件的主要属性有: 1.CommPort属性 CommPort属性用于指定所要使用的串行端口的号码。虽然Windows操作系统可以容纳最多256个串行通信端口,不过Visual Basic的MSComm控件则仅限于16个端口。 2.Settings属性 Settings属性用于设置初始化参数。以字符串的形式设置波特率、奇偶校验、数据位、停止位等4个参数。其格式为“BBBB,P,D,S”,其中BBBB表示波特率,P表示奇偶校验位检查方式,D表示数据位数,S表示停止位数。一般情况下,欧美仪器习惯使用“9600,n,8,1”当成设置值;而日本仪器则习惯使用“9600,e,7,2”作为设置值。Settings设置完成之后,所传输及接受的字符串便以此设置为准,使用RS-232通信的双方,Settings必须完全一样,彼此才能顺利地通信,否则双方将无法正确接收到彼此所传输的信号。所以,该属性的设置必须和三菱PLC中D8120的相关设置保持一致。在这里,统一采用“9600,e,7,2”的设定。

VB与PLC通信程序(欧姆龙PLC)

VB与PLC通信程序(欧姆龙PLC) 分类:| 转自:原文地址被1人转藏+放进我的宝盒2010-9-2 21:45:46 VB与PLC通信程序(欧姆龙PLC) 关于VB的MSCOMM控件可参考相关资料。通信程序摘要如下: (1)初始化程序 https://www.sodocs.net/doc/795885948.html,mport=2 ’选择COM2 Mscomm1.Settings=”9600,N,8,2”’设置通信参数 Mscomm1.Inputlen=0 ’读入接收缓冲区全部字符 Mscomm1.OutbufferSize=256 ’设置发送缓冲区大小 Mscomm1.InbufferSize=512 ’设置接收缓冲区大小 Mscomm1.PortOpen=True ’打开COM2 (2)发送命令程序 比如读取节点号03的PLC中IR000到IR009的内容,并放到tag1字符串变量中,此时有: Dim Command, node, begin, number as string Dim Answerlen as integer node=”03”’节点号 Command=”RR”’命令为读IR区 begin=”0000”’从IR000开始 number=10 ’读取长度 Answerlen=51 ’计算接收字符串长度 进行命令发送和接收应答处理: Dim FCS, I as integer Dim s ,f as string s=”@”+node+Commad+begin+number FCS=0

For i=1 to Len(s) FCS=FCS xor Asc(Mid$(s,i,1) ) ’帧校验码FCS Next i f=Hex$(FCS) If Len(f)=1 Then f=”0”+f Commfrm.MSComm1.Output=s + f + ”*”+ CHR$(13) ’命令帧发送 Do Dummy=DoEvents() Loop Untill Commfrm.MSComm1.InbufferCount >= Answerlen ’等待应答帧 Do tag1= Commfrm.MSComm1.Input Loop Untill Commfrm.MSComm1.InbufferCount=0 ’读完应答帧 上述程序具有相当的通用性,对于其它设备不同的只是各自的数据帧格式,因而只需做相应少量修改即可。

modbus与plc通讯 vb程序caoxi

该程序可以实现实时数据采集显示,以及能对寄存器进行设置。 程序很简单,想用的可以完善,现在只能实时采集显示一个地址的数据,只要修改一下,就可以实时采集多个地址的数据。现在也只能一次对一个寄存器进行设置,也可以更加完善。 下面是运行界面,采集的模块的地址为75,是一个温湿度采集模块。有3个寄存器,显示的数据上是温度,湿度,露点温度。 modbus Private Sub Command1_Click() '设置按钮 Dim bisend() As Byte Dim crc Dim btLoCRC As Byte, btHiCRC As Byte Dim Data As Integer If MSComm1.PortOpen = True Then If Combo5.ListIndex = 0 Then ReDim bisend(7) '重新定义数组长度 bisend(0) = "&h" + Hex(V al(Text1.Text)) '地址码 bisend(1) = "&h" + Hex(3) '功能码读寄存器 bisend(2) = "&h" + Hex(0) '起始地址高位 bisend(3) = "&h" + Hex(0) '起始地址低位 bisend(4) = "&h" + Hex(0) '寄存器个数高位 bisend(5) = "&h" + Hex(Combo6.ListIndex + 1) '寄存器个数低位 crc = CRC16(bisend, 6, btLoCRC, btHiCRC) bisend(6) = "&h" + Hex(btLoCRC) 'CRC高位 bisend(7) = "&h" + Hex(btHiCRC) 'CRC低位 '发送数据 MSComm1.Output = bisend Else ReDim bisend(10) '一次只能写一个寄存器 bisend(0) = "&h" + Hex(V al(Text1.Text)) '地址码 bisend(1) = "&h" + Hex(16) '功能码写寄存器 bisend(2) = "&h" + Hex(0) '起始地址高位 bisend(3) = "&h" + Hex(0) '起始地址低位 bisend(4) = "&h" + Hex(0) '寄存器个数高位 bisend(5) = "&h" + Hex(1) '寄存器个数低位 bisend(6) = "&h" + Hex(2) '字节数 Data = Val(Trim(Text3.Text)) bisend(7) = "&h" + Hex(Data \ 256) '要写入寄存器的值的高字节 bisend(8) = "&h" + Hex(Data Mod 256) '要写入寄存器的值的低字节

VB与三菱PLC通信

V B与三菱P L C通信 VB源代码下载 PLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目的是为了示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详细介绍了FX系列PLC的通信协议,并现了PC机与FX系列PLC之间的串行通信。本文对FX系列PLC的通信协议进行了详细的介绍,并以 1前言 PLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目的是为了示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详细介绍了FX系列PLC的通信协议,并现了PC机与FX系列PLC之间的串行通信。 2PC机与PLC实现通信的条件 带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信: (1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。还要求双方采用的总线标准一致 (2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。 (3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。PLC中 3PC机及与FX系列PLC的串行通讯 3.1硬件连接 PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-422的 3.2FX系列PLC的通信协议 在PC机中必须依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信协议。 (1)数据格式 FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波特率为9 (2)通信命令 FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示。表中X元件;T—定时器;C—计数器;D—数据寄存器。 (3)通信控制字符 FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如下表所示。

VB上位机与PLC通信

随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、可靠性高等一系列优点长期以来获得了广泛的应用。计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用价值,特别在Windows下的串口通信可以充分利用Windows 下的软件资源优势,实现多任务条件下对外部的数据传输、信息收集和处理。在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。在PLC与上位计算机之间采用RS-485和RS-232C标准通信接口进行通信。 在两级计算机控制系统中,最不稳定的环节就是上位机。为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。上位机需要通过串行通信取得所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC 的数据存储区。因此,串行通信作为上位机和下位机联系的唯一方式,在整个系统中具有非常重要的作用。 1.1上位机与PLC间的串行通信 计算机与计算机或计算机与外部设备之间的数据传输和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。 1.1.1串行通信 串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。 1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共

VB控件Mscomm控件与PLC进行RS485(Modbus)通讯源码

VB控件Mscomm控件与PLC进行RS485(Modbus)通讯源码 本人用的是Modbus RTU通讯模式,通过计算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而达到自动化控制远端设备。 Dim HiByte As Byte Dim LoByte As Byte Dim CRC16Lo As Byte Dim CRC16Hi As Byte Dim ReturnData(1) As Byte Dim K As Integer Dim CmdLenth As Integer Private Sub Command1_Click() K = Text9.Text '写6 个字节 Text13.Text = "" '=========== 数组赋值输入代码=============================================================================== ======== '<< 算法一>> Dim WriteStr() As Byte Dim u As Integer ReDim WriteStr(K + 2) For u = 0 To K WriteStr(u) = Val("&H" & Text1(u).T ext) Next '<< 算法二>> Dim CRC_2() As Byte Dim v As Integer ReDim CRC_2(K) For v = 0 To K CRC_2(v) = Val("&H" & Text1(v).Text) Next '============================================================================== ==================== Call CRC161(CRC_2())

VB与三菱PLC通信

VB与三菱PLC通信 VB源代码下载 https://www.sodocs.net/doc/795885948.html,/download.action?t=40&k=MTQzOTcxMTM=&pcode=LCw1NTkwMzYsNTU5MDM2&r PLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目示、动态数据画面显示、报表显示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详在Windows环境下,使用VB6.0开发通信程序,实现了PC机与FX系列PLC之间的协议进行了详细的介绍,并以VB为开发工具实现了PC机与FX系列PLC的串行通信。 1前言 PLC以卓越的可靠性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目示、动态数据画面显示、报表显示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详在Windows环境下,使用VB6.0开发通信程序,实现了PC机与FX系列PLC之间的 2PC机与PLC实现通信的条件 带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信: (1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。还要求双方采用的总线元”变换之后才能互联。 (2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。 (3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。程。 3PC机及与FX系列PLC的串行通讯 3.1硬件连接 PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-接关系: 3.2FX系列PLC的通信协议 在PC机中必须依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信(1)数据格式 FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波I码。

台达PLC与VB通讯简易教程

VB 實現電腦與台達PLC 的串列通信 ───────PLC 產品處 王乃全 摘要:本文介紹了Visual Basic6編程語言,MODBUS ASCII 通信協定及通過VB 如何實現 與台達DVP PLC 的通信 關鍵字:Visual Basic MODBUS ASCII PLC 前言: 現代的世界是一個高度自動化的世界,各式各樣的設備都可以和電腦連線,而最簡單的自動化連線方式就是使用串列通信。 VB 提供了串列通信控制項可以讓開發者開發串列通信的系統程式,功能上也提供了不少為用戶著想的簡便之處。 PLC 是現在控制領域不可缺少的部分,已經非常普及,如何簡便的與PLC 交互已經成為眾多廠商新的競爭戰場。由此產生了人機界面、組態軟體等產品。這些產品的產生大大簡化了對PLC 的控制,操作,使用更方便。但也有共同的缺點:價格過高和開發性較差。VB 作為“原始"的編程語言在這兩方面無疑有著明顯的優勢。 本文結合一個簡單的案例,用比較基礎的概念為大家展示如何通過VB 實現PC-PLC 的通信,對於初涉這個領域的工程師,也會受益與本文提供的基本概念。 一、串列通信基本概念 1、 通信的種類:通常通信的形式可以分為兩種,並行通信(Parallel Communication )和串 列通信(Serial Communication )。所謂並行,既是一次傳輸量為8位;而串列一次只傳1位元。這兩種不同的通信模式如圖 平行傳輸 串列傳輸 2、 串列通信

常用的串列通信也有兩種。分別位RS-232和RS-485 2-1 RS-232 RS-232的信號准位元乃是參考地線而來的,如圖,傳輸端參考接地端1來傳送資料;接收端則參考接地端2還原出傳送端的信號準備。 接地端1 接地端2 由圖可知,由於兩個接地端准位不一定一樣,而且很容易受到干擾,所以信號在RS-232線路傳輸時,很容易產生錯誤。 2-2 RS-485 RS-485的信號傳輸方式如圖。 接地點1 接地點2 RS-485的信號將被傳送出去時會分成正負兩條線路,當到達接收端後,在將信號相減還原成原來的信號;如果將原始的信號表示成(DT),而被分成的信號分別標示成(D+)及(D-),則DT= (D+)-(D-) 同樣地,接收端在接收到信號後,也依據上式還原成原來的樣子。如果線路受到干擾,兩條線路的信號分別為(D+)+Noise (D-)+Noise。接收端還原信號為 (DT)= [(D+)+Noise]-[ (D-)+Noise] 與先前結果一樣,所以RS-485可以有效的防止雜訊的干擾。

vb与plc通讯(以西门子S7-200为例)

vb与plc通讯(以西门子S7-200为例) S7-200 PLC之PPI协议 通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。采用这种方式,PLC 编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。 SIEMENS S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。 软件设计 系统中测控任务由SIEMENS S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。 PPI协议 西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。 其通讯数据报文格式大致有以下几类: 1、读写申请的数据格式如下: SD LE LER SD DA SA FC DASP SSAP DU FCS ED SD:(Start Delimiter)开始定界符(68H) LE:(Length)报文数据长度 LER:(Repeated Length)重复数据长度 SD: (Start Delimiter)开始定界符(68H) SA:(Source Address)源地址,指该地址的指针,为地址值乘以8 DA:(Destination Address)目标地址,指该地址的指针,为地址值乘以8 FC:(Function Code)功能码 DSAP:(Destination Service Access Point)目的服务存取点 SSAP:(Source Service Access Point)源服务存取点 DU:(Data Unit)数据单元 FCS:(Frame Check Sequence)校验码 ED:(End Delimiter)结束分界符(16H) 报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校

VB开发OPC与PLC通信

VB开发WinCC的OPC客户机实例 组态 2009-07-03 19:52 阅读101 评论0 字号:大中小 VB开发WinCC的OPC客户机实例 发布时间:2006.04.29 阅览次数:1804 作者:林启宽单位:厦门市海沧新阳工业区厦门卷烟厂 关键词:OPC VB6.0 WinCC上位机 WinCC是西门子公司在自动化领域采用最先进的技术与微软公司在共同开发的居于世界领先地位的工控软件。WinCC即WINDOWS CONTROL CENTER(视窗控制中心)。WinCC是一个功能强大的全面开放的监控系统,既可以用来完成小规模的简单的过程监控应用,也可以用来完成复杂的应用。在任何情况下WinCC都可以生成漂亮而便捷的人机对话接口,使操作员能够清晰地管理和优化生产过程。它集成的OPC(OLE for process control)服务器使得过程数据可由其它应用程序(OPC客户机)访问。 WinCC在安装时提供了OPC的客户端控件: Siemens OPC DAAutomation 2.0( SOPCDAAuto.dll), 在WINCC的帮助中,有Siemens OPC DAAutomation 2.0使用的简略帮助,但说得不很详细,我在使用VB6.0开发WinCC的OPC客户机中碰到不少问题,现一并写出来,与大家共享。希望起到抛砖引玉,举一反三的作用。 一、开发实例背景:我厂包装机BE电气改造后,由原来了单片机、直流调试板、温度控制板等控制改为带有通讯端口PLC、变频器、温控仪等控制,上位机监控软件为WinCC。在控制系统中,变频器、温控仪的控制信号通过串口、OPC客户机接入上位机WinCC,报警信号接入PLC。其硬件组态结构如图一 OPC开发要求:①通过WinCC建立内部变量Tag(1),Tag(2),Tag(3),Tag(4)……;在视图窗口建立相应了I/O输入输出域。通过更改WinCC中I/O域的值,来设定或更改变频器、温控仪等的参数。②通过VB开发了串口驱动程序,读取变频器、温控仪等的参数,通过OPC控件把值传递给WinCC中的I/O域。 二、VB6开发WinCC的OPC客户机具体步骤: 1、打开VB6,建立如图二窗体: 其中,文本框组Text4.text为写入WinCC内部变量名称;文本框组Text5.text为显示相应了WinCC内

上位机VB实现与三菱PLC的串行通讯

上位机V B实现与三菱P L C的串行通讯 Document serial number【KK89K-LLS98YT-SS8CB-SSUT-SST108】

上位机V B实现与三菱P L C的串行通讯 2009年12月15日星期二下午07:40 1.通行原理与方法 上位机要能够通过PLC监控下层设备的状态,就要实现上位机与PLC间的通信,一般工业控制中都是采用RS232 C实现。上位机首先向PLC发送查询数据的指令(实际上是查询PLC中端子的状态和DM区的值等),PLC接收了上 位的指令后,进行校验(FCS校验码),看其是否正确,如果正确,则向上位机传送数据(包含首尾校验字节)。否 则,PLC拒绝向上位机传送数据。上位接收到PLC传送的数据,也要判断正确与否,如果正确,则接收,否则, 拒绝接收。 由于CPM1A没有提供串行通信口,我们利用其提供的外设端口实现通信。PLC与计算机之间的 连接是通过OMRON提供的专用电缆CQM1-CIF01来实现的,其硬件连接图如图1所示。(见附图) 2.PLC与计算机间的通信规约 计算机与PLC间的通信是以“帧”为单位进行的,并且在通信的过程中,计算机具有更高的优先级。首先,计算 机向PLC发出命令帧,然后,PLC作出响应,向计算机发送回响应帧。其中命令帧和响应帧的格式如下: (1)命令帧格式。为了方便计算机和PLC的通讯,CPM1A对在计算机连接通信中交换的命令和响应规定了相应的 格式。当计算机发送一个命令时,命令数据主准备格式如图2所示。(见附图) 其中@放在首位,表示以@开始,设备号为上位机识别所连接的PLC的设备号。识别码为命令代码,用来设置用户 希望上位机完成的操作,FCS为帧检验代码,一旦通信出错,通过计算FCS可以及时发现。结束符为“*”和CR 回车符,表示命令结束。 (2)响应帧格式。由PLC发出的对应于命令格式的响应帧格式如图3所示。(见附图) 其中,异常码可以确定计算机发送的命令是否正确执行。其它的与正文中的含义相同。正文仅在有读出数据时有 返回。 3.通信程序的设计 为了充分利用计算机数据处理的强大功能,我们可以采用计算机有优先权的方式,在计算机上编写程序来实现计 算机与PLC的通信,计算机向PLC发出命令发起通信,PLC自动返回响应。本文中采用VB来编写计算机与PLC 间的通讯程序。在VB中提供了通信控件—应用通信控件(MSCOMM),实现通过串行端口传送和接受的功能。 下面介绍MSCOMM控件的属性: *CommPort:设定通信连接端口代号,程序必须指定所要使用的串行端口号,Windows系统使用所设定的端口与外 界通信。 *PortOpen:设定通信口状态,若为真,通信端口打开,否则关闭。 *Settings:设定通信口参数,其格式是"bbbb,p ,d,s",其中bbbb为通信速率(波特率),p为通信检查方式(奇偶校验),d为数据位数,s为停止位数,其设定 应与PLC的设定一致。 *Input:将对方传送至输入缓冲区的字符读入到程序。 *Output:将字符写入输出缓冲区。 *InBufferCount:传回接收缓冲区中的字符数。 *OutBufferCount:传回输出缓冲区中的字符数。 *InputLen:设定串行端口读入字符串的长度。 *InputMode:设定接收数据的方式。 *Rthreshold:设定引发接收事件的字符数。 *CommEvent:传回OnComm事件发生时的数值码 *OnComm事件:无论是错误或事件发生,都会触发此事件。 (1)控件参数的初始化。 初始化程序如下: https://www.sodocs.net/doc/795885948.html,Port=2'使用串口Com2 Mscomm.Settings="9600,E,7,2"'波特率9600,偶校验,7位数据位,2位停止位 Mscomm.PortOpen=True'打开通信端口,准备通信 (2)计算校验码FCS,计算FCS的VB自定义函数如下: FunctionFCS(ByValInputStrAsString)AsString DimSlen,i,XorresultAsInteger DimTempfesAsString

vb与三菱PLC的通信详解概要

Vb6.0与三菱PLC的通信 串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件MSCOMM.OCX。使用MSCOMM.OCX控件编程方便,具有更完善的发送和接收功能。这里采用了MSCOMM.OCX控件。 项目选用三菱FX2N-64MR型PLC,SC-09电缆作为计算机与PLC通信的连线。连接电缆的9针端连接在计算机串口上,另一端连接在PLC的RS-422编程口。 通信格式: 一个多字符帧由图1所示的五部分组成,其中和校验值是将命令码—ETX之间的字符的ASCII码(十六进制数)相加,取得所得和的最低二位数。STX(CHR(2))和ETX(CHR(3))分别表示该字符帧的起始标起和结束标志。 (1) 起始字元STX:ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。 (2) 命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。 (3) 元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。 (4) 元件个数:一次读取位元件或字元件的数量。 (5) 结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。 (6) 校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(Longitudinal Redunda ncy Check)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。 FX2系列与计算机之间的通信是以主机发出的初始命令,PLC对其做出回答响应进行通信的,PLC无权命令。 三菱FX系列PLC编程口通信协议总览 该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。通讯格式: 传输格式: RS232C波特率:9600bps奇偶even校验:累加方式(和校验)字符: ASCII16进制代码:

VB与西门子S7 200 PPI协议通讯

VB与西门子S7 200 PPI协议通讯 通过硬件和软件侦听的方法,分析PLC内部固有的PPI 通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源 S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC 中编写代码,利用中断方式控制通讯端口的数据收发。采用这种方式,PLC编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC 的编程软件无法对PLC进行监控,给PLC程序调试带来不便。 SIEMENS S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据

读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。 软件设计 系统中测控任务由SIEMENS S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的监控软件采用VB 编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。 PPI协议 西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。 其通讯数据报文格式大致有以下几类: 1、读写申请的数据格式如下: SD LE LER SD DA SA FC DASP SSAP DU FCS ED SD:(Start Delimiter)开始定界符(68H) LE:(Length)报文数据长度 LER:(Repeated Length)重复数据长度 SD: (Start Delimiter)开始定界符(68H) SA:(Source Address)源地址,指该地址的指针,为地址值

相关主题