开始学习200CN时摘抄的,希望对初学者有用,高手飘过。都是一些基本知识,但我觉得集中起来了解一下会收到事半功倍的效果。
(一) 问题
S7-200支持的数据格式
1、BOOL(位) 1(位) 布尔数(二进制位) 真(1);假(0)
2、BYTE(字节) 8(字节) 无符号整数 0 ~ 255;0 ~ FF(Hex)
3、INT(整数) 16(字) 有符号整数 - 32768 ~ 32767;
8000 ~ 7FFF(Hex)
4、WORD(字) 无符号整数 0 ~ 65535;0 ~ FFFF(Hex)
5、DINT(双整数) 32(双字) 有符号整数 - 2147483648 ~ 2147483647 8000 0000 ~ 7FFF FFFF(Hex)
6、DWORD(双字) 无符号整数 0 ~ 4294967295;0 ~ FFFF FFFF(Hex)
7、REAL(实数) IEEE 32位单精度浮点数 -3.402823E+38 ~ -1.175495E-38(负数);+1.175495E-38 ~+3.402823E+38(正数);
8、ASCII 8/个(字节) 字符列表 ASCII字符、汉字内码(每个汉字2字节)
9、STRING8/个(字节)(字符串) 字符串 1 ~ 254个ASCII字符、汉字内码(每个汉字2字节)
(二) 问题
1. 订货号“6ES7 214-2AS23-0XB
2. 订货号“6ES7 214-2AD23-0XB
3. 由此可知,区别在于内部输出的元器件都是TTL晶体管电子开关,但外部驱动电源的公共端正负接线方向不同。因此需要引起重视。
(三) 问题
子程序是怎么理解的?如果有下例程序:
LD SM0.0
CALL SBR0
其理解是不是PLC每个扫描周期都要执行一次子程序?子程序的执行是不是每个周期只执行一次,执行完一次子程序后回到主程序,从主程序往下执行?
我想把手动程序放到SBR0
自动放到SBR1
M0.0是切换位
LD M0.0
CALL SBR0
LDI M0.0
CALL SBR1
然后在把手动和自动给程序写在各子程序里这样做可以吗?
问题补充:在子程序结束时要加结束指令码
LD SM0.0
CALL SBR0//它的意思是说,PLC每个周期都要调用一次;
子程序被调用之后,一旦执行完了就返回主程序;
你的想法是可以的;
这样做有一个弊端:就是子程序不能使用跳转语句跳入、跳出,还有当执行完子程序时,它的累加器也不会保存数据
或者,你也可以考虑一下用跳转指令来实现手/自动~~
(四) 问题
1、基本概念
我们生活在一个物质的世界中。世间所有的物质都包含了化学和物理特性,我们是通过对物质的表观性质来了解和表述物质的自有特性和运动特性。这些表观性质就是我们常说的质量、温度、速度、压力、电压、电流等用数学语言表述的物理量,在自控领域称为工程量。这种表述的优点是直观、容易理解。在电动传感技术出现之前,传统的检测仪器可以直接显示被测量的物理量,其中也包括机械式的电动仪表。
2、标准信号
在电动传感器时代,中央控制成为可能,这就需要检测信号的远距离传送。但是纷繁复杂的物理量信号直接传送会大大降低仪表的适用性。而且大多传感器属于弱信号型,远距离传送很容易出现衰减、干扰的问题。因此才出现了二次变送器和标准的电传送信号。二次变送器的作用就是将传感器的信号放大成为符合工业传输标准的电信号,如0-5V、0-10V或4-20mA(其中用得最多的是4-20mA)。而变送器通过对放大器电路的零点迁移以及增益调整,可以将标准信号准确的对应于物理量的被检测范围,如0-
3、数字化仪表
到了数字化时代,指针式显示表变成了更直观、更精确的数字显示方式。在数字化仪表中,这种显示方式实际上是用纯数学的方式对标准信号进行逆变换,成为大家习惯的物理量表达方式。这种变换就是依靠软件做数学运算。这些运算可能是线性方程,也可能是非线性方程,现在的电脑对这些运算是易如反掌。
4、信号变换中的数学问题
信号的变换需要经过以下过程:物理量-传感器信号-标准电信号-A/D转换-数值显示。
声明:为简单起见,我们在此讨论的是线性的信号变换。同时略过传感器的信号变换过程。
假定物理量为A,范围即为A0-Am,实时物理量为X;标准电信号是B0-Bm,实时电信号为Y;A/D转换数值为C0-Cm,实时数值为Z。
如此,B0对应于A0,Bm对应于Am,Y对应于X,及Y=f(X)。由于是线性关系,得出方程式为Y=(Bm-B0)*(X-A0)/(Am-A0)+B0。又由于是线性关系,经过A/D转换后的数学方程Z=f(X)可以表示为Z=(Cm-C0)*(X-A0)/(Am-A0)+C0。那么就很容易得出逆变换的数学方程为X=(Am-A0)*(Z-C0)/(Cm-C0)+A0。方程中计算出来的X就可以在显示器上直接表达为被检测的物理量。
5、PLC中逆变换的计算方法
以S7-200和4-20mA为例,经A/D转换后,我们得到的数值是6400-32000,及C0=6400,Cm=32000。于是,X=(Am-A0)*(Z-6400)/(32000-6400)+A0。
例如某温度传感器和变送器检测的是-10-
用同样的原理,我们可以在HMI上输入工程量,然后由软件转换成控制系统使用的标准化数值。
在S7-200中,(Z-6400)/25600的计算结果是非常重要的数值。这是一个0-1.0(100%)的实数,可以直接送到PID指令(不是指令向导)的检测值输入端。PID指令输出的也是0-1.0的实数,通过前面的计算式的反计算,可以转换成6400-32000,送到D/A端口变成4-20mA输出。
1.自己写转换程序。
2.需要注意你的模拟量是单极性的还是双极性的。
假设模拟量的标准电信号是A0—Am(如:4—20mA),A/D转换后数值为D0—Dm(如:6400—32000),设模拟量的标准电信号是A,A/D转换后的相应数值为D,由于是线性关系,函数关系A=f(D)可以表示为数学方程:
A=(D-D0)×(Am-A0)/(Dm-D0)+A0。
根据该方程式,可以方便地根据D值计算出A值。将该方程式逆变换,得出函数关系D=f(A)可以表示为数学方程:
D=(A-A0)×(Dm-D0)/(Am-A0)+D0。
具体举一个实例,以S7-200和4—20mA为例,经A/D转换后,我们得到的数值是6400—32000,即A0=4,Am=20,D0=6400,Dm=32000,代入公式,得出:
A=(D-6400)×(20-4)/(32000-6400)+4
假设该模拟量与AIW0对应,则当AIW0的值为12800时,相应的模拟电信号是6400×16/25600+4=8mA。
又如,某温度传感器,-10—
T=70×(AIW0-6400)/25600-10
可以用T 直接显示温度值。
模拟量值和A/D转换值的转换理解起来比较困难,该段多读几遍,结合所举例子,就会理解。为了让您方便地理解,我们再举一个例子:
某压力变送器,当压力达到满量程5MPa时,压力变送器的输出电流是20mA,AIW0的数值是32000。可见,每毫安对应的A/D值为32000/20,测得当压力为0.1MPa时,压力变送器的电流应为4mA,A/D值为(32000/20)×4=6400。由此得出,AIW0的数值转换为实际压力值(单位为KPa)的计算公式为:
VW0的值=(AIW0的值-6400)(5000-100)/(32000-6400)+100(单位:KPa)
编程实例
您可以组建一个小的实例系统演示模拟量编程。本实例的的CPU是CPU222,仅带一个模拟量扩展模块EM235,该模块的第一个通道连接一块带4—20mA变送输出的温度显示仪表,该仪表的量程设置为0—100度,即0度时输出4mA,100度时输出20mA。温度显示仪表的铂电阻输入端接入一个220欧姆可调电位器。
简单编程如下:
LD SM0.0
MOVW AIW0, VW20
-I 6400, VW20
MOVW VW20, VW30
/I 245, VW30
(五) 问题
您可以使用各种编程技巧,以确保在主程序和中断例行程序之间正确地共享数据。这些技巧限制存取共享内存位置的方法,或者使用共享内存位置预防出现指令序列中断。
?对于共享单一变量的STL程序:如果共享数据是单字节、字或双字变量,且程序在STL中写入,则可用在非共享内存位置或累加器中存储共享数据操作数的直接数值 的方法,确保正确的共享存取。
?对于共享单一变量的LAD程序:如果共享数据是单字节、字或双字变量,且程序在LAD中写入,则可用建立仅使用"移动"指令(MOVB、MOVW、MOVD、MOVR)存取共享内存位置常规的方法,确保正确的共享存取。尽管很多LAD
指令由STL指令的可中断序列组成,这些"移动"指令却是由单个STL指令组成,此类指令的执行不受中断事件的影响。
?对于共享多个变量的STL或LAD程序:如果共享数据由各种相关的字节、字或双字组成,则可使用中断禁止/启用指令(DISI和ENI)控制中断例行程序的执行。在主程序中共享内存位置操作即将开始的点,禁止中断。一旦所有影响共享位置的措施均完成后,重新启用中断。在中断被禁止的时间内,不得执行中断例行程序,因此无法存取共享内存位置;但是,此种方法会导致对中断事件的延迟应答。
(六) 问题
(七) 问题
升级(Upgrade)是软件主要版本号的变更,意味着新版本的特性与功能比旧版本有较大的升级(例如从V3.1升级到V4.0)。更新(Update)是同一个主版本号下的升级,改变较小(例如从V3.0升级到V3.1)。
(八) 问题
输入数据后,保持光标在数据行的末尾,如果按“CTRL+Enter”键,会自动计算出下一个数据的地址。这在输入字符串时特别有用。
(九) 问题
新产品已在2004年8月发布。新产品的价格不变。按老产品订货号订货的用户,可能直接收到新产品(仅限CPU224和CPU226)。新产品完全向下兼容老产品的功能。新CPU的订货号中间有23的数字,如6ES7 214-1BD23-0XB0。另外,西门子还将推出新的S7-200专用的HMI(人机界面),以及一个新的OPC Server产品。
(十) 问题
S7-200 CPU上的两个通信口基本一样,没有什么特殊的区别。它们可以各自在不同的模式、通信速率下工作;它们的口地址甚至也可相同。分别连接到CPU上两个通信口上的设备,不属于同一个网络。S7-200 CPU不能充当网桥的作用。
(十一) 问题
为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒,可每秒读取一次(使用SM0.5上升沿触发读取指令)。使用程序读取的实时时钟数据为BCD格式,可在状态图中使用十六进制格式查看。
(十二) 问题
CPU靠内置超级电容(+外插电池卡)在失去供电后为实时时钟提供电源缓冲;缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动。
要设置日期、时间值,使之开始走动,可以:
l 用编程软件(Micro/WIN)的菜单命令PLC > Time of Day Clock...,通过与CPU的在线连接设置,完成后时钟开始走动
l 编用户程序使用Set_RTC(设置时钟)指令设置
(十三) 问题
写时钟指令需要严格按照8个字节的时钟缓冲区格式,设置相应的数据单元,任何不合格的数据都可能造成不能写入的现象。注意数据的格式必须是BCD格式,可以说是将10进制数换成16进制表示,如16#59(59H)就是59(秒/分等)。
执行写时钟指令要保证缓冲区所有字节都包含合法数据;仅修改某些数据时,其他字节不能包含非法数值,否则会发生错误。
写时钟指令必须使用一次性的脉冲(沿)触发条件,不能持续激活写时钟指令。
Clock_Integer 指令库读出或写入的 PLC 时钟是以十进制整数格式存储;而读、写实时时钟指令读出或写入的 PLC 时钟为 BCD 码格式。
(十四) 问题
调用STEP 7 - Mciro/WIN32 V3.2 Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误(错误18)。
可以使用Suggest Address(推荐地址)设置数据区,但要注意编程软件设置的数据区地址,只考虑到了其他一般寻址,而未考虑到诸如Modbus数据保持寄存器区等的设置。应当确保不与其他任何已使用的数据区重叠、冲突。不应重复按Suggest Address按钮,否则也会造成混乱。
在STEP 7-Micro/WIN32 V3.1中,有分配库指令数据区时有不同的操作方法,需要在Symbol Table(符号表)中设置一个首地址。我们强烈建议使用当时最新的编程版本。
(十五) 问题
1. 设置时钟指令使用沿触发
2. 读时钟指令使用SM0.5调用
(十六) 问题
添加自定义指令库,需要关闭编辑库指令的项目,新建立一个项目。如果要添加其他来源的库指令自然不需要如此。
指令库的使用方法与子程序基本一样。
(十七) 问题
如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA与4 - 20mA信号之间的换算,只需进行简单的设置。
(十八) 问题
如果负载能力足够,一个电流信号可以串接多个信号输入端。例如一个4 - 20mA的模拟量转速给定信号可以输出给两台变频器的4 - 20mA模拟量输入端口。
(十九) 问题
除CPU本体上的通信口可以支持PPI/MPI和自由口通信之外,S7-200系列使用扩展模块支持更多的通信模式。
这些通信模块有:
EM277:PROFIBUS-DP/MPI通信模块。带DB-9插座,可连接到PROFIBUS-DP和MPI网络上。EM277也可以用于连接西门子的HMI产品
EM241:模拟音频调制解调器(Modem)模块,带RJ11电话插口。支持自动电话拨号等功能
CP243-1:以太网模块,带RJ45接口,可连接到支持TCP/IP标准的以太网中,与西门子的其他CP243模块、CP343/CP443模块,或西门子软件(OPC Server)通信
CP243-1 IT:带因特网功能的以太网模块,除CP243-1的功能外,还支持FTP、HTTP、E-mail等IT功能
CP243-2:AS-Interface(执行器-传感器接口)主站模块。AS-Interface从站可以连接到端子上。一个完整的系统还需要AS-Interface电源等设备
(二十) 问题
不同型号的CPU所带的扩展模块数目不同。
表1. 扩展模块连接个数
CPU型号 | 模块连接个数 |
CPU221 | - |
CPU222 | 2 |
CPU224/224 XP | 7 |
CPU226 | 7 |
表2. 智能扩展模块连接个数
CPU型号 | 特殊模块最大连接个数 | |||||
EM241 | EM253 | EM277 | CP243-1 | CP243-2 | SIWAREX MS | |
CPU221 | - | - | - | - | - | - |
CPU222 | 2 | 1 | 2 | 1 | 1 | 2 |
CPU224/224 XP | 7 | 3 | 4 | 1 | 2 | 4 |
CPU226 | 7 | 5 | 6 | 1 | 2 | 7 |
常问问题
可以。西门子提供一条长度为
所有的智能模块都占用CPU连接的模块数,与普通模块一起计算个数。
顾名思义,扩展模块指在CPU本体上加挂的模块,而不包括CPU。
所有的S7-200 CPU从22版之后,任何模块都没有特殊的位置要求。
楼主最近还看过
都说过了是学习过程中摘录的。实在要问具体出处,现在只记得有:1.西门子200那个深入浅出 2. 200那个《Micro ‘n Power> 3.廖老师编写的那个《PLC编程及应用》4.当然还有200的编程手册以及软件帮助 5.看过的各种讲PLC编程的书籍。这些个知识点都是当时入门200时学习摘录的。有一年的时间我是有疑问——请教——学习——马上记录为“问题(*)”。结果积攒了有100多条个人觉得很有必要知道的典型问题点。当然也有极个别是个人使用心得。今天贴出来无非是想着能为入门的同行提供一个方便。没想到……
向以上资料的作者们致敬!是他们的辛勤汗水滋润了我们生根发芽。