新闻
西门子承德西授权代理商
2023-03-09 13:55  浏览:37
西门子承德西授权代理商

西门子承德西授权代理商

随着计算机应用领域的不断扩展,计算机之间的远程通信用得也越来越广泛,计算机间的远程通信所使用的通信软件,在市面上可以买到,但是通用的通信软件虽然能发送和接收文件,在许方情况下这些通信软件并不能满足实际工作的需要。本文就这一技术进行了探讨,介绍了有关的知识和技术,并由实例分步骤说明如何进行通信软件的开发。 

一、前言 
  本文将以VB5.0所带的通信控件MSCOMM进行通信软件的开发,它有约30个属性和事件(可以从联机帮助中找到其使用资料)。本文简述它的主要属性及事件,并归类整理。 
利用串行端口与调制解调器进行连接时,对于用MSCOMM控件编制通信软件来说,只需了解以下五根线的代号及作用。以下五根线的高电平/低电平状态分别对应MScomm控件的相应属性的True/False值。 
  (1)DTR线:PC发往MODEM,表示PC机是否已准备好。 
  (2)RTS线:PC发往MODEM,表示PC机是否允许modem发回数据. 
  (3)DSR线:MODEM发往PC,表示MODEM是否已做好操作准备 
  (4)CTS线:MODEM发往PC,表示MODEM是否允许发送数据 
(5)CD线:MODEM发往PC,表示MOEDM已经与呼叫的远方MODEM处于连结状态 

二、MSCOMM控件的属性 
用1,2,...表示串口COM1,COM2.... 
设置或返回联接MODEM的串口的编号 
Settings 
例用"19200,N,8,1"表示传输速率为19200bps,没有奇偶校验位,8位数据位,1位停止位。 
设置或返回通信参数。 
Handshaking 
0没有握手协议,不考虑流量控制。 
1XON/XOFF,即在数据流中嵌入控制苻来进行流控。 
2RTS/CTS,既由信号线RTS/CTS自动进行流量控制(常用)。 
3两者皆可。 
设置或返回硬件握手协议,指的是PC机MODEM之间为了控制流速而约定的内部协议。 
PortOpen 
True/False可以打开/关闭端口。 
打开或关闭端口。 
OutBufferSize 
传输缓冲区的字节数,如选1024。 
设置或返回传输缓冲区大小。 
OutPut 
Variant型变量。 
向传输缓冲区写数据流。 
传输文本数据时,应将bbbbbb型数据放入Variant变量,传输二进制数据(即按字节)时,应将Byte型数组数据放入Variant变量 
InBufferSize 
接收缓冲区的字节数,如选1024。 
设置或返回接收缓冲区大小。 
bbbbbMode 
0用bbbbb属性接收文本型数据。 
1用bbbbb属性接收二进制数据。 
设置或返回接收数据的数据类型。 
InBufferCount 
Integer型 
返回接收缓冲区中已传到但还未取走的字符个数。 
bbbbb 
当bbbbbMode属性值为0(文本模式)时,变量中含bbbbbb型数据。 
当bbbbbMode属性值为1(二进制模式)时,变量中含Byte型数组数据。 
将接收缓冲区中收到的数据读入变量。 
DTREnabled 
RTSEnabled 
DSRHolding 
CTSHolding 
CDHolding 
均取值TRUE/FALSE 
用于读取或控制pc机与modem之间的交互状态。需运用好。例如,应在读取到DSRHolding属性值为TRUE时再向MODEM发出命令。应当在载波检测到以后(CDHolding属性为TRUE)时再向MODEM发送数据。 

三、MSCOMM控件的触发事件 
  MSCOMM控件只使用一个事件OnComm,用属性CommEvent的十七个值来区分不同的触发时机。主要有以下几个: 
  (1)CommEvent=1时:传输缓冲区中的字符个数已少于Sthreshold(可设置的属性值)个。 
  (2)CommEvent=2时:接收缓冲区中收到hreshold(可设置的属性值)个个字符,利用此事件可编写接收数据的过程。 
  (3)CommEvent=3时:CTS线发生变化。 
  (4)CommEvent=4时:DSR线发生变化。 
  (5)CommEvent=5时:CD线发生变化。 
  (6)CommEvent=6时:检测到振铃信号。 
  另外十种情况是通信错误时产生,即错误代码。 

四、通信软件程序实现 
  1、首先是通信参数设置,主要就是可以设置端口号,波特率,数据位,停止位,奇偶校验位及设置硬件握手协议,这些设置较为简单。 
2、向MODEM发出DTR(已准备好)信号,如下例程: 
If MSComm1.PORTOPEN Then 
MSComm1.DTREnable=True 
Else 
MSComm1.DTREnable=False 
EndIf 
3、打开时向MODEM发出一些命令来设置参数,其中S0=n(n>=1)自动应答.n为响铃次数;E0/E1关闭/打开命令字符回应;Q0/Q1modem返回/不返回结果码;M0/M1关闭/打开MODEM扬声器,例程如下: 
If MSComm1.PORTOPEN Then 
Do While not MSComm1.CTSHolding : loop 
Outbbbbbb="ATS0=1E1Q0M0"+Chr(13) 
MSComm1.Output=Outbbbbbb 
End if 
4、进行拨号设计,需向MODEM发出ATDT命令,如下语句: 
MSComm1.Output="ATDT"+Trim(“电话号码”)+Chr(13) 
5、拨号以后发送数据文件,程序要循环等待并随时判定是否接通。如果MODEM向PC的回应字符串中含有"Connect"或CDHolding属性值变为True(检测出载波),则表示已与远方MODEM连机了,此时可以传输数据。 
程序设计发送及接收程序时,需要以下定义: 
S_FILENAME = "NAME" + Chr(5) + Chr(13) + Chr(10) 
S_FILELEN = "LENTH" + Chr(5) + Chr(13) + Chr(10) 
S_FILESEND = "BEGIN" + Chr(5) + Chr(13) + Chr(10) 

Sub OpenFileToSend() '打开一个欲发送的文件 
HSend = FreeFile 
Open SENDFN For Binary As hSend 'SENDFN中含有由用户选定的要传送的文件名。 
LF&=LOF(hSend) '文件长度为LF& 
'开始发送文件名,文件长度,文件开始等信息字符串。 
Dim Data as Vrait 
Data = S_FILENAME 
MSComm1.Output=Data '发出"FILENAME"文件名字串的提示信息 
Data = SENDFN +Chr(13)+Chr(10) 
MSComm1.Output=Data '发出文件名 
Data = S_FILELEN 
MSComm1.Output=DATA '发出"FILELEN"提示字串 
Data = Trim(Str(LF&))+Chr(13)+Chr(10) 
MSComm1.Output=Data '发出文件大小 
Data = S_FILESTAR 
MSComm1.Output=Data '发出"FILESTART"提示信息,表示下面文件开始。 

Dim Sendarr() as byte '定义字节型数组 

[NextPage]
Sum=0 '记录累计发送的字节数 
BSIZE=MSComm1.OutBufferSize '每次发送的块大小 
ReDim Sendarr(1 To BSIZE) '重新定义读取缓冲 
Do While Sum<LF& '循环发送 
If LF&-Loc(hSend)<BSIZE Then 
BSIZE=LF&-Loc(hSend) 
ReDim Sendarr(1 To BSIZE) 
End If 
Get hSend ,, SENDARR '从文件取字节放入字节数组 
Sendvar=Sendarr '转放到Variant型变量 
'当CTS线及CD线为高电平时才可发送,否则需等待。 
T=Timer+60 
L: 
If MSComm1.CTSHolding And MSComm1.CDHolding Then 
MSComm1.Output=Sendvar '发送 
Sum = Sum + BSIZE'累加计数 
Else 
If Timer < T Then 
Go To L '循环等待 
Else 
Go To CLOSEFILE '等待时间超过60秒则退出 
End If 
End If 
'等待系统处理完 
Do 
RET = DoEvents() 
Loop Until MSComm1.OutBufferCount = 0 
Loop '循环发送完毕。 

6、接收MODEM送回的信息和数据文件,该过程是编写mscomm1控件的OnCOMM事件的处理程序来完成。为了接收文本类型的握手信号,通常使bbbbbMode属性为文本模式。当发现接收到的字符串中有"FILESTAR"+Chr(5)+Chr(13)+Chr(10),则将bbbbbMode属性改为二进制模式。当文件内容接收完(由接收的字节数判断)再将bbbbbMode属性改为文本模式。例程如下: 
Private Static Sub MSComm1_onComm() 
Select Case MSComm1.CommEvent 
Case comEvReceive '接收缓冲区收到Rthreshold个字符时触发 
Dim DATA As Variant 
Dim N As Long 
Dim SJARR() As Byte 
N=MSComm1.InBufferCount '接收缓冲区字符总数 
If MSComm1.bbbbbMode=0 Then'文本模式时,将收到的数据放到字符串变量。 
MSComm1.bbbbbLen=0 
DATA = Space(N) 
DATA = MSComm1.bbbbb 
Else '二进制模式时,将收到的数据放到字节数组。 
ReDim S JARR(1ToN) 
DATA=ARR 
MSComm1.bbbbbLen=N 
DATA=MSComm1.bbbbb 
End If 
'其它case情况略 
End Select 
End Sub 

7、关于接收到的数据的处理例程: 
Public Static Sub HandleData (Disp As Control,N As Long,DATA As Variant) 
'参数:Disp(文本框,用于显示接受数据) 
'N为本次接收到的字节数 
'DATA(接收到的数据.Variant型) 
If not mscomm1.bbbbbMode=0 Then '接收的是字符串 
Go To L2 
End If 
Disp.SelStart = Len ( Disp.Text) 
Disp.SelLength = 0 
Disp.SelText = DATA '显示字符数据 
If InStr(1,Disp.Text,S_FILESTAR,0)=0 Then '若没有开始标志就结束此过程 
ExitSub 
EndIf 
V_FILENAME = InStr(1,Disp.Text,S_FILENAME,0) '找文件名及文件长度 
V_FILELEN = InStr(1,Disp.Text,S_FILELEN,0) 
FN = Mid(Disp.Text,V_FILENAME+11,(V_FILELEN-V_FILENAME-13)) 
HJS = FreeFile'打开接收文件 
JSFN = Pathc+"\SJFILE\S"+Trim(Str(NO))+"_"+FN 

Open JSFN For Binary As HJS 
V_FILENAME = InStr(1,Disp.Text,S_FILENAME,0) 
V_FILELEN = InStr(1,Disp.Text,S_FILELEN,0) 
FN = Mid(Disp.Text,V_FILENAME+11,(V_FILELEN-1)-(V_FILENAME+11)) 
FL = Mid(Disp.Text,V_FILELEN+11,V_FILESTAR-(V_FILELEN+10)) 
SENDLEN = Val(FL) '应收总字节数SENDLEN 

西门子DP接头:

用于将 PROFIBUS 节点连接到 PROFIBUS 总线电缆

安装方便

FastConnect 插头采用绝缘刺破连接技术,可确保极短的组装时间

集成端接电阻 (6ES7 972-0BA30-0A0 中不具有)

通过带 Sub-D 接口的连接器可以连接编程器,无需额外安装网络节点
     安全可靠

总线连接器具有轴向电缆引出线(180°),可用于如 PC 和 SIMATIC HMI OP,传输速率高达 12 Mbit/s,带集成的总线端接电阻

带垂直电缆引出线的总线连接器(90°);

这种接头采用垂直电缆引出线(有或没有编程器接口),数据传输速率高达 12 Mbit/s,带集成的终端电阻。传输速率为 3、6 或12 Mbit/s 时,在带编程器接口的总线接头和编程器之间,需要使用 SIMATIC S5/S7 连接电缆。

性能佳

有 30°电缆引出线的总线接头(经济型),无编程器接口,数据传输速率z大为 1.5 Mbit/s,无集成的总线端接电阻。

西门子6ES7972-0BB12-0XA0接头

PROFIBUS 快速连接 RS485 总线接头(90°或 180°电缆引出线),传输速率大为 12Mbit/s,采用绝缘刺破技术可实现快速简单安装(用于硬线和软线)
西门子DP接头隔离功能

总线连接器可直接插入到 PROFIBUS 站或 PROFIBUS 网络组件的 PROFIBUS 接口(9 针 Sub-D 接口)中。

可使用 4 个端子在插头中连接进入和离开的 PROFIBUS 电缆。

通过从外部清晰可见的便于接触的开关,可以连接总线连接器中集成的总线端接器(不适用于 6ES7 972-0BA30-0A0)。在此过程中,连接器中的进线和出线总线电缆是分开的(隔离功能)
 

总线接头

6ES7 972-0BA52-0A0
6ES7 972-0BB52-0A0

6ES7 972-0BA60-0A0
6ES7 972-0BB60-0A0

6GK1 500-0FC10

6GK1 500-0EA02

电缆引出线

90° 电缆出线

35° 电缆出线

180° 电缆出线

传输速率

9.6 Kbit/s 到 12 Mbit/s

端接电阻

集成电阻器组合和隔离器的功能可使用一个滑触开关选择:
如果连接有电阻器,则引出总线是断开的。通过 FastConnect 系统的绝缘刺破技术进行连接

集成电阻器组合和隔离器的功能可使用一个滑触开关选择:
如果连接有电阻器,则引出总线是断开的。
通过 FastConnect 系统的绝缘刺破技术进行连接

集成电阻器组合和隔离器的功能可使用一个滑触开关选择:
如果连接有电阻器,则引出总线是断开的

接口





PROFIBUS 站

9 针 Sub-D 插座

9 针 Sub-D 插座

 

西门子DP电缆连接器

提供有各种类型的总线连接器,可优化用于连接的设备:

总线连接器具有轴向电缆引出线(180°),可用于如 PC 和 SIMATIC HMI OP,传输速率高达 12 Mbit/s,带集成的总线端接电阻

带垂直电缆引出线的总线连接器(90°);

这种接头采用垂直电缆引出线(有或没有编程器接口),数据传输速率高达 12 Mbit/s,带集成的终端电阻。传输速率为 3、6 或12 Mbit/s 时,在带编程器接口的总线接头和编程器之间,需要使用 SIMATIC S5/S7 连接电缆。

有 30°电缆引出线的总线接头(经济型),无编程器接口,数据传输速率zui大为 1.5 Mbit/s,无集成的总线端接电阻。

PROFIBUS 快速连接 RS485 总线接头(90°或 180°电缆引出线),传输速率zui大为 12Mbit/s,采用绝缘刺破技术可实现快速简单安装(用于硬线和软线)。

西门子接头的做法:

1、profibus总线是紫色的屏蔽双绞线,两芯线分别是红色和绿色,和总线连接器连接的时候要按颜色来接线,一般A1、A2为绿色,B1、B2为红色。 

2、profibus总线上的设备都是一进一出串联起来的,所以终端的两个设备都是接总线连接器的进线端(A1和B1),中间的设备都是进线接A1、B1,出线接A2、B2.

3、终端电阻拨码的位置是两端的设备(就是只有进线的设备)打到“ON”的位置,中间的设备打到“OFF”的位置,原因如下,每个总线连接器上都有一个200欧姆的终端电阻,只有两端的设备才需要连接终端电阻,目的是总线上的阻抗匹配,减少信号衰减,当终端电阻在ON的位置时,A1、B1和终端电阻联通,和A2、B2断开,当终端电阻在OFF的位置时,A1、B1和终端电阻断开,和A2、B2联通。

4、接线完毕之后,你拿万用表来检查一下接线,A1、B1和总线连接器前面的管脚3和8是联通,所以你需要把两端插头的管脚3之间和管脚8之间量一下是否连通,然后3和8之间的电阻是否在110欧姆左右(因为连端都连接终端电阻,相当于两个220欧姆的电阻并)


相关新闻
联系方式
公司:浔之漫智控技术-西门子PLC代理商
姓名:聂航(先生)
电话:15221406036
手机:15221406036
地区:直辖市-上海
地址:上海市松江区广富林路4855弄88号3楼
QQ:3064686604
微信:15221406036
15221406036 请卖家联系我
拨打电话
微信咨询
请卖家联系我