分享好友 方案首页 频道列表

永宏基于调制解调器与VB的PLC远程通讯系统设计

2012-04-15永宏电机股份有限公司

1引言
随着计算机和通讯技术的发展,在工业测量和控制中广泛需要远程通讯。远端PLC等下位机做生产控制,本地计算机需要实时监测或参与控制生产现场的参数。实现以上要求的一个简便的途径是利用覆盖面广泛的公用电话网,使PLC等下位机利用调制解调器(MODEM)和计算机的调制解调器连接通讯,即可完成硬件上的连接。如图1所示。在软件方面,由远端下位机软件控制和远程监控站软件两部分组成。考虑到本地监控站软件只做数据监测或少许控制且编程相对简单,所以本地监控站的编程软件可以直接用高级语言。
2系统概述
本文以一个实际的小水电站的泻水闸门程控工程为例,着重叙述永宏PLC和PC做远程通讯的实现细节。系统的下位机控制采用永宏公司的FBs系列PLC对水库泻水闸门进行开度检测和开度控制,监控站的界面编程采用VB6.0编写。
硬件配置:远端FBs-CB25+ FBs-10MAU+ECOM外置MODEM+PWS1711
本地PC(含普通内置MODEM)
该系统主要控制要求,通过FBs-10MA外接一个旋转编码器检测闸门所在位置,然后跟据现场人机界面或者PC端(下游5Km处)的设定位置来控制牵引闸门的马达正反转,从而使闸门上升或下降到指定的位置。FBs-CB25所扩展得到的通讯口2(RS485)用于PWS1711的通讯,通讯口1(RS232)用于连接MODEM,另外,主机上的可USB口用于连接调试用的笔记本电脑。


图1 系统组成

3调制解调器工作方式和设定
3.1 调制解调器工作原理
调制解调器分成两种模式,命令模式和联机模式。当调制解调器没有和其它设备连接时,其处于命令模式,这时下达给调制解调器的指令时作调制解调器本身设定或者动作用的。当调制解调器已经和其它的设备连接上时,此时调制解调就是处于联机模式,所有在此时由计算机送到调制解调器的讯息都将由经电话线传送到其它设备上。
用于控制调制解调器的特定指令集被称为“AT指令集”,通过该指令集,从最基本的音量控制到内建参数设置的改变,都可以由VB经过串行端口而对调制解调器下达控制指令。AT命令集是调制解调器通讯接口的工业标准。所有的AT命令都以字符AT开始,作为前缀。前缀AT用以引起调制解调器的注意(Attention)检测计算机串行通讯口发送信号的速率,识别字符格式,包括字符长度和奇偶设定等。
调制解调器拨号之后,等待对方调制解调器送来的载波信号。如果在一给定时间内没有检测到载波, 调制解调器自动释放线路并送回结果码NOCARRIER,如果检测到载波信号, 调制解调器即送结果码CONNECT + 波特率,就进入联机状态,即可与远方系统进行通讯。
3.2 PLC连接调制解调器原理及其设置
在该系统中, PC做为主站,必须控制调制解调器主动拨号,另外,在确认调制解调器和PLC的调制解调器联机成功后控制它进入联机模式,开始存取PLC数据。主站控制调制解调器拨号连接细节见下节,这里详述PLC端对调制解调器的设置方法。
PLC端PLC上电后必须初始化调制解调器,设置成自动应答来电状态。在这里把PLC初始化调制解调器的AT指令组合称为“MODEM驱动程序”。永宏PLC通过Port1来控制调制解调器,并把这种软件界面称为调制解调器专用界面。如图2设定或者设定特殊暂存器R4149的高八位为55H就可以把Port1设置为调制解调器专用界面,在该界面下PLC会启用“MODEM驱动程序”,此时,虽CPU仍然使用永宏〝标准通讯驱动程序〞来管理Port1的通讯,但必须通过调制解调器来联机,在通讯进行前,Por t1主控权是交由〝MODEM驱动程序〞管理,此时无法对PLC作任何存取动作。“MODEM驱动程序”即将调制解调器设为接收模式,并等待远方调制解调器拨号进来,一旦收发双方调制解调器联机成功,则PLC立即脱离接收模式,而进入联机状态,Port1控制权交由永宏〝标准通讯驱动程序〞管理。此时远方调制解调器便可任意存取或控制此PLC主机了。

图2 本地调制解调器设置

调制解调器设置如图2所示,在PLC联机状态下,选取菜单中的“PLC”→“设定”→“Port1设定”来到图2,选择单选框的第二项“透过MODEM作远程CPU_Link”,该PLC一上电就通过自带的“MODEM驱动程序”把Port1设置为调制解调器专用界面。另外,通讯格式设置为同调制解调器相同的N,8,1,为提高通讯效率可以把通讯速率设置为38400bps,或者更高(最高为115200bps)。
4 PC端程序设计
4.1 拨号程序设计
PC端将以VB6.0所带的通信控件MSCOMM进行通信软件的开发,利用该控件控制串口实现对MODEM的控制。控制步骤如下:
一.通信参数设置
设置串口端口号,波特率,数据位,停止位,奇偶校验位及设置硬件握手协议,然后向MODEM发出DTR(已准备好)信号一便接管MODEM,程序如下:
If MSComm1.PortOpen Then
MSComm1.DTREnable = True
Else
MSComm1.DTREnable = False
End If
二.对MODEM初始化
发出一些命令来设置参数,其中S0=n(n>=1)自动应答.n为响铃次数;E0/E1关闭/打开命令字符回应;Q0/Q1设置MODEM返回/不返回结果码;M0/M1关闭/打开MODEM扬声器;Ln(n>=0)设置MODEM扬声器音量;P/T设置MODEM脉冲/音频拨号;程序如下:
If MSComm1.PortOpen Then
Do While Not MSComm1.CTSHolding: Loop
TXD= "ATS0=1E1Q0M1L2T" + Chr(13)
MSComm1.Output = TXD
End If
三.进行拨号
向MODEM发出ATD命令,程序如下:
MSComm1.Output="ATD" & "05925998499"+Chr(13)
当发送“ATD”+ 电话号码 + Chr(13)时,MODEM就开始拨号,拨号需要一定的时间,在拨号的过程中可以不断读取MODEM的CD指示灯的状态,当电话拨通后CD指示灯会点亮。并返回“CONNECT + 波特率”的信息。如果MODEM向PC的回应字符串中含有"Connect"或CDHolding属性值变为True(检测出载波),则表示已与远方MODEM连机了,此时可以传输数据。
当电话拨通后,MODEM不再接收AT指令,要使其回到命令状态,则必须发送“+++”信息,使MODEM回到命令状态,然后发送“ATH”+ Chr(13)则可以挂断电话,程序如下:
MSComm1.Output="ATH" +Chr(13)
4.2 通讯程序设计
一.永宏PLC通讯协议
永宏PLC 通讯讯息格式可概分为6个数据域位, 如下图3所示,具体解释如下:

图3 永宏PLC通讯协议讯息格式

⑴.开头字符(STX):ASCI I码之开始字符STX。
⑵.从站号码:为两位数之16进制数值。
⑶.命令号码:为两位数之16 进制数值,为由主系统要求从系统所执行之动作类别。
⑷.本文资料:本文数据可为0(无本文数据)~500个ASCII字符。
⑸.侦误值(CHECKSUM): 侦误值系将前述~将各ASCII字符之16进制数码值(8位长度)从头至尾依序相加,但不考虑进位,因此最终结果为侦误值。
⑹.结尾字符(ETX):ASCI I码之结尾字符ETX之16进制数码为03H。。
二.读数写数
本系统操作PLC的关键数据主要是水位的设定值PV=R0和当前值CV=R1,即要对暂存器R0进行写操作,R1进行读操作;
依照协议VB设计的通讯程序必须指定一个命令码,向PLC请求数据读取,查的该命令码为“46”,解释为:连续多个缓存器之数据读取。读取R1的PC命令的ASCII码写法为:
“STX+ 01(站号)+46(命令码)+01(连续数据个数)+R00001(数据开始地址)+LRC(侦误值)+ETX”
依照协议VB设计的通讯程序必须指定一个命令码,对PLC缓存器数据写入,查的该命令码为“47”,解释为:连续多个缓存器之数据写入。写入R0的PC命令的ASCII码写法为:
“STX+ 01(站号)+47(命令码)+01(连续数据个数)+R00000(数据开始地址)+XXXX(写入的数据资料,16进制)+LRC(侦误值)+ETX”
读取当前值CV=R1,程序如下
Private Sub Timer1_Timer()
MSComm1.Output= Chr(2)+ “014601R00001”+ Lrc(“014601R00001”)+Chr(3)
Delay (10) //延时
CV = Val("&H" + Mid(MSComm1.Input, 7, 4)) //数据处理,R0放于CV
CV.Text = CV
End Sub
写入设定值PV=R0,程序如下
Private Sub Command1_Click()
If Len(Hex(PV.Text)) = 4 Then PV = Hex(PV.Text)
If Len(Hex(PV.Text)) = 3 Then PV = "0" + Hex(PV.Text
If Len(Hex(PV.Text)) = 2 Then PV = "00" + Hex(PV.Text)
If Len(Hex(PV.Text)) = 1 Then PV = "000" + Hex(PV.Text) //10进制转换16进制
MSComm1.Output=Chr(2)+ “014701R00000”+ PV + +Lrc(“014701R00000” & PV)+Chr(3)
End Sub
三.侦误值(CHECKSUM)计算
为VB的编程方便,把该计算做成单独一个子程序,依所有数据累加,舍弃进位的规则VB的LRC编程如下:
Private Function Lrc(Dats) As String
Dim i
Dim Sum
Sum =2
For i = 1 To Len(Dats)
Sum = Sum + Asc(Mid(Dats, i, 1))
Next i
Lrc = Right("0" + Hex(Sum + 2), 2)
End Function
5结束语
采用基于MODEM通讯的设计极方便地实现该小电站生厂调度,在这种只需短时间连接控制的系统应用上可以大幅度地减小通讯成本,具有一定的推广价值。另外,通过MODEM的连接,利用永宏编程软件可以实现该设备的远程程序调试修改,通过两个MODEM还可以实现两台远程PLC的CPU连接通讯等。

收藏
神州普惠试验检验管理解决方案
试验检验管理系统TCM紧紧围绕产品生产试验检验的全过程进行系统规范的监控和管理,有力的监管了整个试验检验过程、协调组织了试验检验工作的开展、规范了试验检验过程的管理,同时还以方便高效的手段,整理和收集了全部试验检验过程的信息数据。

0评论2014-03-24

宏电工业级TD无线路由器应用于交警局电子警察项目
“电子警察”是高科技的交通管理手段,也是道路交通技术监控系统的重要环节,是智能交通系统建设的重要组成部分。它以其无人值守、自动记录、容量大、无需当场处罚、便于管理等优点成为交通管理工作中必不可少的装备。

0评论2013-02-27

领邦公布新型全自动检测方案:弹丸尺寸的快速检测
近日,北京领邦仪器技术有限公司(后文简称“领邦”)公布了一套新型的全自动检测方案——弹丸尺寸检测系统。该系统是一套在线全自动终检设备,采用激光扫描的方式,在计算机中还原炮弹外形,能够实现炮弹外形尺寸和形位公差的快速检测,满足大批量产品的在线自动化检测,避免人为检测造成的误差,同时保证数据的可靠性以及提高数据管理方便性。

0评论2012-08-31

仪器总线技术的回顾与展望
在测试测量领域,仪器总线技术的发展历来是工程师和科学家们最为关心的部分。从上世纪60年代推出的专用于仪器控制的GPIB总线,到现在被广泛使用的 USB、VXI、PXI和最新推出的LXI、PXI Express,不断涌现的新型总线技术在帮助我们的工程师更快捷高效的完成测量任务的同时,也引起了行业内专家们的广泛争论,究竟哪一种总线将会主宰未 来的测试测量领域呢?

0评论2012-05-28

加固电源典型应用方案
美国北大西洋(NAII)公司为军工和航空领域的嵌入式市场所提供的加固电源,类型齐全,无论是标准型产品还是定制型产品,都应有尽有。在国内外航空、航海、舰船等应用中占有及其重要的地位。

0评论2012-05-03

倾角传感器在无人机上的应用
无人驾驶飞机简称无人机,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机。机上无驾驶舱,但安装有自动驾驶仪、程

0评论2012-04-13

倾角传感器在移动通讯车平衡系统上的应用
移动通信基站车是移动通信领域中用于应急通信信道建立的系统集成车辆。主要的功能一般包括GSM、CDMA、3G基站信道的建立、无线计

0评论2012-04-13

倾角传感器在水平平台测量上的应用
在仪器仪表、精密工具、机械制件的检验等行业经常会使用到水平平台,而大理石平台可以作为一个理想的选择,因为大理石的平台是一

0评论2012-04-13

SST倾角传感器在阳光追踪系统上的应用
随着能源的匮乏,人类越来越注重利用新型能源来代替现有的煤、石油原料,利用太阳能获得能源就是一个非常好的办法。阳光追踪器

0评论2012-04-13