深圳西门子(中国)授权总代理商
1.西门子PLC编程软件
西门子公司针对SIMATIC系列PLC提供了很多种的编程软件,主要有STEPMICRO/DOS和STEPMICRO/WIN;STEPmini;标准软件包STEP7
S7系列的PLC的编程语言非常丰富,有LAD、STL、SCL、GRAPH、HIGRAPH、CFC等。用户可以选择一种语言编程,如果需要,也可以混合使用几种语言编程。
2.程序结构
程序结构主要适用与S7-3000和S7-400,他有线性编程、分步式编程和结构化编程等3种编程方法。
FPI系列可编程控制器是日本松下电工公司的小型PLC产品。
FPI编程软件及指令系统
1.编程方式
NPST-GR提供了3种编程方式:梯形图方式;语句表方式和语句表达方式。
2.注释功能
NPST-GR可以为I/O继电器和输出点加入注释,使用户对继电器所对应的设备及继电器的用途一目了然。
3.程序检查
NPST-GR能查找程序中语法的错误和进行程序校验
4.监控
NPST-GR能监控用户编制的程序,并可以进行运行测试。用户可以检查继电器、寄存器和PLC工作状态,方便的进行调试与修改。
5.系统寄存器设置
NPST-GR可设置N0.0-N0.418系统寄存器的内容,根据屏幕的提示信息进行选择或输入,简单方便。
6.I/O和远程I/O地址分配
用NPST-GR可以为主机扩展板上每个槽分配I/O和远程I/O地址
7.数据管理
数据管理可以将程序或数据存盘,用于数据备份,或在传入PLC之前暂存数据
两者在编程的应用上还有就是西门子的是单母线,而日本松下的是双母线;
还有就是西门子和日本松下的输入和输出也不同的,日本松下的输入就只有X,输出就只有Y。
其实语言是相通的,就是方法不同,两个可以相互转换。
西门子S7-1200PLC的IEC格式的定时器属于功能块。在插入定时器指令时,要求创建一个16字节的IEC_Timer数据类型的DB结构(即背景数据块),来保存有关的数据。在功能块中,可以事先创建一个IEC_Timer数据类型的静态变量(多重背景),然后将它给定时器指令。
CPU没有给任何特定的定时器指令分配专门的资源。每个定时器使用DB结构和一个连续运行的内部CPU定时器(我的理解是一个硬件定时器)来执行定时。
在定时器指令的输入IN的上升沿启动定时器时,连续运行的内部CPU定时器的值将被复制到为该定时器指令分配的DB结构的元素START(起始值)中。
该起始值在定时器继续运行期间将保持不变,以后将在每次更新定时器时使用。以下条件时将会执行定时器更新:
1)执行定时器指令(TP、TON、TOF或TONR);
2)定时器结构的元素ELAPSED(经过的时间)或位输出Q作为其它指令的参数,该指令被执行。
更新定时器时,将从内部CPU定时器的当前值中减去上述起始值,得到经过的时间ELAPSED。再将ELAPSED与预设值PT进行比较,以确定定时器的位输出Q的状态。然后更新该定时器的DB结构的元素ELAPSED和Q。达到预设值PT后,定时器不会继续累加经过的时间ELAPSED。
STEP7Basic的V11版与V10.5版相比,增加了类似于S7-300/400的定时器线圈指令。
从上述的定时器内部的定时机制可知,在使用定时器时,其定时精度与CPU的扫描周期有很大的关系。在CPU两次更新定时器之间,定时器的输入、输出参数保持不变。
为了验证上述结论,在FB1中调用定时器指令TP,在OB1中用I0.1作为调用条件,调用FB1。用监视表格监视定时器的输出Q和经过的时间ET,用输入IN的上升沿启动定时器后,如果I0.1为0状态,没有调用FB1和执行定时器指令,定时器的输出Q和经过的时间ET保持不变。只有在调用FB1,执行定时器指令时,ET的值才会变化。
对于CPU31*C紧凑型CPU,由于CPU模块本身集成有I/O点,对于这些I/O点,同样需要设定其属性参数。
在硬件安装清单上,右键单击CPU模块集成I/O所在的行,并选中“对象属性(ObjectProperties...)”选项,可以打开集成I/O的参数设定页面。
通过设定页面不同的标签,可以打开不同的参数设定对象。
在基本参数(General)设定页面,可以在“简介(Short)”栏显示集成I/O的特征参数。在“地址(Address)”设定页面,可以显示与设定集成I/O的起始地址,地址也可以通过选定“系统选择(SV)”诜项,由PLC讲行白动分配
西门子S7-200的自由口通信需要通过编程设置串口的工作模式,安排发送和接受指令的触发顺序,还要设定接收的起始和结束条件。对于刚刚开始使用s7-200的电气工程师来说,的确有很多细微处易犯错误。一般碰到客户抱怨通信不上的问题,就要逐一帮客户确认编程配置是否正确。虽然麻烦,不过逐条查下去,总能查到错误所在并解决问题。但是有一次客户遇到的问题颇出人意料,还真耗费了一些时间。
客户反应在编写了自由口通信程序之后,PLC可以发送数据给通信伙伴,但是却收不到任何伙伴方发出的数据。能发送数据给对方,说明通信端口设置没有问题。极有可能是端口被其他通信指令占用导致无法进入接收状态。比如说用常开点调用XMT,或者没有对接收的故障状态进行判断并终止接收,从而导致后续的XMT和RCV都无法被正确执行。客户表示他的程序并不存在这种情况。但是为了测试问题所在,客户下载了一个仅包含条件触发RCV的程序下去,还是接收不到数据。监控程序RCV指令已被正常执行。
那么是不是接收的起始条件设置不当?客户使用的是起始字符,这并无不妥。并且改成空闲线检测之后,问题依然存在。难道是对方发送的信号有问题用串口调试软件来测试,是可以接收到的。眼见这几个常见错误都没能cover住这个问题,我只好从头一步步地跟客户确认。但是还是没能发现任何破绽。郁闷之下,只好让客户把程序发过来看看。
次检查程序的时候还真没注意到问题出在哪里。等到看出来了才觉得啼笑皆非:
不知道大家看出来没有?客户在设定完空闲线时间SMW90和消息定时器溢出值SMW92后,惯性地将接受地大字符数SMB94也写成了传送字SMW94。而西门子PLC的高低字节是逆序的,也就是说SMB94为高有效字节,SMB95为低有效字节。见手册中的如下说明:
结果就是大字符数100被传给了SMB95,SMB95是神马呢?神马也不是,总之与接收条件无关。而真正大字符数存储字节SMB94被赋值为0。大字符数都为0了,那当然是接收不到任何数据了。
S7-200 PLC 功能强大,性能可靠,但在做数学运算时不能象语言那样做变量类型自动转换,经常要手工做 BTI、ITD 之类的转换,计算完成后又要 DTI 等耗时的操作,而且使代码行数增加,程序可读性不好,也降低了程序运行的效
一、时间继电器: TON 使能=1计数,计数到设定值时(一直计数到32767),定时器位=1。使能=0复位(定时器位=0)。 TOF 使能=1,定时器位=1,计数器复位(清零)。使能由1到0负跳变,计数器开始计数,到设定值时(停止计数),定时器位=0。如下图: 图1:使能=1时,TOF(T38)的触点动作图 图2:使能断开后,计数到设定值后,TOF(T38)的触点动作图(其中T38常开触点是在使能由1到0负跳变后计数器计时到设定值后变为0的) TONR 使能=1,计数器开始计数,计数到设定值时,计数器位=1。使能断开,计数器停止计数,计数器位仍为1,使能位再为1时,计数器在原来的计数基础上计数。 以上三种计数器可以通过复位指令复位。 正交计数器 A相超前B相90度,增计数 B相超前A相90度,减计数 当要改变计数方向时(增计数或减计数),只要A相和B相的接线交换一下就可以了。 二、译码指令和编码指令: 译码指令和编码指令执行结果如图所示: DECO是将VW2000的第十位置零(为十进制的1024),ENCO输入IN低位为1的是第3位,把3写入VB10(二进制11)。 三、填表指令(ATT) S7-200填表指令(ATT)的使能端(EN)必须使用一个上升沿或下降沿指令(即在下图的I0.1后加一个上升沿或下降沿),若单纯使用一个常开触点,就会出现以下错误:
|