在如何编写把十进制数转化成ASCII的程序之前,应先知道十进制数与之对应ASIIC码的数学关系及将它们存放存储器的数制表示形式: 1、每一位十进制数其值为0~9,其二进制值为:0000~1001,放在字节存储器将占用4个二进制数的位。一个字节内含8个二进制数的位,故一个字节可表示2位十进制数。这种用4位二进制数表示一位十进制数的数制叫BCD码。 2、每一位十进制数“X”转换为ASIIC码的原则为:30+X 如X=4,其对应ASIIC码=34,将其放入一字节存储器里用二进制数表示:0011_0100,用16进制数表示:16#34 3、如被转换的十进制数*大为4位数,用BCD码表示可占一个字存储器空间,设为字存储器为MW10,MW10含2个字节,高字节为MB10,低字节为MB11。MB10的高4位为十进制数的千位数值,MB10的低4位为十进制数的百位数值。MB11的高4位为十进制数的十位数值,MB11的低4位为十进制数的个位数值。如将此4位十进制数转换为ASIIC码,需占用一个双字存储器空间,如VD10,它含有4个字节,每个字节代表一位ASIIC码,其每个字节的高4位数值皆=0011(3),低4位数为十进制数对应的数值,如十进制数1234,放入字存储器MW10里。其内容=0001_0010_0011_0100,用16进制数表示为:16#1234,转换为ASIIC码值放入VD10里,其内容=0011_0001_0011_0010_0011_0011_0011_0100,用16进制数表示:16#31 32 33 34。 了解上述3点,就可以很容易编出把十进制数转化成ASCII的程序: 设MW10为4位十进制数存储区(存数形式为BCD码),VD10为转换为ASIIC码D的存数区。编程可以这样处理: 1、将16#30303030送入VD10. 2、将MB10右移4位送入MB8,再将MB8或入VB10。 3、将MB10与16#0F相与,送入MB8,再将MB8或入VB11。 4、将MB11右移4位送入MB8,再将MB8或入VB12。 5、将MB11与16#0F相与,送入MB8,再将MB8或入VB13。 按这样步骤编程,其VD10的内容即为将MW10内的4位十进制数转换为ASIIC码值。
|
求一段程序(梯形图),在一个轮子上安装有两个接近开关,支架上有个挡块,可以同时挡住两个接近开关,两个接近开关的距离约2厘米,挡块长约4厘米 求个plc程序段,检测轮子的转向。谢谢! 答:给你出个梯形图,供参考:
程序说明:I0.0为A接近开关的输入口,I0.1为B接近开关的输入口。当轮子转动时只有下面二种情况: 1、当挡板挡住A开关时(即I0.0=1的前沿),如I0.1=0,则使M0.0置1。当挡板离开A开关时(即I0.0=1的后沿),如I0.1=1,则使M0.0置0。即轮子每转一圈,M0.0发出一个脉冲,而M0.1始终=0,此时为正转。 2、当挡板挡住A开关时(即I0.0=1的前沿),如I0.1=1,则使M0.1置1。当挡板离开A开关时(即I0.0=1的后沿),如I0.1=0,则使M0.1置0。即轮子每转一圈,M0.1发出一个脉冲,而M0.0始终=0,此时为反转。即判断M0.0与M0.1是否会产生脉冲就可判断轮子是正转或反转。 再将M0.0与M0.1各驱动一个断电延时定时器,其延时时间要>>大于M0.0与M0.1的脉冲间隔,用这二个定时器驱动Q0.0与Q0.1的指示灯,就可通过Q0.0与Q0.1输出的指示灯来直观判定轮子的正反转。如:当轮子转动时,M0.0产生连续脉冲,而M0.1=0,将使T101时时保持=1状态,使Q0.0=1(正转灯亮),而此时M0.1=0,使T102=0,使Q0.1=0(即反转灯不亮)。如M0.1产生连续脉冲,而M0.0=0,将使T102时时保持=1状态,使Q0.1=0(反转灯亮),而此时M0.0=1,使T101=0,使Q0.0=0(即正转灯不亮) |
集电极开路NPN输出型的编码器信号如何接入正逻辑的plc? 通过上拉电阻吗? 答:对于正逻辑的PLC(即24V的负极接PLC输入侧的COM)用集电极开路NPN输出型的编码器,只加上拉电阻是不行的,原因为: 编码器输出为1时(即编码器内的晶体管截止),虽然能提供+24V电源电压给PLC的输入端,但集电极的负载电阻(R1)串在其中,使PLC输入点的电压变小(见下左图):其输入电压 UI0.0 =24×Rf/(R1+Rf),即输入给I0.0的脉冲的电压幅度低于24V,不能使PLC内部计数器可靠计数。**采用下右图电路:用一PNP晶体管G3,其发射极接+24V,集电极接I0.0输入端,基极串接一只10K电阻接编码器的输出端。这样连接PLC就可正常工作。其原理为:当编码器输出为1(编码器内的晶体管G0 截止)时,G3管基极电位=24V,使G3管截止无输出(相当输入开关断开),当编码器输出为0(编码器内的晶体管导通)时,R2给G3管提供基极电流。使G3导通,此时的G3(相当输入开关闭合)将+24V电压加给PLC输入端,使UI0.0 =24V。见下右图Ic:
你也可以在网上查看《“再出几道电路知识题,望大家参与”之三》一文,此文中的第6题回答的内容,就是你所要问的问题。 又问:……麻烦你可不可以讲一下正逻辑与负逻辑编码器的区别谢谢 答:正逻辑一般是指控制线路的公共地接电源的负极,这样输出0为0V电位,输出1为高电位(如+24V),负逻辑是指控制线路的公共地接电源的正极,这样输出0为0V电位,输出1为负电位(如-24V)由NPN型晶体管组成的电路其公共地取电源的负极,故由NPN型晶体管组成的电路为正逻辑电路,而由PNP型晶体管组成的电路其公共地取电源的正极,故由PNP型晶体管组成的电路为负逻辑电路。见下图:
|