15221406036
6GK7343-1EX30-0XE0参数详细
报价: 面议
最小起订: 1
有效期至: 长期有效
发布时间: 2023-07-10 00:42
发布IP: 116.224.103.5
浏览次数: 44
手机号: 15221406036
电话: 15221406036
在线咨询: 点击这里给我发消息
15221406036
详细信息

6GK7343-1EX30-0XE0参数详细

  通信功能的实现

通信程序要实现S7-300向一个S7-200站发送7个字节的数据,然后接收并存储该S7-200返回的6个字节数据。S7-300发送的7个字节中,第1个字节是地址信息,第2、3、4字节是吸泥泵及刮泥桥控制数据信息,第5、6字节是1、2字节和3、4字节异或值,作为校验判断信息,第7位字节数据信息无意义,仅仅是为了触发一次S7-200的字符接收中断程序;S7-200向S7-300发送的6个字节中,第1个字节是S7-200的站地址信息,第2、3、4字节是吸泥泵及刮泥桥状态数据信息,第5、6字节为校验信息。

3.1        S7-300端通信程序

在自由口模式下,无论S7-200还是S7-300,通信协议完全由程序控制。CP340通过调用FB2 P_RCV来接收数据,调用FB3 P_SEND来发送数据。发送功能块FB3 P_SEND的参数REQ上升沿初始化发送请求,参数DB_NO指定发送数据块编号,参数DBB_NO是发送数据在参数DB_NO指定数据块中起始字节,LEN指定传输数据的字节长度;接收功能块FB2 P_RCV参数EN_R允许读数据,参数DB_NO指定接收数据块编号,参数DBB_NO是接收数据在参数DB_NO指定数据块中起始字节。

S7-300采用轮循方式与两S7-200通信,即秒内向1号站发送数据,然后接收1号站返回的数据(S7-200在接收到S7-300发送的数据后会立刻向S7-300发送数据);第二秒内向2号站发送数据,然后接收2号站返回的数据,不停地循环通信。

  S7-300通信程序详细介绍

AN   M     30.0

L    S5T#2S

SD   T     1

A    M     30.0

R    T     1

L    T     1

T    MW    40

NOP  0

A    T     1

=    M     30.0

//设一2秒定时器,定时时间到自动进行下一次定时,当前值存入MW40

A(

L     MW    40

L     102

>I

)

A(

L     MW40

L     200

)

=     M30.1

// 定时器秒钟内,即102

A(   

  L     MW    40

  L     2

   >I   

   )    

  A(   

     L     MW    40

     L     100

    

     )    

 =   M     30.2

//定时器第二秒钟内M30.2为1

A    (   

      A     M     30.1

      JNB   _001

      L     0

      T     MW    34

      SET  

      SAVE 

      CLR  

_001: A     BR

      )    

      JNB   _002

      T     MW    36

_002: NOP   0

// M30.1为1时,即定时器秒内,使MW34=0、MW36=0,作为起始字节值

A    (   

      A     M     30.2

      JNB   _003

      L     8

      SET  

      SAVE 

      CLR  

_003: A     BR

      JNB   _004

_004: NOP   0

// M30.2为1时,即定时器第二秒内,使MW34=8、MW36=8,作为起始字节值

O     M     30.1

O     M     30.2

=     M     33.0

A     M     33.0

=     L     20.0

  BLD   103

  CALL  "P_SEND" , DB19

  REQ   :=L20.0

  R     :=

  LADDR :=320

  DB_NO :=2

  DBB_NO:=MW34

  LEN   :=7

  DONE  :=M50.1

  ERROR :=M50.2

  STATUS:=MW52

  NOP   0

// 调用发送指令,当M30.1为1时(其上升沿初始化发送请求),即定时器秒内发送DB2.DBB0起始的7个字节,个字节为1站地址;当M30.2为1时(其上升沿初始化发送请求),即定时器第2秒内发送DB2.DBB8起始的7个字节,个字节为2站地址

  A     M     33.0

  =     L     20.0

  BLD   103

  CALL  "P_RCV" , DB20

  EN_R  :=L20.0

  R     :=

  LADDR :=320

  DB_NO :=22

  DBB_NO:=MW36

  NDR   :=M60.1

  ERROR :=M60.2

  LEN   :=MW62

  STATUS:=MW64

  NOP   0

// 调用接收指令,当M30.1为1时(允许读数据),即定时器秒内接收1号S7-200站回传的6字节数据,存入DB22数据块中,起始字节为DB22.DBB0;当M30.2为1时,即定时器第2秒内接收2号S7-200站回传的6字节数据,存入DB22数据块中,起始字节为DB22.DBB8

3.2  S7-200端通信程序

    S7-200 PLC程序分为主程序、子程序和中断程序,主程序完成控制和子程序调用功能,子程序完成通信口初始化功能,中断程序完成数据的接收和发送功能。发送数据采用发送指令XMT,接收数据采用逐字节接收方法,通信口接收每个字节都会暂存到特殊存储器SMB2中,并且产生中断,利用中断程序控制数据的接收。由于S7-200CPU的通信是建立在RS-485半双工通信硬件的基础上,接收和发送不能同时进行。通信中断程序要做到:接收指令不结束,就不能执行发送指令。

反映S7-200CPU工作方式的模式开关当前位置的特殊存储器位为SM0.7,它控制自由端口模式的进入。当模式开关处于TERM位置时,SM0.7为0;当模式开关处于RUN位置时,SM0.7为1。SMB30是自由口模式控制字节,用来设定校验方式、通信协议、波特率等通信参数(其各个位含义参阅相关手册),中断事件号8为端口0接收字符中断,中断事件号9为端口0发送完成中断。

当SM0.7为1时,调用子程序SBR_0设置SMB30,允许进行自由口通信;SM0.7为0时,调用子程序SBR_1重新设置SMB30,停止自由口通信,恢复PPI通信,便于用Micro/WIN软件对CPU运行状态进行监视

S7-200通信程序详细介绍(1号站)

 

主程序MAIN(只给出与通信有关程序)

LD     SM0.1

MOVB   1, VB1

//设置站地址

LD     SM0.7

EU

O      SM0.1

CALL   SBR_0

//运行或模式开关从TERM打到ON时定义通信口为自由口

LD     SM0.7

ED

CALL   SBR_1

//模式开关从ON拨到TERM时定义通信口为PPI从站

  子程序SBR_0

LD     SM0.0

MOVB   16#09, SMB30

ENI

ATCH   INT_11, 8

//定义通信口0为自由口模式,9.6K波特率,无校验,8位数据位,连接接收字符中断为中断程序INT_11

  子程序SBR_1

LD     SM0.0

MOVB   16#C0, SMB30

DTCH   8

DTCH   9

//恢复普通PPI通信设置

中断程序INT_11

LD     SM0.0

AB=    SMB2, VB1

MOVW   +5, VW200

MOVD   &VB640, VD688

ATCH   INT_12, 8

//若站地址正确,连接接收字符中断到中断程序INT_12,并使VW200=5来计数,在INT_12中连续接收五个字节;若站地址错误,则继续由INT_11接收字节数据,要在S7-300中程序中将其余六个字节的高位进行设计,避免出现为内容1或2地址信息的字节,即使传输过程中因外界干扰,其余六个字节出现为1或2的假地址情况,程序也会在接下来1~2个接收过程中,因INT_13中断程序中的校验指令作用,得到错误校验值,而恢复到正常接收状态。

中断程序INT_12

LD     SM0.0

MOVB   SMB2, *VD688

INCD   VD688

DECW   VW200

//接收5个字节

LD     SM1.0

MOVB   1, VB639

MOVW   VW639, VW700

XORW   VW641, VW700

ATCH   INT_13, 8

//通过异或指令进行数据校验,连接接收字符中断到中断程序INT_13,即由第七个字节触发中断程序INT_13

中断程序INT_13

LD     SM0.0

DTCH   8

//中断分离

LDW=   VW700, VW643

MOVD   VD640, VD400  //校验正确,将控制信息数据存到VB400~VB402

MOVB   6, VB600

MOVB   VB1, VB601

BMB    VB100, VB602, 5

ATCH   INT_14, 9

XMT    VB600, 0

//校验正确,使能发送,发送6字节数据VB601~VB606,连接发送指令结束到中断程序INT_14

LDW<>  VW700, VW643

ATCH   INT_11, 8

//校验不正确,连接接收字符中断到中断程序INT_11,进行新一次接收

中断程序INT_14

LD     SM0.0

DTCH   9

ATCH   INT_11, 8

//发送结束则连接接收字符中断到中断程序INT_11,进行新一次接收

 

4        电台选型和故障判断

数传电台选择了深圳友讯达科技发展公司的FC-201/B,该数传电台以其价格合理、运行稳定在国内得到广泛应用。通过友讯达提供的电台软件pfc5对电台进行参数设置,在S7-200两个站处将电台参数设置为:发射频率453.00,接收频率465.00,空中速率1200bps,工作模式为透明模式,串口波特率9600bps,串口校验和设为无;在S7-300站处将电台的参数中发射频率设为465.00,接收频率设为453.00,与S7-200站处电台收发频率对应,其余参数一致。

FC-201/B数传电台有一个发送和接收指示灯,当发送数据时为红灯,接收数据时为绿灯。根据此灯可以方便的判断通讯是否正常,正常情况下,S7-300轮循方式与两S7-200通信,即秒内向1号站发送数据,然后接收1号站返回的数据(S7-200在接收到S7-300发送的数据后会立刻向S7-300发送数据);第二秒内向2号站发送数据,然后接收2号站返回的数据,不停地循环通信。S7-300站处电台通讯指示灯红闪一下,接着绿闪一下,处在不停的红-绿-红-绿循环状态。而S7-200站在接收S7-300发送的数据时,要经过地址数据字节判断,确认地址为本站,并且对接收数据进行校验,确定接收数据无误才回传S7-300数据,但是只要S7-300发送数据,S7-200就接收数据,即使是发送给另一个S7-200站的数据。所以在无外界干扰,数据发送没有校验错误的情况下,S7-200站处的电台通讯灯是绿闪两下,红闪一下,处在不停的绿-绿-红循环状态,即接收两次数据,发送一次数据。如果通讯出现故障,根据通讯灯的闪烁状态,便可很容易查出通讯故障所在。

BCD码的大值是9999,因为一个字16个位,每四个为代表一个十进制的数;
1001100110011001:对应的就是9999,大值
以上的二进制数,在十六进制里的表示也是16#9999,但是它十进制值不是9999,而是39321
一个字节的十六进制数大值是:FFFF
9999十进制转换为十六进制数是270F没有错,这里9999不是BCD码,而是十进制的一个数值;数据在plc都是以二进制的形式存储的,格式上的不同,它的所表示的数也不同,比如某个数据时以BCD码的格式存储的,那么你要显示成十进制,就要进行转换,否者数值是不对的。以系统时钟为例,读取后的时间值是以BCD码存储的,假如取今年的年份,那么这个字节对应的BCD码就是,0001  0101 对应BCD码的值为15 ,但是系统显示的是十进制数,是21;所以要经过转化;
///我的理解是,BCD是一种数据的存储格式,这数据可以被用到别的数据场合,那么它表示的意思就不同了。

  BCD码(Binary-Coded Decimal‎)是二进制编码的十进制数的缩写,BCD码用4位二进制数表示一位十进制数。BCD码各位的数值范围为2#0000~2#1001,对应于十进制数0~9。BCD码不能使用十六进制的A~F(2#1010~2#1111)这6个数字。BCD码本质上是十进制数,因此相邻两位逢十进一。
   BCD码的高位二进制数是符号位,负数的符号位为1,正数为0。16位BCD码的范围为–999~+999。
   下图的拨码开关将显示的数字转换为4位二进制数。PLC用12个数字量输入点读取的是3位BCD码,它的值为2#1,即十六进制数16#829。
图
   BCD码没有单独的表示方法,而是借用了十六进制的表示方法,因此二者很容易混淆。
   下图是S7-300/400的BCD码和整数的相互转换指令,可以看到在指令中BCD码均用十六进制的形式表示。
图
   在程序中,怎么知道一个数字是BCD码还是十六进制数呢?
   1)看数据的来源和用途。BCD码一般用于输入和输出,例如来自拨码开关的数据是BCD码,送给显示电梯楼层的译码器芯片的是BCD码。
   2)看手册的规定,例如数据类型DATE_AND_TIME中的日期和时间值是BCD码,计数器的预设值PV和当前计数值CV_BCD为BCD码。
   怎样监视BCD码?
   在变量表和程序状态监控中,用十六进制格式监视BCD码。
   怎样输入BCD码?
   从上图可以看出,BCD码用十六进制格式输入,其高位(符号位)为16#F(2#1111)。BCD码的低3位各位只能是0~9,如果是16#A~16#F则会出错。
   计数器的预设值PV是0~999的BCD码,可以用格式为C#的常数(C#1~C#999)作为计数器的预设值。
   下图用MW42提供计数器的预设值PV,如果用MOVE指令将十进制数348(对应的十六进制数为16#15C)传送给MW42,进入RUN模式时,操作系统将它转换为BCD码时出错(16#15C不是BCD码),不能切换到RUN模式。
   输入预设值348时,应改为将C#348传送给MW42,它会自动地变为W#16#348,当然也可以直接输入16#348。没有必要用I_BCD指令将348转换为BCD码W#16#348后,再传送给MW42。
图

S7-300/400有很多好东西,只是我们不太熟悉而已。下面的方法是否更简单好用?
只需要调用IEC库里的FC33  S5TI_TIM,将数据类型S5TIME转换为数据类型TIME。IEC格式的时间TIME是以ms为单位的双字,将TIME格式的时间除以1000就是以秒为单位的时间值。
下图中T0的时间设定值为99s,S5TI_TIM输出的是94500sm(94.5s),显示格式为十进制。将T0的设定值改为9990s、999s和9s,S5TI_TIM都能输出正确的时间值。


相关产品
相关6gk7343产品
产品分类
最新发布
企业新闻
站内搜索
 
联系方式
  • 地址:上海市松江区广富林路4855弄88号3楼
  • 电话:15221406036
  • 手机:15221406036
  • 联系人:聂航