三菱PLC与PC上位机VB通讯Word文档格式.docx
《三菱PLC与PC上位机VB通讯Word文档格式.docx》由会员分享,可在线阅读,更多相关《三菱PLC与PC上位机VB通讯Word文档格式.docx(8页珍藏版)》请在冰点文库上搜索。
N计算机链接的还必须对站点号(D8121)进行设定。
设定的范围从00H到0FH(即0到15)。
在这里对D8120采用下述设置:
b15b0
0110100010001110
口打开。
在上位机程序中应进行如下设定:
PrivateSubForm_Load()'
窗体载入事件
MSComm1.CommPort=1'
选择端口号
MSComm1.Settings="
9600,e,7,2"
'
设置端口属性
MSComm1.PortOpen=True'
打开端口
EndSub
1.Output属性
MSComm控件的Output属性提供了发送的功能,当从计算机向可编程控制器写入数据或从可编程控制器读取数据时,上位机应当先发出以下格式(格式1)的指令字符串:
ENQ站号PC号命令消息等待时间字符区域A和校验代码
其中站号为在D8121中的设定值,这里是:
00,PC号对于FX系列为:
FF。
因为ENQ,ACK,NAK等通信控制字符是不可见字符,所以先用Chr函数对其进行赋值:
ENQ=Chr(5)ACK=Chr(6)NAK=Chr(&
H15)
然后在上位机程序中写入以下代码即可发出指令:
MSComm1.Output=ENQ&
“00FF<
命令>
<
消息等待时间>
字符区域A>
和校验代码>
”
2.Input属性
与Output属性相反,Input属性提供了接收数据的功能。
它将对方传到输入缓冲区中的数据读进程序中,并清除缓冲区中已被读取的数据。
a.如果是从计算机向可编程控制器写入数据时,接收到从可编程控制器返回的应该是以下格式的字符串:
ACK站号PC号或者NAK站号PC号错误代码
前一种表示可编程控制器已经正确接收到从计算机发来的指令,后一种表示可编程控制器未正确接收到从计算机发来的指令。
b.如果是从计算机向可编程控制器读取数据时,接收到从可编程控制器返回的应该是以下格式的字符串:
STX站号PC号字符区域BETX和校验代码或者NAK站号PC号错误代码
如果要连续读取数据可以利用Timer控件。
将Output和Input放在Timer控件的Timer事件中即可。
程序会以Timer控件的Interval属性中设置的间隔去发送指令和接收数据。
对于MSComm控件的其他一些属性使用VB的默认值即可。
在串行通信传输的应用中,经常使用的VisualBasic中的字符串处理函数如下:
Chr函数:
返回含有特定ANSI或DBCS字符码的字符串。
Asc函数:
返回字符串第一个字符的ANSI或DBCS字符码。
Len函数:
返回以字符数为单位的字符串长度。
Mid函数:
取得字符串中特定数量的字符,可指定开始获取的位置和长度。
Left函数:
取得字符串的左边固定字符数的字符串。
Right函数:
取得字符串的右边固定字符数的字符串。
Val函数:
把字符串转换为数值,可以将8进制或16进制的字符串转换为10进制。
Hex函数:
返回以十六进制数值表示的字符串。
RS指令应用一
三菱PLC与计算机利用RS指令进行通讯(通讯手册9-14例)
Windows98中文版+VisualBasic6.0中文企业版
0000010010001111
048F
即数据长度为8位,偶校验,2位停止位,波特率为9600bps,无标题符和终结符,没有添加和校验码,采用无协议。
PLC程序如下:
二.上位机程序的编制
完整程序代码及注释如下:
PrivateSubcmd1_Click()'
发送按钮
lbl1.Caption="
"
Iftxt1.Text="
Then'
若发送数据栏中未键入指令则提示键入指令
Pleaseinputdata"
Else
MSComm1.Output=txt1.Text'
发送指令
Timer1.Enabled=True'
触发延时接收
EndIf
9600,e,8,2"
PrivateSubTimer1_Timer()'
延时500ms接收
NAK=Chr(&
IfMSComm1.InBufferCount>
0Then
txt2.Text="
a=MSComm1.Input
txt2.Text=a'
在接收数据栏中显示接收到的数据
Noresponse"
Timer1.Enabled=False
RS指令应用二
三菱PLC与仪表之间通讯
仪表(称重器)
两者之间连线该仪表仅提供3线式的简化RS-232C口,即只有:
RXD,TXD和GND,于是采用2-3,3-2,5-5的三线接法。
1.对D8120进行设置并使其与仪表中的设置一致,对其中的控制线设置成使用无硬件握手方式,即(b12,b11,b10)=(0,0,0)。
根据仪表说明书上对通讯的要求,设置如下:
0000000010000110
0086
2.根据仪表说明书所述,该种仪表有两种工作方式:
连续发送和指令状态。
这里设置成指令状态,即仪表根据发来的指令返回相应的数据。
在此使用READ指令,根据指令协议,输入的指令必须以<
CR>
LF>
确认。
所以READ指令的ASCII输入为“52,45,41,44,0D,0A”一共6个字符,将RS指令的发送数据点数设为k6。
另外返回数据的格式是18个字符,所以将RS指令的接收数据点数设为k18。
通过
注:
发送数据点数和接收数据点数必须按指令协议进行设置,否则通讯不能正常进行。
参考资料
1.三菱FX通讯用户手册(RS-232C,RS485)
2.《VisualBasic与RS-232串行通信控制(最新版)》清华大学出版社