蛇会大学未毕业 蛇会大学未毕业
关注数: 126 粉丝数: 1,201 发帖数: 26,288 关注贴吧数: 58
s7-200的数据格式 S7-200 CPU收集操作指令、现场状况等信息,把这些信息按照用户程序指定的规律进行运算、处理,然后输出控制、显示等信号。 所有这些信息在S7-200 PLC中,都表示为不同格式的数据,作为数据来处理;按照其自身定义,格式不同的数据表示不同含义的信息。 在S7-200中,各种指令对数据格式都有一定要求,指令与数据之间的格式要一致才能正常工作。例如,为一个整数数据使用实数(浮点数)运算指令,显然会得到不正确的结果。 数据有不同的长度(以二进制表示它们时,占据的位数不同),也就决定了数值的大小范围。模拟量信号在进行模/数(A/D)和数/模(D/A)转换时,一定会存在误差;代表模拟量信号的数据,只能以一定的精度表示模拟量信号。 所有的数据在PLC中都是以二进制形式表示的 数据都有其特定的长度和表示方式,称为格式 数据的格式与用于运算、处理它的指令相关 以不同的格式查看一个数据,或是使用不同格式的指令处理它,会得到不同的效果 表1. S7-200支持的数据格式 寻址格式 数据长度 (二进制位) 数据类型 取值范围 BOOL(位) 1(位) 布尔数 (二进制位) 真(1);假(0) BYTE(字节) 8 (字节) 无符号整数 0 ~ 255;0 ~ FF(Hex) INT(整数) 16 (字) 有符号整数 - 32768 ~ 32767; 8000 ~ 7FFF(Hex) Word(字) 无符号整数 0 ~ 65535; 0 ~ FFFF(Hex) DINT (双整数) 32 (双字) 有符号整数 - 2147483648 ~ 2147483647 8000 0000 ~ 7FFF FFFF(Hex) DWord (双字) 无符号整数 0 ~ 4294967295; 0 ~ FFFF FFFF(Hex) REAL (实数) IEEE 32位 单精度浮点数 -3.402823E+38 ~ -1.175495E-38(负数); +1.175495E-38 ~+3.402823E+38(正数); 0.0※ ASCII 8/个 (字节) 字符列表 ASCII字符、 汉字内码(每个汉字2字节) STRING (字符串) 字符串 1 ~ 254个ASCII字符、 汉字内码(每个汉字2字节) ※ 实数不能绝对准确地表示“零” 二进制、十六进制和十进制 二进制和二进制数: 所有通过S7-200 PLC处理的数据(数值、字符等等)都以二进制形式表示。在S7-200中,特别指出一个数据是二进制数并没有什么意义。 十六进制和十六进制数:在二进制数中,每4个二进制位可以分为一组;这组二进制数值的不同变化可以表示16个状态,正好是16进制数每一位数字的变化范围。因此,可以用十六进制数值方便地表示二进制数。 例如,二进制数1000_1111b分为两组来看,分别是1000b和1111b,正好可以表示16进制数字8h和Fh(0000b对应于0h,...,1111b对应于Fh);那么这个二进制数就可以表示为8Fh。 十进制和十进制数:十进制是S7-200的数学计算的基础,在S7-200中,一般都使用十进制的体系,除了时间(12/24或60进制)等特殊数据外。 二进制数用于在PLC中表示十进制数值、或者其他(如字符等)数据,而16进制用来比较简单地描述二进制数。 在S7-200中,二进制立即数表示为2#xxxx_xxxx(1字节长度),16进制立即数表示为16#xx(1字节长度)。 二进制位逻辑(bit) PLC中以二进制“位”的数据形式来表示逻辑“1”、“0”(或者“开”、“关”)。位是最基本的数据单位。 在数据字节(Byte)中,二进制逻辑只用一个位(bit)来表示。每个字节由8个位组成。 在S7-200中,某些类型的数据兼有成组的字节(字)访问形式,也有位的访问形式,如定时器、计数器等 在编程软件Micro/WIN中,对位数据进行运算操作的指令都在指令树的Bit Logic(位逻辑)分支中 “位”的逻辑值为“1”或者“0”,但是在实际应用中,某种状态的“有效值”可以是“1”,也可以是“0”。“有效”就是我们认为某个状态已经“激活” 整数、无符号整数和有符号整数 字节、字、双字都可以用来表示十进制整数,显然它们的数据长度不同,能够表示的数的大小范围也不同。 无符号整数只有0和正整数;有符号整数可以有正数和负数。 有符号整数采用二进制补码的形式来表示负数。 在S7-200中,字节、字、双字都可以按照无符号、有符号整数来查看 Micro/WIN中,整数运算指令在指令树的Integer Math分支中 只有字节运算指令(带B符号的指令,如INC_B等)是无符号整数运算指令 凡带有I,或W,DW等(除字节B指令外)的数学运算指令,都是有符号整数运算指令 定时器、计数器的值都是有符号整数 HSC(高速计数器)的计数当前值(HCx)和设定值都是32位的有符号整数 在编程软件Micro/WIN中输入立即数据时,如果不输入小数点,则认作整数 在不需要高精度运算的条件下,使用整数可以简化编程,节省处理时间。 实数(浮点数) 在S7-200中,实数(浮点数)是符合IEEE标准的32位实数,即单精度实数。实数格式按照一定的运算规律把32个二进制位分组,表示极小或极大的数。 S7-200的实数运算指令都在指令树的Floating-Point Math(实数运算) 分支中 实数当作整数运算的时候会导致数值的错误;而整数当作实数应用可能会使数据非法(不符合标准) 在编程软件Micro/WIN中输入带小数点数据的数据,则认为实数(实数形式的整数值必须输入小数点和一位为零的小数位,如10.0) ASCII字符和String(字符串) 在S7-200中,ASCII字符是由表示字母、数字和一些特殊符号的ASCII编码组成的二进制数据字节,一个字节存储一个字符。 ASCII(美国信息交换标准码)是一种字符编码格式,在一个字节长度中不同的二进制数值代表不同的字符。如字母A为41h(十六进制数值),以十进制看就是65;而数字5的ASCII值为35h,十进制值为53。 S7-200中新引入了String(字符串)数据格式,其结构是在ASCII字符字节串前面有一个串长度。字符串最长可以有255个数据字节。 字符串中也能包括汉字编码,每个汉字占用两个字节。 这是S7-200内部对ASCII字符串的格式定义,所有与字符串有关的指令都遵照这个格式。 在编程软件中,用单字节(英文)的单引号(')将作为字符的内容括起来可以在数据块和状态图中输入ASCII数据字节 在单字节的双引号(")中间输入文本内容可以输入字符串 按上述方法输入的字符串会自动按字符串格式排列(在起始地址中放入字符个数) 使用程序,或人为组合成的ASCII字符串,使用ASCII字符串指令时,必须注意是否符合格式 1、无符号整数和有符号整数之分? 一个16位数,分为WORD数据类型与INT数据类型。前者无符号,后者为有符号。 通常情况下WORD用于逻辑运算,INT用于数学运算;即WORD与INT在用法上没有什么区别(WORD可做数学运算,INT也可作逻辑运算)。 2、如vw100我怎么让它成为无符号整数寄存器? 不是什么寄存器,寄存器的概念在此不做解释。vw100如果做为WORD数据类型就是无符号。 3、WORD数据类型与INT数据类型数据范围: WORD数据:0-65536; INT数据类型:-32768-+32767 资料搜集自网络
普及知识:什么是BCD码 BCD代码。Binary-Coded Decimal,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。   由于十进制数共有0、1、2、……、9十个数码,因此,至少需要4位二进制码来表示1位十进制数。4位二进制码共有2^4=16种码组,在这16种代码中,可以任选10种来表示10个十进制数码,共有N=16!/(16-10)!约等于2.9乘以10的10次方种方案。常用的BCD代码列于末。   常用BCD编码方式   最常用的BCD编码,就是使用"0"至"9"这十个数值的二进码来表示。这种编码方式,在中国大陆称之为“8421码”。除此以外,对应不同需求,各人亦开发了不同的编码方法,以适应不同的需求。这些编码,大致可以分成有权码和无权码两种:   有权BCD码,如:8421(最常用)、2421、5421…   无权BCD码,如:余3码、格雷码…   以下为三种常见的BCD编码的比较。   十进数 8421-BCD码 余3-BCD码 2421-A码   (M10) D C B A C3 C2 C1 C0 a3 a2 a1 a0   0 0 0 0 0 0 0 1 1 0 0 0 0   1 0 0 0 1 0 1 0 0 0 0 0 1   2 0 0 1 0 0 1 0 1 0 0 1 0   3 0 0 1 1 0 1 1 0 0 0 1 1   4 0 1 0 0 0 1 1 1 0 1 0 0   5 0 1 0 1 1 0 0 0 0 1 0 1   6 0 1 1 0 1 0 0 1 0 1 1 0   7 0 1 1 1 1 0 1 0 0 1 1 1   8 1 0 0 0 1 0 1 1 1 1 1 0   9 1 0 0 1 1 1 0 0 1 1 1 1   常用BCD码   十进制数 8421码 5421码 2421码 余3码 余3循环码   0 0000 0000 0000 0011 0010   1 0001 0001 0001 0100 0110   2 0010 0010 0010 0101 0111   3 0011 0011 0011 0110 0101   4 0100 0100 0100 0111 0100   5 0101 1000 1011 1000 1100   6 0110 1001 1100 1001 1101   7 0111 1010 1101 1010 1111   8 1000 1011 1110 1011 1110   9 1001 1100 1111 1100 1010   -----------------------   特点:   8421编码直观,好理解。   5421码和2421码中大于5的数字都是高位为1,5以下的高位为0。   余3码是8421码加上3,有上溢出和下溢出的空间。   格雷码相邻2个数有三位相同,只有一位不同。
最近技痒,写了个KEIL中输入二进制数的函数,请大家指教 大家用KEIL的时候是不是很想输入二进制?但可惜,KEIL只能在汇编的时候使用二进制,C语言不能用。 二进制好处多,尤其是在编1602的时候,对寄存器的操作更加直观,哪一位是1,哪一位是0,一目了然 下面的程序在KEIL中试验仿真通过,大家可以在实物中试验一下。 #include<reg51.h> #define uchar unsigned char #define uint unsigned int //二进制转换成十进制,binH代表高四位,binL代表低四位 uchar bin_to_dec(uint binH,uint binL) { uchar dec_data=0;//dec_data是最后的运算结果,返回值 uchar tmp;// tmp用来保存取出来的每一位 tmp=(bit)(binH/1000);//取binH最高位 tmp<<=7; dec_data|=tmp; tmp=(bit)(binH/100%10);//取第三位 tmp<<=6; dec_data|=tmp; tmp=(bit)(binH/10%10);//取第二位 tmp<<=5; dec_data|=tmp; tmp=(bit)(binH%10);//取第一位 tmp<<=4; dec_data|=tmp; tmp=(bit)(binL/1000);//取binL最高位 tmp<<=3; dec_data|=tmp; tmp=(bit)(binL/100%10);//取第三位 tmp<<=2; dec_data|=tmp; tmp=(bit)(binL/10%10);//取第二位 tmp<<=1; dec_data|=tmp; tmp=(bit)(binL%10);//取第一位 dec_data|=tmp; return(dec_data); } void main() { uchar a; a=bin_to_dec(1111,1100);//程序中的调用方法 while(1); } 程序有点长,其实就是把bin_to_dec(1111,1100)这个函数里面的两个形参,1111和1100按位取出来,然后再逐位放到一个数据里面的过程,取出的方法就是用除法和取余运算,学过数码管动态驱动的应该有点印像吧?
光棍节没节目的朋友们,推荐电影给你们看,够一天的了 肯定有人像我一样没节目吧?我在家看了一天的电影,现在才推荐好像迟了点哈。。 《圣诞怪杰》 格林奇是一名心胸狭隘的隐居者,他的心脏只有正常人的四分之一大。格林奇与他的狗麦克斯住在克朗皮特山的山洞里,靠野菜汁、蓖麻油与酸奶充饥。 观看地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.lbwyy.com%2Fview%2Findex3377.html&urlrefer=28cc8ff17fc425cb887215c33602fdb6 《一个头两个大》 查理(金凯瑞 饰演)是一个个性充满"真善美"的小镇警察,当他挚爱的白人妻子留下3个黑人小孩给他,并与黑人侏儒私奔后,查理开始变得畏畏缩缩,而使得镇民趁着机会占尽他的便宜,但是查理却从不生气,更使得镇民都乐在其中地骑在他头上。好人当然也有"出头"的时候!某一天,查理潜在的另一个人格:汉克出现了,汉克是个冷酷、暴力型的人格,他狠很地使出多项"绝技",将欺负过查理的镇民都报复了一次,让镇民个个闻风丧胆。查理的日子从此当然好过多了,因为镇民都怕死汉克无情的"绝技"!后来,查理被指派了一项任务:护送艾琳(瑞妮齐薇格 饰演)回去纽约受审。就这样查理带着压抑精神分裂的药物,快乐地带着美女艾琳回纽约。艾琳的前老板因为怕艾琳回到纽约后,会将他破坏环境从事不法生产的事给抖出来,所以他重金礼聘杀手去"乾掉"艾琳。查理与艾琳受到杀手的狙击,两人一路打带跑的逃着,而在逃亡的过程,查理把压抑精神分裂的药给弄丢了!汉克理所当然地开始出现,艾琳开始要面对个性"真善美"的查理,以及暴力粗鲁的汉克,还要面对杀手的追杀,情况危急却又充满刺激,让艾琳与查理、汉克都陷入了情网,艾琳与查理这2个人,带着3个人格陷入了难解的三角恋爱!只是,杀手祭出的手段越来越毒辣,汉克又越来越残暴,艾琳该如何是好?杀手会祭出如何低劣的手段来追杀他们?查理又要如何面对"两个人格、三角恋爱"的事实? 观看地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.lbwyy.com%2Fview%2Findex3202.html&urlrefer=51f1d206942dfb9a97ffa5e1c31f298c 《变相怪杰2》 漫画家蒂姆(杰米·肯尼迪饰)有个刚出生的小宝宝,可爱伶俐还很聪明乖巧,蒂姆夫妇别提多么疼这个刚出生的小家伙了。不过大出意料的是,那个神通广大、会带来无可限量的超能力的绿色面具不知怎么就落到了他那个好奇宝宝的手里。本来应该天真无邪的小家伙这下可有的乐了,面具所拥有的神奇能量尽数传给了这个刚出生的婴儿。别的小孩吹气球,他能把自己的头吹涨,房间里就快成了变相怪杰宝宝的安乐窝。蒂姆光照顾宝贝儿子就已经一个头两个大,没想到连家里那只厚无廉耻的狗也跟着起哄--它可是觉得自己才是面具的主人呢!好戏还在后头,面具的主人洛基已经一切调查清楚,现在,他决定不惜一切代价夺回自己的所有物。可这得先问问超级宝宝和他忌妒心超强的小狗答不答应咯! 观看地址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.lbwyy.com%2Fview%2Findex3365.html&urlrefer=3fb9711f8e974d4fed591a68e06208c7
首页 1 2 下一页