西门子模块313-6BG04-OABO
西门子模块313-6BG04-OABO
西门子模块313-6BG04-OABO
(上海湘康自动化设备中心yanyi321)
上海湘康自动化设备中心主营;
工业自动化控制设备,电子元器件,仪器仪表,电线电缆,通信设备及相关产品,电器设备,电气设备,五金交电,电子设备,机电设备及配件,机械设备销售,机械设备安装维修,从事“工业自动化,电子”科技领域内技术开发,技术咨询,技术服务。:
SIEMENS 可编程控制器
1、 SIMATIC S7 系列PLC:S7-200、S7-1200、S7-300、S7-400、ET-200
2、 逻辑控制模块 LOGO!230RC、230RCO、230RCL、24RC、24RCL等
3、 SITOP直流电源 24V DC 1.3A、2.5A、3A、5A、10A、20A、40A可并联.
4、HMI 触摸屏TD200 TD400C K-TP OP177 TP177,MP277 MP377,
SIEMENS 交、直流传动装置
1、 交流变频器 MICROMASTER系列:MM420、MM430、MM440、G110、G120.
MIDASTER系列:MDV
2、全数字直流调速装置 6RA23、6RA24、6RA28、6RA70、6SE70系列
SIEMENS 数控 伺服
SINUMERIK:801、802S 、802D、802D SL、810D、840D、611U、S120
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
SIMOTION通信函数_xsend与_xreceive适合SIMOTION之间通过MPI-MPI接口、PROFIBUS-PROFIBUS间的数据交换,通信数据大为200个字节,SIMOTION也可以通过调用通信函数_xsend与_xreceive实现与S7-300/400 PLC(在PLC中调用SFC65 X_SEND与SFC66 X-REV)MPI接口间的数据交换,由于受到PLC通信区的限制,大通信数据为64个字节。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.MPI与PROFIBUS网络介绍
MPI是S7-300/400,SIMOTION的编程接口,对通信数据及实时性要求不高的应用可以利用编程接口进行通信, MPI的通信速率为19.2K~12Mbit/s, 只有可以设置为PROFIBUS接口的MPI口才支持12M的通信速率,例如S7-300中CPU318-2DP及所有的S7-400CPU 、SIMOTION MPI口都可以设定为PROFIBUS接口,所以它们的MPI接口通信速率都可以设置为12M。MPI接口通信速率缺省设置为187.5Kbit/s,无中继情况下大通信通讯距离为50米,通过中继器可以扩展网络长度,扩展的方式有两种,种,两个站点中间没有其它站,如图1
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图1:MPI网络扩展
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
控制器站点到中继器长为50米,两个中继器之间的距离为1000米,多可以增加10个,所以两个站点之间的长距离为9100米。
第二种,如果在两个中继器中间有MPI站点,那么每个中继器只能扩展50米,在组态时要考虑这两种连接方式。
MPI接口为RS485接口,连接电缆为PROFIBUS电缆(屏蔽双绞线),接头为PROFIBUS接头并带有终端电阻,如果用其它电缆和接头不能保证通信距离。在MPI网络上多可以有32个站,中继器,WINCC站,操作面板OP/TP也要算一个站点。MPI的站号及通讯速率可以在STEP7或SCOUT硬件组态时修改,下载组态信息到CPU后,站号及通讯速率将改变。
PROFIBUS总线符合EIA RS485[8]标准,PROFIBUS RS485 的传输程序是以半双工、异步、无间隙同步为基础的。传输介质可以是光缆或屏蔽双绞线,电气传输时,每一个RS485传输段为32个站点包括有源网络元件(RS485中间器,OLM等),在总线的两端为终端电阻,结构如图2:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图2:PROFIBUS网络结构
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 西门子总线终端一般都配有终端电阻,PROFIBUS使用9针D型连接器,D型连接器插座连接总线站,D型连接器插头与总线电缆相连。总线终端和针脚定义如表1:
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表1 总线终端管脚定义
| 针脚号 | 信号名称 | 设计含义 |
| 1 | SHIELD | 屏蔽或功能地 |
| 2 | M24 | 24V输出电压地(辅助电源) |
| 3 | RXD/TXD-P | 接收和发送数据-正 B线 |
| 4 | CNTR-P | 方向控制信号P |
| 5 | DGND | 数据基准电位(地) |
| 6 | VP | 供电电压-正 |
| 7 | P24 | 正24V输出电压(辅助电源) |
| 8 | RXD/TXD-N | 接收和发送数据-负 A线 |
| 9 | CNTR-N | 方向控制信号N |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> PROFIBUS总线的传输速率为9.6Kbit/s ~12Mbit/s,总线长度与传输速率相关,的规律是传输速率越高总线长度越短,越容易受到电磁干扰,基于传输速率的大网段长度参考表2:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表2 传输速率与通信长度
| 波特率(K Bit/s) | 9.6~187.5 | 500 | 00 | |
| 总线长度(米) | 1000 | 400 | 200 | 100 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
总线终端的电阻与PROFIBUS总线相匹配,并配有轴向电感以消除电容性负载而引起的导线反射,选择普通的屏蔽双绞线不能保证总线的段长度。
如果需要扩展总线的长度或者PROFIBUS从站数大于32个时,就要加入RS485中继器,例如,PROFIBUS的长度为500米,而波特率要求达到1.5MBIT/S,对照表2波特率为1.5MBIT/S使大的长度为200米,要扩展到500米,就需要加入两个RS485中继器,拓扑图如图3所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图3:PROFIBUS网络扩展
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
西门子RS485中继器具有信号放大和再生功能,在一条PROFIBUS总线上多可以安装9个RS485中继器,其它厂商的产品要查看其产品规范以确定安装个数。
一个PROFIBUS网段多可有32个站点,如果一条PROFIBUS网上过32个站点,也需要用RS485中继器隔开,例如一条PROFIBUS总线上有80个站点,那么就需要两个RS485中继器分成3个网段。RS485中继器是一个有源的网络元件,本身也要算一个站点。除了以上两个功能,RS485中继器的还可以使网段之间相互隔离。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
3.网络设置
下面以SIMOTION D435与S7-300 PLC 通过MPI网络通信为例介绍通信函数_xsend与_xreceive的使用。首先打开SCOUT软件插入D435,点击D435使用右键进入硬件配置界面如图4所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图4:SIMOTION MPI接口设置
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 双击X136接口(只有X136接口可以设置为MPI接口),将该接口设置为MPI接口,选择MPI站地址,如图5所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图5: MPI接口参数配置
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 注意MPI站地址与通信方的站地址不能冲突,同样在STEP7中设置S7-300 PLC的站地址,本例中SIMOTION的MPI地址为2,PLC的站地址为4。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
4.编程
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
4.1 SIMOTION侧编程
在D435中的“PROGRAM”中插入编程单元“LAD/FBD UNIT”,如MPI,在“UNIT”中插入程序如“SEND”和“RECEIVE”编写发送和接收程序如图6所示,也可以将通信程序编写在同一个程序中。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图6: SIMOTION 程序的创建
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 本例中在“SEND”程序中编写发送程序,在“RECEIVE”程序中编写接收程序,发送和接收函数可以在函数库中的位置如图7所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图7: 函数块的位置
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
? 调用_xsend函数
在程序SEND中调用_xsend函数发送数据,与PLC编写方式相似,将发送函数_xsend拖曳到LAD网络中,如图8所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图8: _xsend函数块
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 给所有的参数赋值,变量可以任意定义,如“COMMODE”变量,键入后选择变量类型如图9所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图9: 配置参数类型
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
数据类型自动定义,在变量类型中选择变量存储的类型,如全局变量或区域变量,如图9中变量类型只能在一个“UNIT”中使用,如果需要在其它“UNIT”或HMI中使用,将在“INTERFACE”中创建变量。
_xsend函数参数含义如下:
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
COMMUNICATIONMODE:
枚举数据类型,元素中包括“ABORT_CONNECTION ”和“HOLD_CONNECTION”,
“ABORT_CONNECTION ”:通信完成之后释放连接资源。
“HOLD_CONNECTION”:通信完成之后占用连接资源。
枚举类型变量的赋值可以使用MOVE指令,如图10所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图10: 参数赋值
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
ADDRESS:
结构体数据类型,结构体元素参考表3:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表3 _xsend函数ADRESS参数结构体数据
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
| 结构体元素 | 名称 | 数据类型 | 单元 |
| deviceId | 元素 ID | USINT | - |
| remoteSubnetIdLength | 通信方subnet ID占用字节的长度 | USINT | - |
| remoteStaddrLength | 通信方站地址占用字节的长度 | USINT | - |
| nextStaddrLength | 路由器占用字节的长度 | USINT | - |
| remoteSubnetId | 通信方subnet ID | ARRAY [0..5] OF USINT | - |
| remoteStaddr | 通信方站地址 | ARRAY [0..5] OF USINT | - |
| nextStaddr | 路由器地址 | ARRAY [0..5] OF USINT | - |
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
deviceId:使用的接口,1表示D435 X126接口,2表示D435 X136接口,本例中选择2。
remoteSubnetIdLength:预留参数,MPI通信中无意义,缺省为0,设置为0。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> remoteStaddrLength:MPI、PROFIBUS通信设置为1。西门子6ES73136BG040AB0
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> nextStaddrLength:预留参数,MPI通信中无意义,,缺省为0,设置为0。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> remoteSubnetId:预留参数,MPI通信中无意义,缺省为0。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> remoteStaddr:数组类型,在remoteStaddr[0]中赋值通信方的MPI地址,其它元素无意义,本例中S7-300 MPI地址为4,可以使用MOVE(LAD)指令赋值。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> nextStaddr:预留参数,MPI通信中无意义,缺省为0。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
MESSAGEID:
UDINT数据类型,定义发送报文的标识符,本例中定义为6,在PLC接收块参数REQ_ID可以读出。
NEXTCOMMAND:
枚举数据类型,元素中包括“IMMEDIATELY ”和“WHEN_COMMAND_DONE”,
“IMMEDIATELY”:下一个命令同步执行。
“WHEN_COMMAND_DONE”:命令执行或失败后执行下一个命令,异步执行。
例子程序中使用“WHEN_COMMAND_DONE”。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
COMMANDID:
COMMANDID数据类型,可以跟踪命令的状态。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
DATA:
数组数据类型,发送数据缓存区,必须为200个字节。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
DATALENGTH:
UDINT数据类型,发送数据的长度,本例中发送为10个字节。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
OUT:
DINT数据类型,函数调用返回值,包含通信状态。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 在程序receive中调用_xreceive函数接收数据,与PLC编写方式相似,将接收函数_xreceive拖曳到LAD网络中,如图11所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图11: _xreceive函数块
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
调用_xreceive函数
函数_xreceive的输入参数MESSAGEID、COMMANDID和NEXTCOMMAND与_xsend函数输入参数意义相同,发送与接收函数的参数MESSAGEID必须相同,本例中_xreceive输入参数定义的数据包标识符为8,与PLC发送块参数REQ_ID定义的标识符必须相同。
_xreceive函数的输出变量 “OUT”为结构体数据类型,元素参考表4:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表4 _xreceive函数OUT参数结构体数据
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
| 结构体元素 | 名称 | 数据类型 | 单元 |
| functionResult | 函数调用的返回值 | DINT | - |
| dataLength | 接收数据的长度(字节数) | UDINT | - |
| data | 接收数据区 | ARRAY [0..199] OF BYTE | - |
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
functionResult:
函数调用的返回值,可以判断接收状态,数据类型为 DINT。
dataLength:
接收数据的长度(字节数),大长度为200个字节,数据类型为 UDINT。
Data:
数据接收区,大长度为200个字节,在编程中定义的接收区必须大于数据发送区,数据类型为数组。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 通信参数赋值完成之后,将整个程序进行编译,如果需要在线监控通信程序,必须在编译程序之前进行配置,如图12所示,点击程序单元,本例中为“MPI”,右键进入属性界面,点击菜单“Compiler”选择“Permit program status”选项,这样经过编译之后,程序可以在线监控。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图12: 配置程序在线监控
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 通信程序编写和编译完成后,将程序放置到D435的执行系统中调用(程序只有被调用才能执行),如图13所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图13: 调用通信程序
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 本例中将通信程序放置于“BackgroundTask”运行(循环运行)。将整个项目编译后,联机下传通信程序。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
4.2 PLC侧编程
调用发送程序块
PLC侧调用SFC65用于数据发送,发送程序参考图14程序:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图14: PLC中调用发送程序
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
SFC65的参考解释如下,
REQ:
发送请求,为1时发送。
CONT:
相当于SIMOTION发送函数_xsend 参数“COMMUNICATIONMODE”,为0时通信完成之后释放连接资源,为1时通信完成之后占用连接资源。
DEST_ID:
通信方的MPI地址,本例中SIMOTION的MPI地址为2。
REQ_ID:
相当于SIMOTION发送函数_xsend 参数“MESSAGEID”,定义发送报文的标识符,在接收块中除接收到数据外,本例中与函数_xreceive中参数MESSAGEID定义必须相同。
SD :
发送区,以指针的格式,本例中将DB1中DBB0 以后10个字节作为发送区,大为76个字节。
RET_VAL:
发送块返回值。
BUSY :
为1时,端口占用,发送中止。
PLC侧调用发送块,在SIMOTION中需要调用函数_xreceive接收。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
调用接收程序块
PLC侧调用SFC66用于接收数据,接收程序参考图15程序:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图15: PLC中调用接收程序
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
SFC65的参考解释如下,
EN_DT:
为1使能接收功能。
RET_VAL :
接收块返回值。
REQ_ID:
接收数据包的标识符,本例中接收SIMOTION _xsend函数MESSAGEID参数定义的报文的标识符6。在SIMOTION中,接收、发送函数MESSAGEID参数为输
入参数,发送和接收的报文标识符必须提前定义,在PLC中发送块REQ_ID参数为输入参数,接收块REQ_ID参数为输出参数,识别接收数据包的标识符。
NDA :
接收到新的数据包时产生脉冲信号。
RD:
接收区,本例中接收SIMOTION发送的10个字节,并将接收的数据存储于DB2中DBB0以后的10个字节中。
将PLC中的通信程序编译下传到PLC中,通信建立。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
5.状态监控
在SCOUT联机状态中,点击程序单元如“MPI”,然后点击“Symbol browser”标签,可以监控“MPI”程序单元中定义的全局变量,如发送数据区、接收区等。如图16所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图16: 监控SIMOTION侧通信变量
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 在STEP7中打开变量监控表同样可以对数据发送区、接收区进行监控,如图17所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图17: 监控PLC侧通信变量
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
6.示例程序
示例程序参考文档附件程序,名称为Mpitest.rar。(示例程序使用STEP7 V5.4和SCOUT V4.0编写)
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
S7--200提供了三种方式的开环运动控制:
? 脉宽调制(PWM)--内置于S7--200,用于速度、位置或占空比控制。
? 脉冲串输出(PTO)--内置于S7--200,用于速度和位置控制。
? EM253位控模块--用于速度和位置控制的附加模块。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> S7—200的内置脉冲串输出提供了两个数字输出通道(Q0.0和Q0.1),该数字输出可以通过位控向导组态为PWM或PTO的输出。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 当组态一个输出为PTO操作时,生成一个50%占空比脉冲串用于步进电机或伺服电机的速度和位置的开环控制。内置PTO功能仅提供了脉冲串输出。您的应用程序必须通过PLC内置I/O或扩展模块提供方向和限位控制。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
PTO按照给定的脉冲个数和周期输出一串方波(占空比50%),如图1。PTO可以产生单段脉冲串或者多段脉冲串(使用脉冲包络)。可以脉冲数和周期(以微秒或毫秒为增加量):
? 脉冲个数: 1到4,294,967,295
? 周期: 10μs(100K)到65535μs或者2ms到65535ms。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图1
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 200系列的PLC的大脉冲输出频率除 CPU224XP 以外均为20kHz。CPU224XP可达100kHz。如表1所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
表1
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2 MAP库的应用
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.1 MAP库的基本描述
现在,200系列 PLC 本体 PTO 提供了应用库MAP SERV Q0.0 和 MAP SERV Q0.1,分别用于 Q0.0 和 Q0.1 的脉冲串输出。如图2所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图2
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 注: 这两个库可同时应用于同一项目。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 各个块的功能如表2所示:
| 块 | 功能 |
| Q0_x_CTRL | 参数定义和控制 |
| Q0_x_MoveRelative | 执行一次相对位移运动 |
| Q0_x_MoveAbsolute | 执行一次位移运动 |
| Q0_x_MoveVelocity | 按预设的速度运动 |
| Q0_x_Home | 寻找参考点位置 |
| Q0_x_Stop | 停止运动 |
| Q0_x_LoadPos | 重新装载当前位置 |
| Scale_EU_Pulse | 将距离值转化为脉冲数 |
| Scale_Pulse_EU | 将脉冲数转化为距离值 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表2
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
体描述
该功能块可驱动线性轴。
为了很好的应用该库,需要在运动轨迹上添加三个限位开关,如图3:
? 一个参考点接近开关(home),用于定义位置 C_Pos 的零点。
? 两个边界限位开关,一个是正向限位开关(Fwd_Limit),一个是反向限位开关(Rev_Limit)。
? 位置? C_Pos 的计数值格式为 DINT ,所以其计数范围为(-2.147.483.648 to +2.147.483.647). ?
? 如果一个限位开关被运动物件触碰,则该运动物件会减速停止,因此,限位开关的安置位置应当留出足够的裕量?ΔSmin 以避免物件滑出gui道尽头。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图3
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.2 输入输出点定义
应用MAP库时,一些输入输出点的功能被预先定义,如表3所示:
| 名称 | MAP SERV Q0.0 | MAP SERV Q0.1 |
| 脉冲输出 | Q0.0 | Q0.1 |
| 方向输出 | Q0.2 | Q0.3 |
| 参考点输入 | I0.0 | I0.1 |
| 所用的高速计数器 | HC0 | HC3 |
| 高速计数器预置值 | SMD 42 | SMD 142 |
| 手动速度 | SMD 172 | SMD 182 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表3
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.3 MAP库的背景数据块
为了可以使用该库,必须为该库分配 68 BYTE(每个库)的全局变量,如图4所示:
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图4
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 下表是使用该库时所用到的重要的一些变量(以相对地址表示),如表4:
| 符号名 | 相对地址 | 注释 |
| Disable_Auto_Stop | +V0.0 | 默认值=0意味着当运动物件已经到达预设地点时,即使尚未减速到Velocity_SS,依然停止运动; =1时则减速至Velocity_SS时才停止 |
| Dir_Active_Low | +V0.1 | 方向定义,默认值 0 = 方向输出为1时表示正向。 |
| Final_Dir | +V0.2 | 寻找参考点过程中的后方向 |
| Tune_Factor | +VD1 | 调整因子(默认值=0) |
| Ramp_Time | +VD5 | Ramp time = accel_dec_time(加减速时间) |
| Max_Speed_DI | +VD9 | 大输出频率 = Velocity_Max |
| SS_Speed_DI | +VD13 | 小输出频率 = Velocity_SS |
| Homing_State | +VB18 | 寻找参考点过程的状态 |
| Homing_Slow_Spd | +VD19 | 寻找参考点时的低速(默认值 = Velocity_SS) |
| Homing_Fast_Spd | +VD23 | 寻找参考点时的高速(默认值 = Velocity_Max/2) |
| Fwd_Limit | +V27.1 | 正向限位开关 |
| Rev_Limit | +V27.2 | 反向限位开关 |
| Homing_Active | +V27.3 | 寻找参考点激活 |
| C_Dir | +V27.4 | 当前方向 |
| Homing_Limit_Chk | +V27.5 | 限位开关标志 |
| Dec_Stop_Flag | +V27.6 | 开始减速 |
| PTO0_LDPOS_Error | +VB28 | 使用Q0_x_LoadPos时的故障信息(16#00 = 无故障, 16#FF = 故障) |
| Target_Location | +VD29 | 目标位置 |
| Deceleration_factor | +VD33 | 减速因子 =(Velocity_SS – Velocity_Max) / |
| accel_dec_time (格式: REAL) | ||
| SS_Speed_real | +VD37 | 小速度 = Velocity_SS (格式: REAL) |
| Est_Stopping_Dist | +VD41 | 计算出的减速距离 (格式: DINT) |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表4
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.4 功能块介绍
下面逐一介绍该库中所应用到的程序块。这些程序块全部基于PLC-200 的内置PTO输出,完成运动控制的功能。此外,脉冲数将通过的高速计数器 HSC 计量。通过 HSC 中断计算并触发减速的起始点。
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.4.1 Q0_x_CTRL
该块用于传递全局参数,每个扫描周期都需要被调用。功能块如图5,功能描述见表5。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图5
| 参数 | 类型 | 格式 | 单位 | 意义 |
| Velocity_SS | IN | DINT | Pulse/sec. | 启动/停止频率,必须是大于零的数 |
| Velocity_Max | IN | DINT | Pulse/sec. | 大频率 |
| accel_dec_time | IN | REAL | sec. | 大加减速时间 |
| Fwd_Limit | IN | BOOL | 正向限位开关 | |
| Rev_Limit | IN | BOOL | 反向限位开关 | |
| C_Pos | OUT | DINT | Pulse | 当前位置 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表5
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
Velocity_SS 是小脉冲频率,是加速过程的起点和减速过程的终点。
Velocity_Max 是大小脉冲频率,受限于电机大频率和PLC的大输出频率。
在程序中若输入出(Velocity_SS,Velocity_Max)范围的脉冲频率,将会被Velocity_SS 或 Velocity_Max 所取代。
accel_dec_time 是由 Velocity_SS 加速到 Velocity_Max 所用的时间(或由Velocity_Max 减速到 Velocity_SS 所用的时间,两者相等),范围被规定为 0.02 ~ 32.0 秒,但好不要小于0.5秒。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 警告:出 accel_dec_time 范围的值还是可以被写入块中,但是会导致定位过程出错!
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.4.2 Scale_EU_Pulse
该块用于将一个位置量转化为一个脉冲量,因此它可用于将一段位移转化为脉冲数,或将一个速度转化为脉冲频率。功能块如图6,功能描述见表6。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图6
| 参数 | 类型 | 格式 | 单位 | 意义 |
| Input | IN | REAL | mm or mm/s | 欲转换的位移或速度 |
| Pulses | IN | DINT | Pulse /revol. | 电机转一圈所需要的脉冲数 |
| E_Units | IN | REAL | mm /revol. | 电机转一圈所产生的位移 |
| Output | OUT | DINT | Pulse or pulse/s | 转换后的脉冲数或脉冲频率 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表6
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 下面是该功能块的计算公式:
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.4.3 Scale_ Pulse_EU
该块用于将一个脉冲量转化为一个位置量,因此它可用于将一段脉冲数转化为位移,或将一个脉冲频率转化为速度。功能块如图7,功能描述见表7。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图7
| 参数 | 类型 | 格式 | 单位 | 意义 |
| Input | IN | REAL | Pulse or pulse/s | 欲转换的脉冲数或脉冲频率 |
| Pulses | IN | DINT | Pulse /revol. | 电机转一圈所需要的脉冲数 |
| E_Units | IN | REAL | mm /revol. | 电机转一圈所产生的位移 |
| Output | OUT | DINT | mm or mm/s | 转换后的位移或速度 |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表7
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 下面是该功能块的计算公式:
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
2.4.4 Q0_x_Home
功能块如图8,功能描述见表8。
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 
图8
| 参数 | 类型 | 格式 | 单位 | 意义 |
| EXECUTE | IN | BOOL | 寻找参考点的执行位 | |
| Position | IN | DINT | Pulse | 参考点的位移 |
| Start_Dir | IN | BOOL | 寻找参考点的起始方向 | |
| (0=反向,1=正向) | ||||
| Done | OUT | BOOL | 完成位(1=完成) | |
| Error | OUT | BOOL | 故障位(1=故障) |
line;color:#333333;background-color:#ffffff;text-indent:2em;"=""> 表8
line;color:#333333;background-color:#ffffff;text-indent:2em;"="">
该功能块用于寻找参考点,在寻找过程的起始,电机首先以 Start_Dir 的方向,Homing_Fast_Spd 的速度开始寻找;在碰到limit switch (“Fwd_Limit” or “Rev_Limit”)后,减速至停止,然后开始相反方向的寻找;当碰到参考点开关(input I0.0; with
Q0_1_Home: I0.1)的上升沿时,开始减速到 “Homing_Slow_Spd”。如果此时的方向与 “Final_Dir” 相同,则在碰到参考点开关下降沿时停止运动,并且将计数器HC0的计数值设为 “Position” 中所定义的值。