PLC与上位机通信以及PLC组网的相关资料
第28卷第3期2010年6月青海大学学报(自然科学版)JournalofQinghaiUniversity(NatureScience)Vol 28No 3Jun 2010
FX系列PLC与PC的通信研究
冯忠岭,童英华,韩 丽
(青海师范大学,青海西宁 810008)
摘要:介绍了FX系列PLC与PC的通信,从软、硬件角度分别给出了不同的解决方案。指出了编程口通信与计算机链接通信在通信参数配置和通信帧格式上的不同以及软元件地址的计算方法,同时列举了一个完整的PC与PLC通信实例的程序代码。关键词:可编程控制器;通信方式;通信帧;程序设计
中图分类号:TN911 2 文献标志码:B 文章编号:1006-8996(2010)03-0047-04
ResearchoncommunicationbetweenPLCofFXseriesandPC
FENGZhongling,TONGYinghua,HANLi(QinghaiNormalUniversity,Xining810008,China)
Abstract:AnumberofproblemsonthecommunicationbetweenPLCofFXseriesandPCareana lyzedandsolutionstotheproblemsinsoftwareandhardwarearegiven.Thedifferencesbetweenthe
programmingportcommunicationandcomputer linkingcommunicationinparameterconfigurationandframeformatarepointedou,tandthemethodtocalculateaddressesofsoftwareswitchesisputforward.Also,bytakingVB6 0asanexample,acommunicationprogramcodeforPCisgiven.Keywords:seriesPLCofFX;communicationpattern;communicationframe;communicationprogram在现代工业生产中,可编程控制器(ProgrammableLogicController,PLC)由于其安全可靠,运行寿命长,广泛地用于数据采集与控制。在此过程中,要进行PC与PLC间的通信,从而达到PC对PLC进行集中或集散远程监控目的。本文就FX系列PLC与PC的通信问题进行了分析并列举了程序实例。
1 FX系列PLC与PC的通信方式
1 1 编程口通信
FX系列的SC-09编程口是用于PLC编程器编写梯形图,该接口也用于PC安装FXGP编程软件后通过串口编写梯形图。实际上通过SC-09,就可以实现PC与PLC的通信,称为编程口通信。
编程口的通信参数是固定的:传输速率9600bps,偶校验方式,7位数据位,1位停止位端口通信时只需在上位机程序中将串口通信参数也设为此配置即可。1 2 计算机链接通信
一台计算机与多台PLC通信,称为1 N网络,一台计算机最多可连16台PLC,每台PLC上都有相应的RS-485接口适配器或接口功能扩展板。计算机首先要与FX-485PC-IF通信接口模块相连,完成RS-232C与RS-485之间的信号转换,之后其他PLC与首台PLC通过RS-485通信模块直接或间接相连接。要注意的是计算机与多台PLC通信时要在每台PLC的特殊数据寄存器D8120中设定通信参数,D8121中设置站号,D8129中设置发送超时/等待时间(单位为10ms)
[2]
[1]
,PC与此
。设置好D8120、D8121、
D8129将PLC关闭重启,使设置生效。与编程口通信不同,计算机链接通信参数不是固定的,可按实际
情况自由配置。
收稿日期:2010-03-10
),男,青海湟源人,硕士。
PLC与上位机通信以及PLC组网的相关资料
48
青海大学学报第28卷
1 3 无协议通信方式
对于FX系列的FX2N型PLC,在用上述两种方式与PC进行硬件连接后,还可以用RS、FROM/TO(使用FX2N-232IFBFM连接时)功能指令与PC进行无协议通信杂,主要用于PLC和扩展模块间通信。
[3]178
,这种通信方式的PLC编程复
2 FX系列PLC的通信协议
2 1 通信命令码和控制字符
计算机要与PLC建立通信时,要向PLC发送一串命令字,PLC根据接收到的这串指令就可判断出下步要做的工作。FX系列PLC有4种命令码,即读命令0(30H)、写命令1(31H)、强制通7(37H)、强制断8(38H)。FX系列采用面向字符的传输规程,用到5个通信控制字符,其中ENQ(05H)用于向计算机发出请求,ACK(06H)是PLC对ENQ的确定回答,NAK(15H)是PLC对ENQ的否定回答,STX(02H)是信息帧开始标志,ETX(03H)是信息帧结束标志。2 2 通信帧格式
PC侧:!发送通信请求的帧
ENQ
站号
PLC号
命令码
等待时间
首地址
数量
和校验
得到PLC正确响应后发送数据的帧
STX
站号
PLC号
命令码
数据
EXT
和校验
PLC侧:
ACK
站号
PLC号
或
NAK
站号
PLC号
上述帧格式中站号是1 N通信时在D8121中事先设定好的PLC编号,其值为00H~0FH。PLC号是用来标识PLC的CPU型号的,对于FX系列PLC,其值为#FF 。尤其要注意的是在编程口通信时通信帧中无须包括站号和PLC号。CMD为通信命令码。通信时帧内容必须转换成用十六进制的ASCII码表示。
[1]
FX系列PLC内部元件地址没有公开,但不同的字元件和位元件可遵循一定的规律得到。字元件C、T、D的地址算法为ADDRESS=ADDRESS*2+xH,C、T、D的xH分别为0A00H,0800H,1000H。位元件X、Y、M、S及C、T、D的位映象在进行批量读或写时,其地址可在FX编程口协议查询表的地址中查到,当进行位(映象)元件强制ON或OFF时,其地址可由字地址进行转换为位地址而得到。
传输的通信帧中的校验和是将命令码到ETX间所有字符的十六进制ASCII码值相加取其和的最后两位,若校验和有两位,则在高位补0,补足两位。
3 PC与PLC通信程序设计
本文以液位控制系统为例演示PC与PLC通信程序的设计。其中PC运秆VB监控程序(显示PLC采集到的一系列相关信息),管理PLC以及电机。PLC负责采集水位信息(上液位、下液位)、控制电机的启动与运行。设计采用编程口通信,有自动和手动两种工作方式。程序代码如下:
3 1 上位PC机程序
!用mscomm控件对PC串口初始化,通信参数要与PLC通信口参数保持一致。
[4]
图1 水箱液位控制系统Fig.1 Liquidlevelcontrolsystem
ofwaterbox
请求通信与确认,建立PC的COM口与PLC的通信链接。
MScomm1.output=chr(5)%发送请求标志pausetime=5%等待时间为5秒
PLC与上位机通信以及PLC组网的相关资料
第3期冯忠岭等:FX系列PLC与PC的通信研究
msgbox(#握手成功!#) else
msgbox(#握手失败!#) endif
else
msgbox(#握手失败!#)Endif
49
starttime=time()dowhiletime()<starttime+5 doEventsloop
ifmscomm1.inbuffercount=1then%是否有响应
ifASC(mscomm1.input)=6then %是否为PLC正确响应 &使PLC运行
Privatesubcommand1_click()
dimdevdatasstringmscomm1.inbuffercount=0mscomm1.outbuffercount=0devdat= 8250F +chr(3) )使PLC停止
Privatesubcommand2_click()dimdevdatasstring
mscomm1.inbuffercount=0mscomm1.outbuffercount=0devdat= 7250F +chr(3) 定时检测PLC状态
[5]
%M8037的复位命令字符串
mscomm1.output=ch(2)+devdat+sumcheck(devdat)(发送M0的置位命令,由于是(编程口通
信,不需要写站号和标识号
Endsub
%M8037的置位命令字符串mscomm1.output=ch(2)+devdat+sumcheck(devdat)
%发送M0的置位命令Endsub
setin=mscomm1.input%读接收缓冲区text1.text=setinsetin1=mid(setin1,2,1)%接收到的字符%从左起第三产业个字符起的4个字符%是K4M16的数值,排列顺序为2184.所%以我们取左起第2字符的2个字符就%是K4M16的低8位:M16+M23md=mid(setin1,2,1)
%取M19M18M17M16+8421md1=val(#&H +md)%转换为十进制m(0)=md1mod2
shape1.backcolor=&H80FF80%绿色+PLC运行态ELSE
shape.backcolor=&HFF8080%红色+PLC停止态EndifEndsub
Privatesubtimer1_timer()
dimdevaddasstring
dimsetinasstring,setin1asstringdimmdasstring,md1asintegerdimmgasstring,mg1asintegerdimm(6)asintegerdimdiannjasinteger
devadd= 0 + 0102 + 02 +chr(3)%读K4M16命令字符串mscomm1.inbuffercount=0mscomm1.outbuffercount=0
mscomm1.output=chr(2)+devadd+sumcheck(devadd)
%发送读K4M16命令tim=timer1
doIftimer>tim+1thenexitdo
loopuntilmscomm1.inbuffercount>=83 2 下位PLC程序
!PLC元件分配
X0ON水位上液位触点闭合
X2ON电机过热继电器动作
PLC与上位机通信以及PLC组网的相关资料
50
M20ON水位下液位指示M21ON电机过热指示
青海大学学报第28卷
M16ONPLC在运行态 OFFPLC在停止态M17ON电机在运行态 OFF电机在停止态M18ON系统在自动态 OFF系统在手动态
M0ON系统自动状态 OFF系统手动状态有关
[3]290
此外,程序中的M8000、M8002、M8035、M8036、M8037为PLC的特殊软件元件,与PLC的运行控制
。
指令语句表代码(限于篇幅未使用梯形图)
LDIM0ANDM32LDX001ORY000ANDM0ORB
ANIX000ANIX002OUTY000OUTM17ANIM8037
OUTM16LDM0OUTM18LDX000OUTM19LDX001OUTM20LDX002OUTM21END
OUTM8035OUTM8036LDM8037RSTM0LDM8002RSTM32LDX002ORX000ORM0RSTM32
LDM8000
4 结语
通过通信接口将PLC与PC,甚至PLC网络与计算机网络链接,将PC强大的运算能力和PLC的抗干扰能力强、可靠性高、编程简单等优点结合起来,可使以PLC为核心的工业控制系统更加智能化和富有灵活性。参考文献:
[1]漆海霞.基于FX编程口的PC与PLC的通信[J].工业计算机,2009,22(2):23.
[2]三菱电子有限公司.FX系列微型可编程控制器用户手册:通信篇[M].上海:[出版者不详],2006:5.[3]王万丽,郝庆文,臧永福.三菱系列PLC原理及应用[M].北京:人民邮电出版社,2009:178-291.[4]宋莉.基于PLC的远程监控及故障诊断[D].青岛:山东科技大学,2004:34.
[5]孙亚宁,邓平东.PC和PLC通信程序程序设计[J].昆明理工大学学报:理工版,2007,32(6):21.
(责任编辑唐宏伟)