EN0506PGP modbus driver setting.docx
《EN0506PGP modbus driver setting.docx》由会员分享,可在线阅读,更多相关《EN0506PGP modbus driver setting.docx(13页珍藏版)》请在冰点文库上搜索。
EN0506PGPmodbusdriversetting
工程注意EngineeringNotice
北京贝利作者:
李阳审核:
杜琛
版本:
001
发布日期:
2005.06
更改:
B
PGP2.1Modbusdriver的设置方法
1.概述
本文描述PGP2.1通过Modbus协议与其他系统通讯时的设置方法.分为两种情况,一种是一台PGP2.1与对方一台设备通讯,另一种情况是两台冗余配置的PGP2.1与对方设备通讯.因此本文主要包括PGP2.1Modbusdriver的设置和PGP2.1server冗余配置两部分.
PGP2.1与其他系统通讯时作为Modbus的主站.在进行PGP的设置组态之前,请准备好与对方的通讯点表,其中包括标签名,Modbus地址,数据类型,数据传送方向等,并了解确定硬件连接方式.
2.PGP2.1Modbusdriver的设置
PGP2.1server
PLC或其他系统
总的说来,在PGP中的配置工作包括在Win2000注册表中添加相应的通讯接口,完成针对这种通讯接口的参数设置,之后在PGP的标签库中添加标签,与这种通讯接口关联上.
以下说明均根据在公司内进行的Modbus通讯测试,提供的例子文件(注册表、数据库)作为参考,实际项目可以以例子文件为模板进行修改。
首先连接串口电缆,使用串口测试程序modscan32验证串口的连接情况,保证电缆正确,可支持双向数据通讯.如果电缆只能单向通讯,请及时更换,避免影响PGP与其他系统的通讯.
PGP2.1安装在d:
\tenore目录下.具体安装方法请参见相关文档.请将注册表文件PGPModbusExample.reg拷贝到d:
\temp目录下.
将Modbusdriver对应的注册表文件加入系统.方法是双击文件PGPModbusExample.reg完成添加.可在Win2000注册表中,HKEY_LOCAL_MACHINE\SOFTWARE\ABB\InformIT\Tenore\scanner
之下,看到添加进来的Modbus_1项.其中主要是设置了串口速率,校验方式,数字位,终止位,串口名称等信息.该文件使用的参数是:
9600,n,8,1,COM1.一般来说,大部分参数都不用调整,只需根据实际情况修正串口名称,确定是COM1还是COM2在进行通讯.
编辑Modbus通讯所需的标签库,比如名称是PGPModbusExample.dbf.
在PGP的systemsetup中导入标签库PGPModbusExample.dbf.方法是双击TenoreSetup,选择Tagdatabasebuilder,点击import按钮,选中PGPModbusExample.dbf文件.
每个标签的General页,填写标签索引,标签名,标签类型,Source设为”EXT”,Acquisition页,FieldDrv设为”Modbus_1”,该页上半部分的参数为PLC中数据点的地址和数据类型信息.请根据实际情况填写.
PLC地址及数据类型信息
SlaveNumber:
Modbus子站的站号.
RegisterAddress:
该点在Modbus子站中的寄存器号
BitPosition:
该点在某寄存器中的位号
ScanClass:
扫描周期组别,对应注册表中设置的某一个TimeoutClassn项.
SignalType:
Modbus信号类别
DataType:
Modbus数据类型
BitNumber:
通讯程序将读取或写入的位数
标签库中点的类型设置会影响通讯,设置不对,通讯无法建立.下表列出了PGP标签库中参数的设置与Modbus数据类型的对应关系,供各位参考.
Modbus数据类型
PGP标签库设置
SignalType
DataType
数字量
BitNumber
Holdingregister
1
11
1
Coilstatus
1
12
Inputstatus
0
12
Inputregister
0
11
模拟量
1
Holdingregister
1
1,2…
16
Inputregister
0
1,2…
16
注:
DataType如果是”12”,则”BitNumber”设多少都可以.
DataType设为”11”,表示数据是打包传送的,即一个寄存器可存放16个数字量.
具体每项参数的含义请参见ApplicationNote:
PGPandTenoreScanner–RevA.pdf.
双向数据通讯:
在标签库中,编辑相应标签属性,Outputtab,填写输出地址,填写方法与Acquisition相同.特别是要填写driver名字.修改标签库之后,需重起PGP,否则修改不生效.
3.PGPserver的冗余设置
PGP2
Weight:
10
PGP1
Weight:
15
PLC或其他系统
如果配置了两台PGPserver互为冗余,与PLC等其他系统通过Modbus通讯,那么不管对方系统是否冗余,提供一个还是两个串口,PGPserver中的设置是相同的.
在设置前,请检查确认两台PGPserver之间的以太网连接已连通.
注册表文件仍然可以使用上述的PGPModbusExample.reg,只是修改其中的两项.两台PGPserver均要设置.为修改方便,打开PGP的scanmonitor工具完成编辑.打开scanmonitor有两种方法,一是找到Win2000任务条右侧的3个PGP相关图标,双击最右侧的scanmonitor图标,另一种方法是找到PGP安装目录,\tenore\bin\tntscanner.exe,双击之.
选中Modbus_1,双击,从弹出的窗口,找到Master/Slave项,选中此项,表示需要Master/Slave环境的支持.
接着找到ServersInfo项,点击右键,选Addserver,在添加出来的Server2下面填写另一台PGPserver的计算机名称(Name)和权重(Weight).设置完成之后,将光标移到下一行,确认修改,再点击窗口右下角的Close按钮退出.
编辑\tenore\config\node目录下的节点信息文件example.dbf,修改其中的节点名称(nodename)和权重(weight).保存,关闭.两台PGPserver均要设置.
假定PGP1的权重值高于PGP2.在PGP1中,Tagdatabase,将每个标签的Network属性中,8项均选中.
Tenoredatabaseconfiguration,Details->Nodes,依次修改两个节点,两个节点属性设置中DisplayAlarms,PrintAlarms选YES,Align相关的项,只将Alignvaluefrom设成YES,其余均设为NO.两台PGPserver均要设置.
注意:
这一项一定要做,否则两台PGPserver建立冗余关系之后,通过网络传送的数据量过大,会造成两台PGP中的一台CPU100%,几乎不响应任何操作,两台PGPserver中都有可能碰到.出现这种情况时,查看taskmanager,会发现是ApmsNetworker.exe,或ApmsNE~2.exe占用了几乎全部的CPU.
在两台PGP中,分别从主菜单utility选中ShutdownTenore.
从PGP1的Tenoresystemsetup,Export,tagdatabase,导出PGP1修改好的标签库.在PGP2中,Tenoresystemsetup,builddatabase,import从PGP1导出的标签库.
修改了节点信息后,Tenoresystemsetup中buildnode.两台PGP均要做这步.
完成上述设置后,请检查:
a.serverstatus.两台PGP正常起动,在Win2000任务条右侧,可看到3个PGP相关图标,若没有,请shutdownPGP,检查taskmanager中是否有未退出的PGP进程,若有,手工结束之,再重新启动PGP.
TenoreMonitor
TenoreNetServer
ScanMonitor
点击最左边的图标,即TenoreMonitor,查看General->Multimaster项,
Server状态正常
主server的权重
本server的权重
两台server的状态均应为”OK”.
b.测试PGP的冗余功能.Exitscanner,双击tenore\bin\simexp.exe,修改一台PGP中的数据,观察另一台PGP的标签数据是否也改变了.如果改变了,表明PGP的冗余功能工作正常.
4.总结:
PGP对外的每一个通讯连接对应于Modbusdriver的一个应用实例(instance).PGP的Modbusdriver支持冗余,且这种冗余基于driver应用实例,而不是server,每个driver应用实例独立工作,之间没有相互影响.
冗余情况下,两台PGP标签库中的数值跟随当前为主的PGP所连接的PLC的数值变化,两台PLC自己的数据同步应该由PLC方自己来保证,如果两台PLC的数据不一致,为从的连接的那一台数值不管如何变化,不反应到PGP中.
两台PGPserver根据各自在scanner中设置的权重(weight)决定主从关系.权重值大的为主(master),权重值小的为从(slave).PGP的master/slave是基于scanner,而不是基于整个PGPserver的。
如果在标签库中Network属性设了同步tagconfiguration,修改标签时,只需在master中改,slave会自动同步.
主PGP的scanner永远不会”standby”,只要主PGP在线,便会执行通讯任务,即主PGP不在线,从PGP接管通讯任务,一旦主PGP恢复在线,通讯任务马上会切换回主PGP.
两台冗余的PGPserver,只要其中之一的scanner在正常工作,则两台PGP的标签库均可正常刷新
正常工作需要tntscanner.exe起动,串口连接正常,两者缺一不可.
Tntscanner.exe退出与串口电缆断开的效果相同.
从PGP串口断开时,scanmonitor提示”driverstandby”,主PGP串口断开时,scanmonitor提示”drivernotconnected”.
若两台PGP的scanner均断开,再起动时,会自动读取当前的最新值.比如,断开前,PGPscanner读到的是”0”,断开后,PLCsimulator中该值变为”1”,则任一台PGP恢复与PLCsimulator的通讯时,会自动将两台PGP标签数值更新为”1”.
5.Modbus通讯测试步骤记录
观察PGP的scanmonitor和标签库中的数值.
在PLCsimulator的Modsim中更改数值,在PGP1和PGP2中可同步看到数值的变化.
关闭PGP1的tntscanner.exe,可看到PGP1scanmonitor没有显示,PGP2显示”driverrunning.”在PGP1和PGP2标签库中可同步看到数值的变化.
起动PGP1的tntscanner.exe,关闭PGP2的tntscanner.exe,可看到PGP1显示”driverrunning”,PGP2scanmonitor没有显示.在PGP1和PGP2标签库中可同步看到数值的变化.
拔掉PLCsimulator的串口电缆,可看到PGP1显示”drivernotconnected”,PGP2显示”drivernotconnected”.在PGP1和PGP2中都看不到数值的变化.
恢复PLCsimulator的串口连接,断开PGP1的串口连接,可看到PGP1显示”drivernotconnected”,PGP2显示”driverrunning.”在PGP1和PGP2中可同步看到数值的变化.
恢复PGP1的串口连接,断开PGP2的串口连接,可看到PGP1显示”driverrunning”,PGP2显示”driverstandby.”在PGP1和PGP2中可同步看到数值的变化.
ShutdownPGP1,可看到PGP2显示”driverrunning”,在PGP2中可看到数值的变化.
ShutdownPGP2,可看到PGP1显示”driverrunning”,在PGP1中可看到数值的变化.
双向数据通讯:
在标签库中,编辑相应标签属性,Outputtab,填写输出地址,填写方法与Acquisition相同.特别是要填写driver名字.修改标签库之后,需重起PGP,否则修改不生效.
在PLCsimulator的Modsim应用软件中打开新窗口观察,从Modsim修改的数值又写回Modsim,表明PGP向PLCmonitor传送数据成功.
6.故障处理
1).问题:
测试两台冗余PGP连接一台PLCsimulator时,master,slave中scanmonitor显示正确,分别为“driverrunning”,“driverstandby”,serverstatus也正常,但standby的PGPserver无法通过以太网更新串口通讯数据.
解决:
原因是两台PGPserver标签库的tagUID不同.解决办法:
在master中建好标签库,export出来,再在slave中buildtagdatabase.之后两台PGPserver便可同步更新数据了.因此,实际项目中,建议先完成master的标签库,再导出到slave中,确保标签完全相同.
2).问题:
在测试PGP与PLCsimulator之间的通讯时,有两台计算机始终不能正常通讯.
解决:
电缆故障,只能做单向数据传送.更换电缆解决.