欢迎来到天天文库
浏览记录
ID:45782944
大小:177.00 KB
页数:8页
时间:2019-11-17
《基于HOSTLINK协议的FINS通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于HOSTLINK协议的FINS通信【摘要】:上位机与欧姆龙PLC串行通信时,通常使用HOSTLINK协议,但HOSTLINK协议只能通信4位及4位以下地址数据。如果需要通信4位以上地址数据,可使用FINS协议。FINS是欧姆龙公司开发的用于工业自动化的串口通信和网络通信的协议。本文介绍了FINS用于串口通信时的数据帧格式,并在VisualBasic的可视化开发环境下,利用Serialport控件开发了具体的通信应用,实现了上位机与PLC内存高地址之间的数据通信。一、PC主机直接连接PLC串口
2、命令帧格式介绍命令格式HostLinkheaderHostLinkFCSHostLinkterminator响应格式HostLinkheaderHostLinkFCSHostLinkterminatorPC主机直接连接PLC的情况下,主机发送命令给PLC,发送命令格式如下:FINScommandcodeTextFCSTerminator(1,080characters=540bytesmax.)@:Hostlink协议起始代码UnitNo.:单元号,对应PLC内置串口或串行通讯单元设置的Host
3、link单元号。文件鬥选项(0)帮助(H)ICPIH-XA
4、®5Headercode:在PC主机直连PLC的情况下,头代码为FAResponsewaittime:设置范围为0~F,单位为10ms,例如设置为2,则响应等待时间为20msICF、DA2、SA2:在PC主机直连PLC的情况下,固定为00。SID:通常设置为00Finscommandcode:参考Fins通讯手册读命令:0101写命令:0102Text:具体操作内容,读写区域、读取起始地址、数据长度等内容存储区代码:AreaDataty
5、peCS/CJmodememoryareacode(Hex)CVmodememoryareacode(Hex)BytesperelementCIOAreaCIOBit30001WorkAreaWR31—HoldingBitAreaHR32—AuxiliaryBitAreaAR3300CIOAreaCIOWordBO802WorkAreaWRBl—HoldingBitAreaHRB2■■■AuxiliaryBitAreaARB380TimerAreaTIMCompletionFlag09011Co
6、unterAreaCNTTimerAreaTIMPV89812CounterAreaCNTDMAreaDMBit02—1DMWord82822EMAreaEMbank0tobankCBit20to2C—1EMbank0tobankCWordA0toAC90to972EMcurrentbankWord98982EMcurrentbankNo.EMcurrentbankNo.BC9C2TaskFlagTKBit06—1TKStatus46—1IndexRegisterIRPVDC—4DataRegi
7、sterDRPVBC9C2ClockPulsesBit07—-1ConditionFlagsBit1Tips:使用Fins指令最大可读取538个字节。一条命令不能超过1114个字符。二、根据FINS协议格式使用MicrosoftVisualStudio软件编写上位机监控画面如下:端口设置串口号C0M1波特丰9600串口连接状态串口连接袤石T串口未打开读出逋道数据打开串口写辛存器位写入<«据0001读警存器字节DM0DM1DM2DM3DM4DM5DM6DM7DM8DM9DM10DM11DM12DM
8、13DM14DM15写宇节读字节读寺存器佞三、该监控软件功能介绍:串口、波特率可以选择设置;可实现对PLC的字节、位的读写操作。四、该软件对PLC的字节及位读写的示例截图:读出通道数据读爭存器字节读字节DMO00011、读DO寄存器该截图显示的DMO0001即为PLC读出的值2、写D0寄存器下面截图显示的0001即为PLC写入D0的值,写入成功有显示即为已写入成功,若写入不成功,则显示写入失败0001写寄存器字节DMODM1DM2DM3DM4DM5DM6DM7DM8DM9DM10DM11DM12
9、DM13DM14DM15写字节写入成功五、对该软件的组成作个简要介绍:1、串口通信2、读字节3、写字节4、读位5、写位六、部分程序的分析:1、关于Serialport的使用:直接调用Scrialport控件,接着设置参数即可通信2、关于读写字节位可以直接调用动态链接库3、部分程序例子:1)、自动检测串口DimportsAsString()=SerialPort.GetPortNames()'必须用命名空间,用SerialPort,获取计算机的有效串口DimportAsStringForEachp
此文档下载收益归作者所有