plc-vb监控

更新时间:2023-10-14 20:41:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 概论

在plc的图形监控技术中,虽然以使用通用型的人机接口搭配套装式图形监控软件较为简易、便利,但是就学习或使用者本身而言,只是就图形监控组件的变量(编号)或属性作一些简单的设定,至于plc pc间如何透过rs-232或rs-485串行通讯端口执行接点状态或数据缓存器数值之读取、写入与控制等,就有些雾里看花了。此外条形码扫瞄器(bar code reader,bcr)、电子磅秤(electronic load cell)、温度控制器、modus通讯、区域或网络通讯?等,若不知道相关的通讯协议,就无法与pc或plc联机以读取或写入所需的数据。有鉴于plc在产业自动化中的枢纽地位,加以各技职院校均开设有plc及vb等相关课程,若使用vb 作为plc的图形监控,在教学、自学及实作上不但可坐收事半功倍之效,同时也可达到科技整合的目标,提升机电控制的技术层次,因此本专栏就以plc_vb图形监控作为探讨主题。

图1 通讯协议数据格式

图2 位元元件位址的计算方式

2 plc通讯协议

pc plc通讯之目的,不外乎是pc与plc间进行相关接点状态或数据缓存器数值之读取、写入或控制,上述数据存取或控制,除了在硬件联机及通讯参数设定方面必须双方一致外,在讯息格式方面亦必须符合专属的通讯协议。在pc与plc的通讯架构中,pc为主系统(master),plc则为仆系统(slave),亦即pc与plc间通讯,是由pc发出命令讯息给plc,只有在plc接收到pc的命令后,才会响应一讯息给pc。

以下以丰炜(vigor)plc为例,介绍其m、vb、vh系列plc之通讯协议:

2.1 传输讯息格式

为了使得各类型pc能够互通讯息,美国国家标准局制定了ascii码。ascii码原先仅使用

7bits,因考虑到一些特殊的图形码,故目前已扩充为8bits。不过在plc pc通讯上,ascii码还是采用原先7bits的编码方式,所以其数据位为7bits。

2.2 通讯参数

(1)传输格式:usb或标准rs-232、异步(asynchronous)、双向传输。

(2)传输速率或鲍率(baud):plc内建之cp1固定为19200bps;cp2有4800、9600、19200、及38400bps等可供选择,由ladder master设定;至于 cp3则固定为19200bps。

(3)同位检查(parity check):偶同位(even parity,e)。

(4)数据位(data bits):7 bits。

(5)停止位(stop bit):1 bit。

2.3 通讯协议数据格式

通讯协议数据格式如下图1所示:

(1)起始码

数据传输的开头字符,pc下达命令给plc时之起始码为stx(2h),plc回传资料给时为ack(6h)。 (2)站号

数据传输对象的辨识码,在通讯回路中每一台plc都必须有一个站号,当pc对plc下达命令时,就是以站号来指定要将命令下达给那一台plc。plc内建之cp1固定为0号;cp2可选择范围为0~255号,由ladder master设定;cp3由vb-cadp模块左侧旋转开关设定,范围为0~99号。 (3)命令

通讯命令系pc要求plc所执行之动作,可以经由pc对plc执行位组件之状态或缓存器的值连续读取、写入或位组件on/off等命令共有4种,各命令码代号、种类、对象组件及其功能,如表1所示。

(4)传送数据

数据传输的内容,包含:数据地址、长度、内容及错误码?等。

(5) 结束码

数据传输的结束字符为etx(3h),当plc收到代表通讯结束的etx字符后,即可开始处理该次通讯命令或数据。

(6)检查码

系将图1中之站号~结束码中各字段所有ascii字符之16进制数值依序相加,但不考虑进位,也就是取其和最右边的2个数值作为检查码,此一核算方式称为2纵式余数查核法2(longitudinal redundancy check,lrc)。当接收端收到命令讯息后会依相同计算法则重新核算其检查码,若两者数值相同,则表示所传输数据正确,否则表示在传输过程中有错误发生。

(7)错误码

在plc的回传数据中会有一个错误的讯息码,错误码及其说明如表2所示。

2.4 数据地址

pc plc通讯必须了解plc内部有那些组件,以及那些组件的实际地址(address),以便于进行数据的存取。

(1)群组地址

适用于连续数据读取【51h】及连续数据写入【61h】等通讯命令,可分为下列二种:

① 位型态组件

诸如:x、y、m、s、t、c等多个字节(bytes)数据。若字节数byte=1时,则群组地址定义8个连续的位型态组件。

② 字符组型态组件

诸如:t/c现在值或缓存器d之数值等。

常用群组地址如表3所示,t/c现在值或d数值占有2个连续的地址。

(2)位组件地址

适用于将指定的bit设定为on【70】及设定为off【71】等通讯命令。位组件地址=数据地址+组件位置,计算方式说明如下:

【例1】求位组件y10的地址

解答:10/8=商数=1?余数=2;y0群组之数据地址=0040,取前3位=004+商数+余数=00412。之后将00412的前三个位舍弃,即可求得y10组件地址为020a,详细步骤如图2所示。经上述计算程序转换后之常用位组件地址如表4所示:

图4 检查码计算_vb窗体

图5 检查码计算结果

图6 位组件on/off_vb窗体

表1 pc→plc通讯命令

表2 错误码及其说明

表3 常用群组地址

表4 经过转换后之常用位元元件位址

3 vb简介

visual basic(vb)由于它提供了完善的图形化接口,兼具对象导向、事件驱动的程序设计理念,让使用者在vb的整合开发环境(ide)下,点选工具箱中所提供的识别图式工具按钮,经由对象在窗体的适当配置,不用编写程序即可完成所须的输入/输出接口,并可立即在屏幕上看

private sub command1_click()

`开启通讯端口

mscomm1.portopen = true

` pc下达位组件on/off命令给plc

mscomm1.output = chr(2) & text4.text & text1.text & text2.text & chr(3) & text3.text

`关闭通讯端口

mscomm1.portopen = false end sub

private sub command2_click()

text1.text = \

text1.setfocus end sub

private sub command3_click() end end sub

5.3【例3】基本通讯命令_组件群组连续写入【61】及读取【51】

(1)如前所述,组件群组定义为8×n个连续的位型态或字符组组件。设计一vb窗体如图9所示,并分别设置如图所示的对象或控件。

(2)若要将字节组件y0~y7全部设定为on,并采plc内建之cp1,程序执行后分别在各text文字方块内键入如图10所示的通讯格式,之后按下write钮,此时主机led面板上之y0~y7

灯号亮起。若键入如图11所示的通讯格式,按下read钮,则经由plc读取的数据亦为ff。

(3)程序代码

private sub command1_click()

mscomm1.portopen = true

` pc下达连续写入命令给plc

mscomm1.output = chr(2) & text6.text & text1.text & text2.text & text3.text & text4.text & chr(3) & text5.text

mscomm1.portopen = false end sub

private sub command4_click()

dim strtmp as string

mscomm1.portopen = true

` pc下达连续读取命令给plc

mscomm1.output = chr(2) & text6.text & text1.text & text2.text & text3.text & chr(3) & text5.text

`后测试循环,等待plc响应字符串 do

strtmp = strtmp & mscomm1.input

loop until len(strtmp) >= 12

`取出数据

text7.text = mid(strtmp, 8, 2)

mscomm1.portopen = false end sub

(4)1个byte数据读取程序代码解说

1个byte数据读取,plc响应字符串的字符数为12,数据由响应字符串的第8个字符开始往后取2个字符即为所求,如图12所示。

(5)本程序可扩充为字符组(word)连续写入及读取,以1个字符组为例,因为1word=2 bytes,故y0~y17全亮时之连续写入通讯格式如图13所示,连续读取通讯格式则如图14所示。

(6)1个word数据读取程序代码解说

1个word数据读取,plc响应字符串的字符数为14,数据由响应字符串的第8个字符开始往后取4个字符。因为数据是由较低次位lsb开始传输,故将low byte(b7~b0)和high byte(b15~b8)对调即为所求,因此祇要修改下列程序代码即可执行1个word数据读取,示意图如图15所示。 do

strtmp = strtmp & mscomm1.input

loop until len(strtmp) >= 14

response = mid(strtmp, 8, 4)

text7.text = right(response, 2) & left(response, 2)

6 plc_vb进阶学习范例

【例4】马达起动停止控制

综合运用基本通讯命令,利用单一组件mn之on及off,来仿真一plc外部输入按钮。并启动定时器(timer)控件每隔一特定的时间持续不断的经由串行通讯端口去侦测plc是否已将响应讯息传送到接收暂存区,并将其内容值执行and运算,以取出所拟监看接点。在接点状

态on/off变化时,则更改形状(shape)控件背景颜色(backcolor)的属性,达到图形监控的目的。

(1)plc程序设计

马达起动停止控制阶梯图,如图16所示。

(2)vb窗体

设计一马达起动停止控制之vb窗体如图17所示,并分别设置如图所示的对象或控件;vb执行结果则如图18所示。

(3)程序代码

private sub form_load()

`启动定时器

timer1.enabled = true end sub

private sub command1_click() `m0_on

mscomm1.portopen = true

mscomm1.output = chr(2) & \

mscomm1.portopen = false `m0_off

mscomm1.portopen = true

mscomm1.output = chr(2) & \

mscomm1.portopen = false end sub

private sub command2_click() ` m1_on

mscomm1.portopen = true

mscomm1.output = chr(2) & \

mscomm1.portopen = false `m1_off

mscomm1.portopen = true

mscomm1.output = chr(2) & \

mscomm1.portopen = false end sub

private sub timer1_timer()

dim strtmp as string

dim inttmp as integer

mscomm1.portopen = true

` pc下达连续读取y0~y7命令给plc

mscomm1.output = chr(2) & \ do

strtmp = strtmp + mscomm1.input

loop until len(strtmp) >= 12

strtmp = mid$(strtmp, 8, 2)

`将plc响应数据转换成10进制数值,并与1(y0为b0)作and运算,以取出y0

a = val(\

`判断y0的值

select case a

case 1 ` 1表示y0 on

shape1.backcolor = vbred`淡红色

label4.caption = \启动\

case 0 ` 0表示y0 off

shape1.backcolor = vbgreen `淡绿色

label4.caption = \停止\

end select

mscomm1.portopen = false end sub

图15 1个word数据读取示意图

图16马达起动停止控制阶梯图

图17 马达起动停止控制_vb窗体

图18 马达起动停止控制执行结果

7 结论

在plc的图形监控技术中,虽然以使用通用型的人机接口搭配套装式图形监控软件较为简易、便利,但是就学习或使用者本身而言,并不知晓pc plc间如何透过串行通讯端口执行接点状态或数据缓存器数值之读取、写入与控制等。此外更新版的vb虽然增加了许多因特网的应用功能,但作业环境及工作窗口亦变得较为复杂,使初学者不禁望而却步。一些简单的机电控制或应用,使用vb 6依然游刃有余。相信具备了vb6程序设计的理念和经验之后,跨入vb 2005或2008的学习及应用领域,应该可以触类旁通。

本文以丰炜plc通讯协议为例,就数据传输时之检查码计算、位组件on/off及组件群组连续写入及读取等基本通讯命令,使用vb6并按部就班为读者作一解说,最后综合运用上述基本通讯命令,以马达起动停止控制为例,使用定时器每隔一特定的时间,持续不断的经由串行通讯端口执行数据或数值的连续读取,并在接点状态on/off变化时,更改形状控件的背景颜色,达到plc_vb图形监控的目的。

通讯协议一般而言实属大同小异,故文中所提及之指令解说与实作,其它厂牌或机种之plc亦可适用。俗云:“师傅领进门,修行在个人”,6次专栏在此暂时告一段落,但愿您能针对每月专栏主题用心体会、勤加练习,相信假以时日您亦可“青出于蓝,而更胜于蓝”。

本文来源:https://www.bwwdw.com/article/1fjf.html

Top