日照西门子模块代理商
![](http://item.yiqi.com/pic/ConPic/2/636813508559630634707.jpg)
西门子S7-300PLC如何控制伺服电机?
简易的就是CPU内置的运动控制软件功能块,编码器输入模块,模拟输出模块 ,伺服驱动器,伺服电机组成。 因为CPU控制回路周期长,控制性能不高。
专业的是采用FM354 定位模块, CPU315T, CPU317T 加ADI4 控制带模拟输入速度给定的伺服驱动器和伺服电机。如果采用西门子带总线通讯的伺服驱动则只要CPU315T和CPU317T通过总线通讯就可以组成伺服系统了。
![](http://item.yiqi.com/pic/ConPic/2/S7-300PLC.png)
S7-300是德国西门子公司生产的可编程序控制器(PLC)系列产品之一。其模块化结构、易于实现分布式的配置以及性价比高、电磁兼容性强、抗震动冲击性能好,使其在广泛的工业控制领域中,成为一种既经济又切合实际的解决方案。
工作原理
PLC采用循环执行用户程序的方式。OB1 是用于循环处理的组织块(主程序),它可以调用别的逻辑块,或被中断程序(组织块)中断。
在起动完成后,不断地循环调用OB1,在OB1 中可以调用其它逻辑块(FB, SFB, FC 或SFC)。
循环程序处理过程可以被某些事件中断。
在循环程序处理过程中,CPU 并不直接访问I/O模块中的输入地址区和输出地址区,而是访问CPU 内部的输入/输出过程映像区(在CPU的系统存储区)
![](http://item.yiqi.com/pic/ConPic/2/636813508859170634265.jpg)
PLC的编程器的原理及功能简介
编程器是PLC的重要外围设备。利用编程器将用户程序送入PLC的存储器,还可以用编程器检查程序,修改程序,监视PLC的工作状态。
常见的给PLC编程的装置有手持式编程器和计算机编程方式。在可编程序控制器发展的初期,使用专用编程器来编程。小型可编程序控制器使用价格较便宜、携带方便的手持式编程器,大中型可编程序控制器则使用以小CRT作为显示器的便携式编程器。专用编程器只能对某一厂家的某些产品编程,使用范围有限。手持式编程器不能直接输入和编辑梯形图,只能输入和编辑指令,但它有体积小,便于携带,可用于现场调试,价格便宜的优点。
计算机的普及,使得越来越多的用户使用基于个人计算机的编程软件。目前有的可编程序控制器厂商或经销商向用户提供编程软件,在个人计算机上添加适当的硬件接口和软件包,即可用个人计算机对PLC编程。利用微机作为编程器,可以直接编制并显示梯形图,程序可以存盘、打印、调试,对于查找故障非常有利。
![](http://item.yiqi.com/pic/ConPic/2/636813509381790634239.jpg)
西门子PLC如何进行写入操作?
对于立即写(Immediate Write)功能,必须如下面举例所示,生成符号程序段。
对于有时间限制的应用,可以以比每OB1 扫描循环一次的正常情况快的速度,将一个数字量输出的当前状态发送到输出模板。立即写功能可以在扫描立即写逻辑程序级的同时,将一个数字量输出写入输出模板。否则,当 Q存储区使用 P存储状态更新时,必须等到下一OB1扫描循环结束。
为了将一个输出立即写入输出模板,应使用外围输出(PQ)存储区,而不使用输出(Q)
存储区。外围输出存储区可以作为一个字节、一个字或一个双字读取。因此,通过一个线圈元素,不能更新一个单独的数字量输出。为了将一个数字量输出的状态立即写入输出模板, 包含相关位的Q存储器的字节、 字或双字可以有条件地复制到相应的PQ存储器中 (直接输出TPC1062K的模板地址)。
小心
• 由于 Q 存储器的整个字节被写入输出模板,当进行立即输出时,该字节中的所有输出位都将被更新。
• 如果一个输出位在不应发送到输出模板中的整个程序中出现中间状态(1/0),立即写功能会造成危险情况(输出瞬时脉冲)。
• 作为一般设计规则,在一个MT6100I的程序中,外部输出模板只能认为是一个线圈。如果遵守该设计规则,可以避免使用立即输出时的大多数潜在问题。
举例
等效于立即写入外围数字量输出模板 5通道1的梯形逻辑程序段。
寻址输出Q字节 (QB5) 的位状态可以修改, 也可以保持不变。 Q5.1被赋给程序段1 中I0.1的信号状态。QB5被复制到相应的直接外围输出存储区(PQB5)。
字PIW1包含I1.1的立即状态。 PIW1与 W#16#0002进行与 (AND) 逻辑运算。 如果 PB1中的 I1.1(第 2位)为“1”,则结果非“0”。如果 WAND_W 指令的结果不等于“0”,则接点“A<>0”通过电压。
![](http://item.yiqi.com/pic/ConPic/2/636813509702234634115.jpg)
西门子plc如何做流量累积?
现在上位机系统中很多要求具备流量计的流量累计功能,由此引出的几个问题,期望与大家分享。
问题1:自行编写流量累计程序
自行编写流量累计程序的原理,其实就是积分的Z原始算法概念,把单位小间隔时间内的瞬时流量乘以单位间隔时间,得到单位小间隔时间内的流量,再把这些小流量累加起来,就的到了累计流量。
在流量累计编程中经常会遇到实数加法问题,实数加法运算的注意事项也应当引起编程人员的重视,请看
下例程序(假设其在OB35中被调用,目的为每隔一定时间间隔就累计一次流量)
L MD0 //累计流量存储值
L MD4 //流量瞬时值
+R
T MD 0
以上的程序是否存在问题?
很多人会认为没有问题,但实际情况是此程序在运行一段时间后就将出现错误。此程序在运行之初是正常的,因为累计流量初始值及流量瞬时值都为一个很小的浮点数,两数相加后,结果正确。但是当一段时间后,累计流量的数值逐渐增大,当它与瞬时流量的数值相差很远的时候,两者执行加法操作后,瞬时流量的数值将被忽略掉(如9999990.0与0.2做加法操作)。其实具备计算机常识的人都应当清楚这一点,这是由于浮点数的存储机制造成的,是所有计算机方面编程都需要考虑的问题。这个问题可以通过使用二次累加或多次累加的方法来解决。所以在编程时应避免数量级相差太多的浮点数之间进行运算。很多人反映“加法指令不好用了”,很有可能就是数量级相差很多的实数进行了加法运算。
问题2:累计流量误差问题
对于积分算法,取小的矩形对流量进行累计,肯定是矩形划分越细,误差越小,不存在误差是不可能的。
问题3:流量计与PLC构成的系统的误差
流量计有多种多样,下面举些例子:
1、流量计本身没有累计流量功能,但可以把瞬时流量以模拟量的方式(例如4-20mA)输出。
此时累计流量的误差可以估算为:
流量计本身误差 * 流量计D/A误差 * 模拟量模块A/D误差 * PLC流量累计算法误差假设上面所有误差都是1%,则的误差约为:4.06%
1.01*1.01*1.01*1.01=1.0406
对于某些流量计,本身的瞬时流量误差可能就是3%,所以这样的系统累计流量的误差可能还要大些。
2、流量计本身没有累计流量功能,但可以把瞬时流量以数字量的方式输出。
有些流量计提供数字量接口,可以连接PLC的数字量输入模板,流量计每流过一定流量后(例如0.1吨),此输入点就导通一次,PLC就把累计流量累加0.1吨即可。
此类系统避免了A/D,D/A转化的误差,以及PLC累计算法误差。但是会出现一定时间内累计流量不变化的情况,实时性不好(每0.1吨累积的时间)。
3、流量计本身有累计流量功能,同时可以把瞬时流量以模拟量的方式(例如4-20mA)输出,但无法将累计流量数值送出。
流量计本身累积流量的数值,很有可能与PLC的累计流量数值相差很大,原因可能是多方面造成的,除去系统累计流量误差的因素,如果PLC系统检修时,流量计还计量,则PLC无法累积这部分流量。
4、流量计本身有累计流量功能,同时可以通过通信的方式,把瞬时流量及累计流量数值送给PLC。这种情况Z理想,但系统的成本也。
![](http://item.yiqi.com/pic/ConPic/2/636813510056530634533.jpg)
西门子S7-200PLC特殊指令
特殊指令如表4-27所示。PLC中一些实现特殊功能的硬件需要通过特殊指令来使用,可实现特定的复杂的控制目的,同时程序的编制非常简单。
表4-27 特殊指令
名称 | 指令格式 (语句表) | 功能 | 操作数 |
中断指令 | ATCH INT,EVNT | 把一个中断事件(EVNT)和一个中断程序联系起来,并允许该中断事件 | INT:常数 EVNT:常数(CPU221/222:0~12,19~23,27~33;CPU224:0~23,27~33;CPU226:0~33) |
DTCH EVNT | 截断一个中断事件和所有中断程序的联系,并禁止该中断事件 |
ENI | 全局地允许所有被连接的中断事件 | 无 |
DISI | 全局地关闭所有被连接的中断事件 |
CRETI | 根据逻辑操作的条件从中断程序中返回 |
RETI | 位于中断程序结束,是必选部分,程序编译时软件自动在程序结尾加入该指令 |
通信指令 | NETR TBL,PORT | 初始化通讯操作,通过指令端口(PORT)从远程设备上接收数据并形成表(TBL)。可以从远程站点读Z多16个字节的信息 | TBL:VB,MB,*VD,*AC,*LD PORT:常数 |
NETW TBL,PORT | 初始化通讯操作,通过指定端口(PORT)向远程设备写表(TBL)中的数据,可以向远程站点写Z多16个字节的信息 |
XMT TBL,PORT | 用于自由端口模式。指定激活发送数据缓冲区(TBL)中的数据,数据缓冲区的个数据指明了要发送的字节数,PORT指定用于发送的端口 | TBL:VB,IB,QB,MB,SB,SMB,*VD,*AC,*LD PORT:常数(CPU221/222/224为0;CPU226为0或1) |
RCV TBL,PORT | 激活初始化或结束接收信息的服务。通过指定端口(PORT)接收的信息存储于数据缓冲区(TBL),数据缓冲区的个数据指明了接收的字节数 |
GPA ADDR,PORT | 读取PORT指定的CPU口的站地址,将数值放入ADDR指定的地址中 | ADDR:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD 在SPA指令中ADDR还可以是常数 PORT:常数 |
SPA ADDR,PORT | 将CPU口的站地址(PORT)设置为ADDR指定的数值 |
时钟指令 | TODR T | 读当前时间和日期并把它装入一个8字节的缓冲区(起始地址为T) | T:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LD |
TODW T | 将包含当前时间和日期的一个8字节的缓冲区(起始地址是T)装入时钟 |
高速计数器指令 | HDEF HSC,MODE | 为指定的高速计数器分配一种工作模式。每个高速计数器使用之前必须使用HDEF指令,且只能使用一次 | HSC:常数(0~5) MODE:常数(0~11) |
HSC N | 根据高速计数器特殊存储器位的状态,按照HDEF指令指定的工作模式,设置和控制高速计数器。N指定了高速计数器号 | N:常数(0~5) |
高速脉冲输出指令 | PLS Q | 检测用户程序设置的特殊存储器位,激活由控制位定义的脉冲操作,从Q0.0或Q0.1输出高速脉冲 可用于激活高速脉冲串输出(PTO)或宽度可调脉冲输出(PWM) | Q:常数(0或1) |
PID回路指令 | PID TBL,LOOP | 运用回路表中的输入和组态信息,进行PID运算。要执行该指令,逻辑堆栈顶(TOS)必须为ON状态。TBL指定回路表的起始地址,LOOP指定控制回路号 回路表包含9个用来控制和监视PID运算的参数:过程变量当前值(PVn),过程变量前值(PVn-1),给定值(SPn),输出值(Mn),增益(Kc),采样时间(Ts),积分时间(Ti),微分时间(Td)和积分项前值(MX) 为使PID计算是以所要求的采样时间进行,应在定时中断执行中断服务程序或在由定时器控制的主程序中完成,其中定时时间必须填入回路表中,以作为PID指令的一个输入参数 | TBL:VB LOOP:常数(0到7) |
![](http://item.yiqi.com/pic/ConPic/2/636813510695848634105.jpg)
日照西门子模块代理商