⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tip028.ob1

📁 实用工具西门子s7-200最新手册,jjasdfasdfafdasdf
💻 OB1
📖 第 1 页 / 共 2 页
字号:
// Tip028B
// 题目:
// S7-214与SIMOVERT 电机驱动器之间的自由通信口通信接口

//***概述***
//S7-214通过与一台SIMOVERT微型主电机驱动器通信来起动和停止电机,以及改变输出
//到电机的频率。通信是通过S7-200自由通信口模式进行,使用USS5字协议。输入仿真
//器用来初始化发给电机驱动器的命令。

//***硬件要求***
//这个程序假定使用者已正确地将电机和微型主电机驱动器接好线,并且所有的电机和
//微型主机驱动器的参数已通过人工设定了。必须把微型主电机驱动器设置在遥控方式
//(P910=1),波特率19.2kb(P920=7),地址 1(P91=1).
//
//要求用一根带9针阳性插头的通信电缆接在S7-214的1,3,8端上,电缆另一端是无插
//头的,以便接到微型主电机驱动器的13,14,15端子上(1接15,3接13,8接14)。

//***程序结构***
//
// Main	主程序:监视用于自由通信口/PPI通信切换的RUN/TERM开关,寻找输入
              信号上升沿作业电机命令。
// SBR0	设置自由通信口通信:首次扫描时设置自由通信口模式的参数。
// SBR1	RUN子程序:设定电机恒速运转
// SBR2	PAMP子程序:设定电机变速运转。
// SBR3	增加频率倍率的子程序:增加微型主电机驱动器的输出频率
// SBR4	降低频率倍率的子程序:降低微型主电机驱动器的输出频率
// SBR5	Stop子程序:停止电机。
// SBR6	计算输出信息的BBC
// SBR7	发送信息,初始化发送定时器。

// INT0	发送结束的中断处理程序,打开接收器。
// INT1	发送超时的中断处理程序,再试发送,最多试发三次
// INT2	接收字符的中断程序,结束后进行有效性检验。
// INT3	接收超时的中断处理程序,再试接收最多试收3次。
//
//
//***程序和注释***
//
//S7-214通过与一台SIMOVERT微型主电机驱动器通信来起动和停止电机,以及改变输出到电机的
//频率,通信是通过S7-200自由通信口模式进行,使用USS5字协议。输入仿真器用来初始化发给
//电机驱动器的命令,程序监视RUM/TERM开关,并选择相应的协议来设置自由通信口模式的控制
//字节(SMB30)。程序监视如下的电机命令的输入点:
//
//	I0.0	上升沿    使电机以上次命令的恒定频率运转。
//
//	I0.2	上升沿    使电机以上次命令的频率开始变频运转。
//                       频率可使用I0.6和I0.7升高或降低。
//	I0.4   上升沿     停止电机。
//
//	I0.5	电平      以1*或2*倍率改变频率。
//                      I0.5: 0——1*, 1——2*。
//	I0.6	上升沿    以1*或2*频率增量(此例中为50)增加电机频率。
//
//	I0.7 	上升沿    以1*或2*频率增量(此例中为50)降低电机频率。
//
//	I1.0	电平      电机旋转方向: I1.0: 0——CW,1——CCW
//
// 程序检测并报告通信错误。首先对微型主电动机驱动器的发送要计时,如果失败,允许
//再次发送,最多可试发送3次。然后对来自微型主电动机驱动器的接收亦要计时,在退出发
//送接收操作之前可重试多达3次。对来自微型主电动机驱动器的响应信息要进行有效校验
//(STX,LEN,ADR和BCC),任何被检验到的错误都要由QB0显示,直到下一次操作结束,QB0的
//显示含义如下:
//	0			无错误
//	1			非法的响应
//	2			坏的BCC
//	3			发送超时
//	4			接收超时
//
// 尽管这个示例程序只与一台微型主电机驱动器通信,可把它扩展用于另外的输入点,选择
// 多站通信线路上的某一台微型主电机驱动器的地址,向它发送命令。另外,这个程序的基
//本通信结构还可以用来发送别的信息给微型主电机驱动器,如监视电流,转矩等。
//
//这个程序是S7-200自由通信口通信接口与SIMOVERT微型主电机驱动器通信的示例
//两者间通信用USS5字协议。
//S7-200作为主设备,使用USS协议地址0,而微型主电机驱动器则是地址1。
//为了正确地应用此例,你需要:
//1台带输入仿真器的SIMATIC S7-212或S7-214.
//1根RS485电缆,其一端为阳性插头,另一端无插头,已接到微型主电机驱动器上。
//1台微型主电机驱动器和电机
//这个例子使用Herb Taylor, SE&A的示例单元(驱动器和电机)
//你要确保正确地设置微型主电机驱动器的参数,并保证将它置于遥控方式
//(P910=1),波特率设置正确(P092),从地址设置正确(P091)。这个例子的波特率位19.2kb,
//从地址为1。

//微型主电机驱动器使用的USS串行通信5字协议有如下14字节结构:
// 
// 	02	开始信息(STX)
// 	12	微型主电机驱动器的信息从AA到BCC长度为12字节。
//	ADR	device number address. (In this example, the drive is
//		1 for a single slave station, or 32 for broadcast mode.)
//	PKE	参数控制高字节
//	PKE	参数控制低字节
//	IND	陈列序引字的高字节
//	IND	陈列序引字的低字节
// 	PWE 	参数值和错误代码的高字节
// 	PWE	参数值和错误代码的低字节
// 	PZD1	控制/状态字高字节
// 	PZD1	控制/状态字低字节
// 	PZD2	主设定2点和返回值的高字节。
// 	PZD2	主设定2点和返回值的低字节。
//	BCC	块校验和
//
//	***注意例中对于 开/关/速度改变只使用数据字:PZD1和PZD2.***
//
//
// 内存单元分配:
//
//  VB99		发送信息的长度
//  VB100 to VB113	发送缓冲区
//  VB114 to VB127	接收缓冲区
//  VW200		缺省频率倍率,初始值=5461,频率=(5461/16384)*P094
//  VW202		频率倍率增/减量,初始值=50。
//  VW204		发送再试次数,初始值为3次,每发一次减1。
//  VW206		发送再试次数,初始值为3次,每收一次减1。
//  VW208		信息中接收字符数,USS 10=14
//  VB210		最后一次试操作的状态(也在输出QB0显示),其值含义如下:
//			0	操作正确。
//			1	来自微型主电机驱动器的非法响应(除去坏的BCC)
//			2	坏的BCC
//			3	发送超时
//			4	接收超时
//  VD211		接收缓冲区的地址指针
//  VW215		累积接收信息为BCC,存于最低字节。
//  VB217 to VB218	暂时存储区

//

//

NETWORK 1	// //***主程序***
首次扫描执行的程序
LD     "First_Scan_On"		//首次扫描时 SM0.1=1
CALL   0				// 调用子程序0

NETWORK 2	//用RUN/TERM开关选择自由通信口/PPI通信
LD     "Mode_Switch"			// RUN/TERM开关位置:1——RUN,0——TERM 
=      "P0_Config_0"			// SM30.0=1为自由通信口协议,SM30.0=0为
                                    //PPI协议。

NETWORK 3	// 检查命令
LD     I0.4				// 停止电机
EU					// 且上升沿
CALL   5				// 则往微型主电机驱动器发送信息
S      M0.0, 1			// 使后续的RUN或RAMP命令有效(M0.1=1)
R      M0.1, 1			// M.01=0

NETWORK 4	// .

LD     I0.0				// 运行电机,且
EU					// 上升沿,则
A      M0.0				// M0.0=1,则
CALL   1				// 往微型主电机驱动器发送信息
R      M0.0, 2			// 使后续的RUN命令无效(M0.0=0,M0.1=0)
NETWORK 5	// 
LD     I0.2				// RAMP命令,且
EU					// 上升沿
A      M0.0				// M0.0=1,则
R      M0.0, 1			// 使后续的RUN命令无效。
CALL   2				// 往微型主电动机驱动器发送信息
S      M0.1, 1			// 显示现在的状态(M0.1=1)

NETWORK 6	// 
LD     I0.6				// 若增加频率
EU					// 且上升沿
CALL   3				// 增加速度

NETWORK 7	// 
LD     I0.7				// 减少频率
EU					// 且上升沿,则
CALL   4				// 减速

NETWORK 8	// 主程序结束
MEND				

//

//

NETWORK 9	////***子程序0***
// 初始化子程序——仅在第一次扫描时执行。
SBR    0				// 初始化XMT缓冲区,设置通信参数

NETWORK 10	
LD     "Always_On"			// 
MOVB   16#45, "P0_Config"		// 19.2kb,每字符8位,偶校验
MOVB   16#E, VB99			// XMT长度
MOVB   16#2, VB100			//  (STX)
					// 
MOVB   16#C, VB101			//  (LEN) 
MOVB   16#1, VB102			//  (ADR) 微型主电机驱动器地址为1
					// 
FILL   0, VW103, 5			// 清除所有5个数据字(VW103至VW111)以后还
                                     //可以改变
MOVW   16#1500, VW200		// 1/3最大的频率倍率
MOVW   16#32, VW202			// 频率倍率以50增/减
MOVD   16#30003, VD204		// 设定发送和接收重试次数为3
MOVB   0, VB210			// 清除操作状态指示
MOVB   0, QB0				// QB0=0
MOVB   0, VB219			// S7-200地址。
S      M0.0, 1			// 允许RUN或RAMP或RAMP(方向改变)
ENI					// 允许用户中断

NETWORK 11	// 子程序0结束
RET					

NETWORK 12	// 子程序1
// 运行电机子程序,旋转方向取决于输入I1.0的状态。
SBR    1				// 运行电机

NETWORK 13	// 
LD     "Always_On"			// 
MOVB   16#5, VB109			// 为CW设置STW


MOVB   16#7F, VB110			// clockwise inching.
MOVW   VW200, VW111			// 设置频率.

NETWORK 14	// 
LD     I1.0				// 设定旋转方向,若I1.0=0,则为CW;若I1.0=1
                                    // 则为CCW
=      V109.3				// set V109.3 to indicate
					// counterclockwise direction.
NOT					// If input I1.0 is not on,
=      V109.4				// set V109.4 to indicate clockwise
					// direction.

NETWORK 15	
LD     "Always_On"			// 
CALL   6				// 计算BCC.
CALL   7				// 初始化。XMT及XMT定时器

NETWORK 16	// 子程序1结束
RET					

NETWORK 17	// 子程序2
//RAMP电机的处理子程序,电机运行时,根据输入I0.2的上升沿脉冲,对电机频率进行
//+/-RAMP修正,电机旋转方向取决于输入I1.0的状态。
SBR    2				// 运行电机

NETWORK 18	//
LD     "Always_On"			// 
MOVB   16#4, VB217			// 设置命令字符

NETWORK 19	// 
LD     V109.3				//保存以前的电机旋转方向 
=      V217.3				// direction indicator for
					// counterclockwise.

NETWORK 20	// Preserve Previous Motor Direction Indicator for Clockwise
// Load variable memory bit V109.4.
// If V109.4 is on (has a signal state of 1),
// indicating that the motor is running clockwise),
// turn on variable memory bit V217.4
// to preserve the previous motor direction indicator for clockwise.
LD     V109.4				// Preserve the previous motor
=      V217.4				// direction indicator for
					// clockwise.

NETWORK 21	// Set Up the Status Word (STW) for RUN and Set the Frequency
// Load special memory bit SM0.0 to process this network every scan cycle.
// Move the contents of variable memory byte VB217 (the setup for
// command byte) into VB109
// and move the hexadecimal value 7F (binary 0111 1111) into variable
// memory byte VB110 to set up STW for RUN.
// Move the contents of variable memory word VW200 into VW111
// to set the frequency.
LD     "Always_On"			// SM0.0总是1.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -