格雷码转换PLC实例
格雷码数据转换方法
格雷码的广泛用途就不多说了,总之优点多多,在PLC 工控中经常用到绝对编码器,所以今天就格雷码与常用进制间的互换做几个例子,方便理解。
1、格雷码与BIN的算法:假如格雷码为:110011,那么,转换为二进制码则为:100010具体的转换过程为:用格雷码的最左位即(高位)与“0”异或取得一个值,用最高位取得的异或值结果与格雷码的次位(即:左二位)再次计算异或值,其结果依次与下一位格雷码异或计算,所取得的与原格雷码位数相同的一个数据即是转换所得二进制;2、二进制数转换为格雷码则如下:假如一个二进制数为:11100011,那么其转换为格雷码即为:10010010;其算法由二进制数据的右端(即低位)算起,用该二进制数的最低位,在PLC中称为“0”位,与“1”位进行异或所得值即为格雷码的最低位,再用二进制的“1”位和“2”位异或取得值为格雷码的低二位,依次类推,二进制的最高位,直接不变放到格雷码的最高位,至此,就获得一组与二进制位数相等的格雷码数据。
至于格雷码转换BCD数据,相信能转换为二进制,这个就不难搞定了。
最绕弯的,个人感觉是格雷码转换成角度值。
下面我详细唠叨一番:3、格雷码转换角度值假如10位分辨率格雷码,要转换成角度值,(一般角度值精确到小数点后一位,如“37.6”,在PLC数值运算中常放大10倍来使用,即“376”显示。
)举一例子:格雷码:1110010100,转换角度值为:2613具体转换过程是:先将格雷码转换为二进制数据1011100111;再将二进制数据换算成角度值。
二进制数据换算成角度值的方法是:在本例中分辨率为10位,则二进制“1111111111”(&1023)相对应于0——3599(即0度至359.9度,因为360度也是0度),则换算出二者比为3599/1023; 那么本例中的1011100111(&743)对就角度=743*(3599/1023)等于“2613”(此值为BCD码)。
基于PLC程序实现格雷码转换成二进制码
编码 器 由机械 位置决 定的每个 位置 的唯一性 , 它 无需 记
忆 , 无需找参 考点 , 而且不用 一直计 数 , 什么 时候需 要
发 的关键 。 科技馆 的展 品非 常讲 求互动性 、趣 味性和 科学性 ,
展厅也 大量使用 了各类 的传感器和控 制开 关。本文所介 绍 的用 PL C和 编码器 的方 式来 实现 获取绝对 位置 的方
《 自 动 化 技 术 与 应 用 》 2 0 1 7 年 第 3 6 卷 第 5 期
P L C与 D C S
PL C a n d DCS
基于 P L C程 序实现格 雷码转换成 二进 制码
马东来
( 中国科学 技术馆 , 北京 1 0 0 0 1 2 )
摘 要 : 文章介绍了一种解决处理绝对位置 的方法 。采用绝对位置编码器配 合西 门子 P LC实现 了程序 读取绝对位置 , 这 是一个高 效 、稳定 、误码率极 低的一个设计 , 此设计 的一 个关键环节 即是编码器 产生的格雷码转换成二进 制码的程序设计 。此案例 应用于科技馆展 品 , 也是展 品设计者值得借鉴 的好案 例。 关键词 : 编码器 ; 格雷码 ; P L C, 科技馆展 品
e n c o d e r g e n e r a t e s Gr a y c o d e i n t o bi n a r y c o d e p r o g r a m mi n g . Th i s c a s e a p p l i e s t o s c i e n c e a n d t e c h n o l o g y mu s e u r f l e x hi b i t s ,
1 引 言
在 中国科技馆新馆 四层 A厅有这样 一个互动展 品叫
第八章 FX2N系列PLC应用指令及编程方法 第十三节格雷码变换指令及触点形式的比较指令
S· D·
FNC 170 K1234 K3Y010 GRY
BIN 1234
b15
b0
S· 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0
S· D·
X020
FNC 170 GRY
K3X000
D10
Gray 1234
X013
X010 X007
X000
S· 0 1 1 0 1 0 1 1 1 0 1 1
D· 0 1 1 0 1 0 1 1 1 0 1 1
Y023
Y020 Y017
Y010
Gray 1234
(a)格雷码变换指令使用说明
D· 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0
b15
b0
BIN 1234
(b)格雷码逆变换指令使用说明
图8-163 格雷码变换与逆变换指令的使用说明
X000 K200 C10 Y010 X001 D0 K-10 Y011 X002 K678493 D10(D11) M3 M50
图8-165串联形触点比较指令应用与说明
(三)并联形触点比较指令
指令的名称、助记符、指令代码、操
作数和程序步数见表8-98。指令编程应 用如图8-166。
表8-98 并联形触点比较指令的要素
FX2N系列PLC是FX系列中高档次的超小型 化、高速、高性能产品,具有128种298条应用 指令。分为程序控制、传送与比较、四则运算 与逻辑运算、循环移位、数据处理、高速处 理、、便利指令、外部设备I/O处理、浮点操 作、时钟运算、格雷码转换、触点比较等十个 类型。由于学时有限,本章将介绍程序控制、 传送与比较、四则运算与逻辑运算、循环移位、 数据处理、高速处理、、便利指令、外部设备 I/O处理。其它由读者自学。
格雷码二进制码转换电路
格雷码二进制码转换电路格雷码(Gray code),又称格雷码二进制码转换电路,是一种特殊的二进制编码方式。
它的特点是相邻的两个数值仅有一位二进制数发生变化,适用于数字和模拟电路中的编码和传输。
格雷码的起源可以追溯到19世纪,由法国数学家弗兰索瓦·格雷(François Gray)发明。
他的目的是设计一种编码方式,可以减少在数字传输过程中由于噪声、抖动等原因引起的误差。
在传统的二进制编码方式中,相邻的两个数值之间可能会发生多个二进制位的变化,这样在数字传输中就容易引起误差。
而格雷码通过仅改变一位二进制数来表示相邻的数值,可以有效地降低传输误差的风险。
格雷码的转换电路由多个逻辑门组成,常见的实现方式有反馈式和非反馈式两种。
反馈式格雷码转换电路使用触发器和逻辑门组成,适用于需要连续转换的应用场景。
非反馈式格雷码转换电路则使用逻辑门组成,适用于只需要单次转换的应用场景。
格雷码转换电路的核心是通过逻辑门的组合实现码字之间的变换。
逻辑门的输入信号由当前码字和目标码字决定,通过逻辑运算得到输出信号。
常见的逻辑门有与门、或门、非门等,它们可以实现不同的逻辑运算。
格雷码转换电路的功能包括格雷码到二进制码的转换和二进制码到格雷码的转换。
格雷码到二进制码的转换可以通过逻辑门的组合实现,将格雷码逐位进行异或运算,并与之前的结果进行与运算。
而二进制码到格雷码的转换则可以通过逻辑门的组合实现,将二进制码逐位进行异或运算,得到格雷码。
在数字电路中,格雷码转换电路广泛应用于各种编码器和解码器中。
编码器可以将多个输入信号转换为相应的格雷码输出,解码器则可以将格雷码输入转换为相应的输出信号。
格雷码转换电路还可以用于数字计数器、旋转编码器等应用中。
总结起来,格雷码二进制码转换电路是一种特殊的二进制编码方式,通过逻辑门的组合实现码字之间的变换。
它的应用范围广泛,可以用于数字电路中的编码和传输。
格雷码的特点是相邻的两个数值仅有一位二进制数发生变化,可以减少传输误差的风险。
格雷码转化二进制编程方法
2. 格雷码转换为自然二进制码根据格雷码转换为自然二进制码的转换规则,实际上就是不断的将格雷码与二进制数做异或操作,也就是说,不断的和本身的不同位数做异或操作,如原数据为32位的A,那么先将A向右移动一位,与本身进行异或,然后保留值为B,那么继续将A向右移动一位,与B进行异或,保留为C,依次类推,直到A=1为止。
程序流程图如下:保存输入数 TEMP,INPUT1如果输入数为0,那么直接返回数据0后退出如果TEMP不等于1,那么循环,否则返回数据TEMP右移1位,与输入值作不断异或功能块中的程序如下:INPUT 输入变量类型为DWORDTEMP 局部变量类型为DWORDINPUT1 局部变量类型为DWORDGRAY_TO_BIN 功能块返回变量返回类型为DWORDGRAY_TO_BIN:TEMP:=INPUT;INPUT1:=INPUT;IF TEMP=DWORD#0 THENINPUT1:=DWORD#0;GRAY_TO_BIN:=INPUT1;RETURN;END_IF;WHILE TEMP<>DWORD#1 DOTEMP:=SHR_DWORD(TEMP,UINT#1);INPUT1:=TEMP XOR INPUT1;END_WHILE;GRAY_TO_BIN:=INPUT1;上述代码在富士的SX系列PLC中试验没有问题,由于富士的SX系列PLC完全支持ST代码方式的编程,因此基本上可以不做修改的应用在西门子的S7系列的PLC中。
由于三菱的PLC中已经包含了自然二进制码转换为格雷码指令GRY以及格雷码转换为自然二进制码指令GBIN,因此上述代码应用于三菱系列的PLC已经没有意义,请使用三菱PLC本身附带的指令,因为西门子以及富士的SX系列PLC并没有附带转换指令,因此本人书写了上述代码用于补充SX系列的指令不足。
因為歐姆龍的ST不能支持數據移位指令,因此如果使用歐姆龍的話,那么FB中需要使用梯形圖來做哦。
格雷码、二进制码转换
entity and_gate is port(a,b: IN std_logic; y: out std_logic); end and_gate; architecture rhl of and_gate is begin y<=a and b; end rhl;
条件句中的“=>”不是操作符,只相当于“THEN”作用。
南理工紫金学院
EDA设计实验
由于case属于顺序语句, 在VHDL中顺序语句只能存 在与进程中。
南理工紫金学院
VHDL 常用基本语句
EDA设计实验
进程语句
进程主要用于描述顺序语句,其格式如下:
标记:process (敏感信号表 ) --变量声明语句; begin --顺序语句 end process; 敏感信号(包括端口信号)指那些值发生改变后能引起 进程语句执行的信号。当敏感信号发生改变时,进程启 动,begin和end之间的语句从上到下顺序执行一次,然 后返回进程语句开始,等待下一次敏感信号的变化。因 此进程语句有两种状态:等待状态和执行状态。 南理工紫金学院
1 声明部分包括:结构体所用的内部信号及数据类型; 元件例化声明。
2 结构体部分主要包括:并行语句信号赋值; 进程(顺序语句); 元件例化语句。 3 最后以end结束结构体部分。 南理工紫金学院
EDA设计实验
逻辑运算符
And(与),Or(或),Not(非), Nand(与非),Nor(或非),Xor(异或), Xnor(同或)。
EDA设计实验
第二节 格雷码、二进制码转换
南理工紫金学院
EDA设计实验
实验内容
格雷码简介及格雷码与二进制的转换程序解读
格雷码简介及格雷码与二进制的转换程序格雷码简介及格雷码与二进制的转换程序格雷码简介格雷码(英文:GrayCode,GreyCode,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-EmlleBaudot发明的一种编码[1],因FrankGray于1953年申请专利“PulseCodeCommunication”得名。
当初是为了机械应用,后来在电报上取得了巨大发展[2],现在则常用于模拟-数字转换[3]和转角-数字转换中[4]。
典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特格雷码简介及格雷码与二进制的转换程序格雷码简介格雷码(英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-EmlleBaudot发明的一种编码[1] ,因Frank Gray于1953年申请专利“Pulse Code Communication”得名。
当初是为了机械应用,后来在电报上取得了巨大发展[2],现在则常用于模拟-数字转换[3]和转角-数字转换中[4] 。
典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便[5] 。
格雷码属于可靠性编码,是一种错误最小化的编码,因为它大大地减少了由一个状态到下一个状态时电路中的混淆。
由于这种编码相邻的两个码组之间只有一位不同,因而在用于模-数转换中,当模拟量发生微小变化而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性.这就允许代码电路能以较少的错误在较高的速度下工作。
格雷码在现代科学上获得了广泛的应用,人们还发现智力玩具九连环的状态变化符合格雷码的编码规律,汉诺塔的解法也与格雷码有关。
除了已知的特点,格雷码还有一些鲜为人知的性质。
三菱PLC指令详解
INC
逻辑运算
WAND
WOR
WXOR
ROR
ROL指令
SFTL
SFTL
SFTR
SFTR
WSFR
WSFR
SFWR
SFWR
SFRD
ZRST
NEG求补
DECO解码
ENCO编码
BON
MEAN
பைடு நூலகம்UM
ANS和ANR
SQR
FLT
REF
REFF
HSCS
HSZ
SPD
PLSY
PWM
PLSY
PLSR
PLSV
IST
STMR
ALT
RAMP
ABSD
INCD
TTMR
STMR
SORT
ECMP
EZCP
浮点数四则运算
TCMP
TADD
TRD
格雷码
模拟量读写
LD触点比较
AND触点比较
OR触点比较
• 在子程序内最多可以允许有4层嵌套,也就是说在子 程序中可以嵌套调用其他子程序的次数最多可以有4 次。
• 这里有个FEND,它不同于END,END是所有程序结束指 令,而FEND是主程序结束指令,它之后还会执行子程 序或者中断程序。SRET则为子程序结束指令。
中断指令
WDT看门狗指令
FOR NEXT
For next
程序的0到9步,触发X0的上升沿信号,把M0导通,Z0、D10全部清空; 第9到23步,是一段循环指令,FOR K10表示这段程序循环10遍。第一遍, 由于变址寄存器Z0里面的数字为0,D0Z0这个地址变为D0(具体参考变址 寄存器的用法),ADD D10 D0Z0 D10,这条指令把D10加D0的数据放到D10 里面了,由于在程序上面用了D10,所以一开始D10保存的数据为0,经过 加法指令,D10里面保存数据就是D0,然后通过INC Z0加一指令,让Z0自 加1,等于1.然后进入循环第二遍.第二遍,Z0里面的数据为1,D0Z0这个 地址变为D1,ADD D10 D0Z0 D10这条指令把D10(经过第一遍扫描,D10里 面保存了D0)加D1的数据放到D10里面了,那么 D10里面的数据变为 D0+D1,然后通过INC Z0加一指令,让Z0自加1,等于2.然后进入循环第三 遍。… …第10遍,Z0里面的数据为9,D0Z0这个地址变为D9,ADD D10 D0Z0 D10这条指令把D10(经过第9遍扫描,D10里面保存了D0+D1+… +D8) 加D9的数据放到D10里面了,那么 D10里面的数据变为D0到D9里面全部 数据的总和,然后通过INC Z0加一指令,然后退出循环,进入下一步。 M8000常通触点段开M0,当进入PLC下一个工作周期时,由于循环指令里 面的程序都是由M0常开触点触发的,这是就不会再触发了,也就是,经 过一个PLC的工作周期,就把D0到D9里面的数据加起来,放到了D10里面 了。
格雷码和二进制码之间的转换
二进制与格雷码之间的转换在公司的PLC 改造项目中,我们经常要用到格雷码输出的绝对型旋转编码器。
由于格雷码是一种非加权码,不能直接反应出当前的角度值,所以必须在PLC 程序中将它转换成能反应当前实际位置的二进制码。
为了让我们的工程技术人员均能很好的掌握格雷码与二进制码之间的转换方法,我根据自己的一些经验和参考资料,将格雷码的相关知识作了些整理,在公司的刊物上发表出来,希望能和大家一起对这个问题来加以讨论和学习,共同提高我们的技术水平。
一、 格雷码格雷码((Gray Code )的概念格雷码是我们在工程中常会遇到的一种编码方式,例如,大多数绝对型旋转编码的输出就是采用格雷码的编码格式。
它是一种非加权码,由二进制码派生而来。
常用的二进制数与格雷码间的转换关系如下表:从上表我们可以看出,与普通二进制编码相比,格雷码的特点是相邻两个数之间只有1个二进制位发生了变化。
正是这个特点,使它更适合于用在数据传输的场合。
二、 二进制与格雷码之间的转换(一)、二进制码转为格雷码二进制码转为格雷码的算法较简单,将所需转换的数的二进制码右移一位后与原数相异或即可。
例:十进制数9的格雷码为:数值 二进制码格雷码 数值 二进制码格雷码0 0000 0000 9 1001 1101 1 0001 0001 10 1010 1111 2 0010 0011 11 1011 1110 30011 0010 12 1100 1010 40100 0110 13 1101 1011 50101 0111 14 1110 1001 60110 0101 15 1111 1000 70111 0100 81000 1100 9的二进制数形式 9的格雷码形式 9的二进制数右移1位后的结果 两者相异或(二)、格雷码转为二进制码格雷码转为二进制码的算法则较为繁琐,计算公式如下: Rn 为n 位的格雷码,Cn 为转换后的二进制码C n = R n ,C n-1 = R n R ⊕n-1,C n-2 = R n R ⊕n-1R ⊕n-2,…C 1 = R n R ⊕n-1R ⊕n-2…R ⊕⊕2R ⊕1,C 0 = R n R ⊕n-1R ⊕n-2…R ⊕⊕2R ⊕1R ⊕0例:格雷码(1001)转位二进制数C 4= R 4=1C 3= R 4⊕R 3=1⊕0=1C 2= R 4⊕R 3⊕R 2= C 3⊕R 2=1⊕0=1C1= R 4⊕R 3⊕R 2⊕R1= C 2⊕R 1=1⊕1=0三、 编程举例根据工业控制的特点,现分别给出在PLC 梯形图中和在VB 中实现格雷码转二进制码的程序。
格雷码 二进制码转换(xuesheng)
标准逻辑位矢量 表示有两个输入 端a0和a1
电路的表达式已知,如果是20位的格雷 码转换为20位的二进制码,?????
由于表达式非常相似,故可以考虑用循 环语句。Loop语句
实验报告要求
1、设计文档,即设计报告 ★ 封面: 包括名称,学号,姓名,院系,指导教师,时间等; ★ 摘要和关键词; ★ 目录; ★ 正文: *设计要求说明 *方案论证(整体电路的工作原理) *各子模块设计原理 *调试 *仿真
B3 G3 B2 B3 G 2 B1 B 2 G 1 B 0 B1 G 0
Gi Bi Gi B ( i 1) Bi
G3 B3 G 2 B3 B2 G 1 B 2 B1 G 0 B1 B 0
如何编组
如何编组
输入组名
如何设置数据类型
如何设置数据类型
如何生成模块
练习:VHDL语言描述4为二进制转换为格雷码的电路,观 察输入输出波形,编译无误后下载到实验箱进行验证。 • 工程的顶层设计实体名一定要和设计文件中的实体名匹配。
电路的表达式未知或者很难用 得到电路的表达式????
由于case属于顺序语句, 在VHDL中顺序语句只能存 在与进程中。
格雷码变换电路
实验目的:
1)用组合电路设计4位格雷码/二进制码变换电路。 2)学习利用原理图输入法设计简单逻辑电路的方法。
实验内容: 1)采用原理图输入方法设计4位格雷码/二进制码变换电路。 2)建立仿真文件对该电路进行功能仿真。 3) 将该电路下载至实验箱验证其逻辑功能。
实验原理
Bi Gi Bi B ( i 1) Gi
VHDL 常用基本语句
进程语句
进程主要用于描述顺序语句,其格式如下:
PLC中将格雷码转换成二进制码一种运算方法
PLC中将格雷码转换成二进制码一种运算方法作者:刘福禄来源:《资治文摘》2016年第02期【摘要】介绍了位置检测传感器---绝对值编码器的原理及特点,并介绍了一种在PLC控制系统中,将编码器的格雷编码转换为二进制编码的一种运算方法及其在位置检测中的应用。
实践证明该方法简单、准确。
【关键词】绝对值编码器;格雷码;PLC一、前言在随动位置控制系统和位移检测中,系统要控制的量有线位移或角位移。
需要检测的角度装置较多,如自整角机,旋转变压器和感应同步机等,而对于旋转物体角位移的测量,旋转编码器是必不可少的。
旋转编码器是直接将角位移转换成数字信号,它分为增量式和绝对值式两种。
根据其结构特点,为了减少输出的数字量信号的错误几率,一般采用格雷码形式输出。
格雷码编码的特点是:相邻的两个码组之间只有一位不同。
比其它编码同时改变两位或多位的情况更可靠,减少出错的可能性。
在实际的控制系统中,必须将检测到的格雷码转换成二进制码进行运算。
转换的方法有硬件转换和软件转换两种。
软件转换又有公式法(根据卡诺图建立一个二进制到格雷码的每一位公式)和查表法(建立一个格雷码与二进制的对应表)两种。
在PLC控制系统使用绝对值编码器时,有的PLC的指令系统有格雷码到二进制数转换的指令,但有的PLC没有此种指令,这时可以采用硬件电路转换为二进制编码后再输入到PLC中,但增加了系统的成本,也可以采用查表法,但用的存储空间较多。
这里介绍了一种利用PLC现有的指令系统完成格雷码到二进制码转换的简单方法。
此方法与前面所述方法相比,转换方法简单、运行速度快。
二、转换原理通过格雷码和二进制码对照表,不难发现格雷码转换成二进制码的规律。
将一个字节(8位)格雷码分为高4位和低4位,低4位的循环规律是:第一次以0、1、3、2、6、7、5、4、C、D、F、E、A、B、9、8顺序变化,对应的二进制编码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,它们之间是一一对应的,而下一次是以8、9、B、A…1、0反顺序变化。
格雷码 例题
格雷码例题
格雷码是一个二进制数字系统,其中两个连续的数值只有一个位数的差异。
格雷码经常用于错误检测和纠正,因为它可以快速检测和纠正单个比特错误。
以下是一个简单的格雷码例子:
1. 确定需要编码的位数:例如,我们这里需要4位的格雷码。
2. 确定格雷码列表:对于4位格雷码,可能的列表是0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000。
3. 在需要传输或存储数据时,将数据转换为格雷码形式。
例如,如果需要传输或存储数字5(二进制形式为0101),则应使用其对应的格雷码形式,
即0110(这是在4位格雷码列表中找到的与0101最接近的格雷码)。
4. 在接收端,将接收到的格雷码转换回原始数据。
由于格雷码的特点,如果传输过程中出现一个比特的错误,解码后的数据将是错误的格雷码中的下一个数字,这使得错误可以被快速检测并纠正。
以上就是格雷码的基本应用示例。
在更复杂的情况下,可能需要使用更高级的算法和技术来实现格雷码的编码、解码和错误纠正。
PLC中数值制式转换的原理及编程
PLC中数值制式转换的原理及编程在PLC编程中,对于一个整数,它的二进制或16进制或10进制的数值形式会自动转换,不需人为干预。
可是将一个整数转换为BCD码或转换为AICII码,就不能自动转换,有的PLC有这样的转换指令,如S7-200,我们需要时,直接调用对应的转换指令就可以了。
可是有的PLC没有这方面的转换指令,如需要这种数值制式转换,就得自己编写转换程序。
要想编出转换程序,应必须先了解要转换的这二种数值制式之间的数学关系,只有了解了才能编出合理的转换程序。
下面我们分别介绍几种数制转换的依据及编程。
一、16进制数转换为BCD码的数学依据及编程:BCD码是以4位二进制数表示一位十进制数的一种数制形式,它源于电子线路的计数器,该计数器是由4位二进制计数器组成,4位二进制计数器共有16种输出状态:0000、0001、0010、0011……1111,由高位向低位各位权依次代表为8、4、2、1,这4位数之和表示一位16进制数或一位10进制数。
用这16种状态表示一个数的称之为二进制(或称16进制)计数器,只用这16种状态的前10种状态表示一个数的计数器,称之为10进制计数器,这十进制编码为0000、0001、0010……1000、1001,这种每4位二进制数代表一位10进制数的编码称之为8421码,即BCD码。
个位上的4位有效数(1)分别代表10进制数的8、4、2、1,十位上的4位有效数(1)分别代表10进制数的80、40、20、10,百位上的4位有效数(1)分别代表10进制数的800、400、200、100,千位上的4位有效数(1)分别代表10进制数的8000、4000、2000、1000……一个字存储器有16个位,可记录4位BCD码,一个字记录最大的BCD码为9999。
即:1001_1001_1001_1001。
了解了这些就可以进行将整数转换为BCD码,或将BCD码转换为整数的编程:(一)整数转换为BCD码编程在PLC里,整数通常是以16进制(即2进制)数的形式存放在存储器内,将整数转换为BCD码编程思路是这样:将原整数存放在M1存储器里,M2为BCD码存放区,先将M2清0,如最大整数<10000,则M2选用一个字存储器就够,计算过程是:先判断M1是否大于10进数8000(转换16进制数为1F40),如大于,用M1值- 1F40,将差-->M1,M2加1 ,如小于,不作减8000运算,接着将M2左移一位,再判断M1是否大于10进数4000(转算16进制数为0FA0),如大于,用M1值- FA0,将差-->M1,M2加 1 如小于,不作减运算,接着将M2 左移一位.....接着按同样判断处理过程,判断2000、1000、800、400、200、100、80、40、20、10,判断完10后,将M2左移4位,再将M1或到M2中,此时的M2即为转换BCD码数。
格雷码和二进制
一、格雷码(又叫循环二进制码或反射二进制码)介绍在数字系统中只能识别0 和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。
格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3 转换成4 时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。
而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。
它在任意两个相邻的数之间转换时,只有一个数位发生变化。
它大大地减少了由一个状态到下一个状态时逻辑的混淆。
另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。
下表为几种自然二进制码与格雷码的对自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。
例如:自然二进制编码如下:1001那么转换为格雷码的方法是:保留最高位1,然后将第二位0与第一位1做异或操作,第三位的0与第二位的0做异或操作,第四位的1与第三位的0做异或操作,得到结果如下:1 1 0 1 Gray2、二进制格雷码转换成自然二进制码二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。
例如将格雷码1000转换为自然二进制码:10001111上排为格雷码,下排为自然二进制,从左到右分别为1~4位将上排的第一位高位作为自然二进制的最高位,因此在下排的第一位填入1,然后以上排第二位与下排第一位做异或操作,得到下排第二位结果为1,将上排第三位与下排第二位做异或操作,得到下排第三位的结果为1,同理,下排第四位的结果为1,因此,我们得到了转换结果如下:1 1 1 1 Bin三、自然二进制码与格雷码互换在富士SX系列PLC中的实现方法:1.自然二进制码转换为格雷码:根据自然二进制码转换为格雷码的转换规则,实际上就是将转换数右移一位后与转换数做异或操作。
S7200中二进制和雷格码转换
怎样在STEP 7 Micro/WIN 中相互转换二进制码和格雷码?显示订货号6ES7810-2.. SIMATIC S7 STEP7-MICRO/WIN说明:STEP 7 - Micro/WIN 的标准库中不包含格雷码转换。
使用下载的附件可以转换成8位、16位和32位二进制数。
格雷码指令库的描述"graycode.mwl" 指令库包括用于字节、字和双字格式的编码和解码的功能块。
( 37 KB )图 1从二进制码转换到格雷码(BIN_GRAY):功能块 BIN_GRAY_B、BIN_GRAY_W 和 BIN_GRAY_DW 把输入的字节、字和双字类型的二进制码编码成格雷码。
( 83 KB )( 85 KB )子程序 GRAY_BIN 和 XOR 用于格雷码转换二进制码的解码过程。
( 4 KB )graycode.zipHow do you convert a binary number into Gray code (or vice versa) in STEP 7 Micro/WIN?Display part number6ES7810-2.. SIMATIC S7 STEP7-MICRO/WINInstructions:The STEP 7 - Micro/WIN standard library does not include generation of the Gray code. Using the download attached you can convert 8-, 16- and 32-bit binary numbers.Description of the "GRAY CODE" libraryThe "graycode.mwl" library includes function blocks for encoding and decoding the Gray code for the formats Byte, Word and Double Word.Fig. 01code) for the number dimensions BYTE, WORD and DOUBLE WORD in binary code. Fig. 03graycode.zip IMPORTANT。
16bit二进制→格雷码转换
当以下情况时变为ON并且保持 -使用索引寄存器指定数据区超出范围
· 错误标志(R9008) 当以下情况时瞬间变为ON -使用索引寄存器指定数据区超出范围
3-484
F238(DGBIN) 32bit格雷码→ P238(PDGBIN) 32bit二进制
概述 程序示例
将32位格雷码转换为32位二进制数据 对于FPΣ, P型高级指令不适用
SA nA D N/A
继电器
WY WR AA AA AA
(*1)此处不适用FPΣ。
定时器计数器 数据寄存器 索引寄存器
常数
索引变址 整型设备
WL SV EV DT LD FL(*1) I
KHf
A A A AA A
A
A A N/A A
N/A
A A A AA A
A
A A N/A A
N/A
A A A AA A
A
A A N/A A
N/A
A A A AA A
A
N/A N/A N/A A
N/A
A: 可以使用 N/A: 不可使用
当触发器为ON时, 将S指定的16bit格雷码转换为16bit数据. 转换的结果存放在由D指定的16bit数据区. 关于格雷码的详细内容, 请参阅有关章节.
标志状态
· 错误标志(R9007)
当触发器为ON时, 将S指定的32bit数据转换为格雷码. 转换的结果存放在由[D+1,D]指定的16bit数据区. 关于格雷码的详细内容, 请参阅有关章节.
编程时注意事项
能够转换为格雷码的32bit二进制数据范围为K0~K2147483647(H0~H7FFFFFFF)
标志状态
· 错误标志(R9007)
格雷码与二进制代码的转换规则
格雷码与二进制代码的转换规则一、什么是格雷码?首先我们来了解一下格雷码。
前面我们介绍了一些常见的BCD 码,8421BCD、2421BCD、5421BCD,还有余三码,那么这个格雷码我们接触较少,什么是格雷码呢?这种码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信.格雷码,又叫循环二进制码或反射二进制码,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,这点在下面会详细讲解到。
在数字系统中,常要求代码按一定顺序变化。
例如,按自然数递增计数,若采用8421码,则数0111变到1000时四位均要变化,而在实际电路中,4位的变化不可能绝对同时发生,则计数中可能出现短暂的其它代码(1100、1111等).在特定情况下可能导致电路状态错误或输入错误。
使用格雷码可以避免这种错误.格雷码属于可靠性编码,是一种错误最小化的编码方式。
举个例子来说吧,如果用一个8位的二进制数表示热水壶的温度,温度是不断连续变化的,36°C、37°C、38°C......,那么温度每升高一度,二进制数就加1。
这时候,二进制数有可能是多个位同时变化的:当温度由119°C变成120°C时,二进制数由01110111变化成01111000,有四个位发生变化;当二进制数由177°C变化成178°C时,二进制数由01111111变化成10000000,有8个位发生了变化。
也就是说,自然二进制数在表示一个连续变化的数值时,可能会有多个位同时发生变化,每个位翻转(变化)的频率是比较高的,这在某些应用场合,是十分不利的。
而格雷码,由于具有循环特性和单步特性,当用它表示一个连续变化的数值时,仅有一个位会翻转,大大的降低了位翻转的频率,因而可以保证传输的稳定性,较少传输误码率。
格雷码的单步特性呢就是是指,当格雷码表示的一个数值,连续变化时,格雷码只有一个位会变化。
就是我刚才说的它最基本的特点了。
2.11 ASC码和格雷码指令_PLC职业技能培训及视频精讲——三菱FX 系列_[共9页]
ASC 指令样式如图 2.11.1 所示。
245
PLC 职业技能培训及视频精讲——三菱 FX 系列
图 2.11.1 ASC 指令样式
在图 2.11.2 所示的程序中,当 X14=0、X10=1 时,目标 D100~D103 的数据如表 2.11.1 所示;当 X14=1、X10=1 时,目标 D100~D107 的数据如表 2.11.2 所示。
表 2.11.1
软元件号
D100 D101 D102 D103
表 2.11.2
软元件号
D100 D101 D102 D103 D104 D105 D106 D107
246
图 2.11.2 ASC 指令例子
D100~D103 数据
ASCII 码字符
高8位
低8位
b
a
d
c
B
A
D
C
十六进制数
高8位
低8位
62
第 2 章 PLC 快速提高
表 2.10.6
4 位两组带锁存七段码信号逻辑、PLC 输出逻辑与 n 值关系表
PLC 输出类型
8421(BCD 码)数据输入
选通脉冲
PNP
NPN
高电平有效 低电平有效 高电平有效 低电平有效
正逻辑
负逻辑
正逻辑
负逻辑
正逻辑
负逻辑
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
61
64
63
42
41