唐山西门子授权PLC模块总代理2023更新
唐山西门子授权PLC模块总代理2023更新唐山西门子授权PLC模块总代理2023更新
同样受数据处理模式标志继电器M8161控制的ASCI指令和HEX指令。
ASCI指令和HEX指令是一对互逆的指令,基于十六进制字符与ASCII码之间的转换。ASCII码,我在之前的文章就有简单的介绍过,在这里再简单提一下。
ASCII码也就是美国信息交换标准代码,它是一组7位(或8位)二进制代码,分别表示0~9的十个代码、大小写字母的52个代码、32个表示各种符号的代码以及34个控制码。而什么字符对应什么ASCII码,我们可以通过查它的编码表得知。例如字符“3”对应的ASCII码为H33,字符“A”对应的ASCII码为H41,这里的3、A是一个字符,而不仅仅是一个数。这就像运动员背后贴的号码布,上面的号码代表的不是数值的大小,而是表示运动员的编号。
另外,十六进制字符(HEX)我就不再解释,相信大家对它也是相当熟悉了。在知道了什么是HEX和ASCII后,我们开始指令的学习分享吧。
01HEX→ASCII转换指令ASCI
图15-1
ASCI指令的作用是将十六进制字符转换为ASCII码。但为什么要将HEX字符转换为ASCII码呢?这其实是通信的内容,ASCII通信模式是MODBUS通信协议的通信模式之一,简单来说,是指在数据传输过程中所传送的字符用ASCII码表示。至于什么是MODBUS通信协议,咳咳,这通信吧,我上篇文章已经说过了,这是我永远滴痛。
所以,ASCI指令和HEX指令都是用于ASCII通信模式的。即PLC通过ASCI指令将需发送的十六进制数据转换为ASCII码,通过HEX指令将接收到的ASCII码转换为十六进制字符。
ASCI指令的编程手册截图如上图15-1所示,和RS指令与CCD指令一样不可用于32位,有连续执行型和脉冲执行型两种。
图15-2
其梯形图形式如上图15-2所示,和CCD指令非常相似,也有3个操作数,源址S为HEX字符或存储字元件首址;终址D为ASCII码存储字元件首地址;n为需转换的HEX字符的个数,取值范围为1~256。当驱动条件成立时,将源址S的n个十六进制字符转换为ASCII码并存放到首址为D的寄存器中。
结合上篇文章,特殊继电器M8161的状态可以将ASCI指令分为16位数据处理模式和8位数据处理模式。
(1)16位数据处理模式
特殊继电器M8161=OFF,ASCI指令为16位数据处理模式。当驱动条件成立,将以S为首址的寄存器的n个十六进制字符转换为ASCII码,并分别存放到以D为首址的寄存器的高8位和低8位。
1个16位(二进制位)的寄存器含有4个十六进制字符,如下图15-3所示,每1个十六进制字符转为ASCII码后需占有2个十六进制位(8个二进制位),如D0中低4位组成一个十六进制位H1,将字符“1”转换为ASCII后变成H31,即1→31。
图15-3
也就是说,执行指令ASCI D0 D100 K1,已知(D0)=H4321,指令执行完后(D100)=H0031,如下图15-4所示。
图15-4
在16位数据处理模式下,终址D对应的寄存器,其高8位也被利用,换句话说,一个D可以存放2个ASCII码。由每个S有4位HEX数据,全部转换为ASCII码就需要2个D。 如下图15-5所示,执行指令ASCI D0 D100 K4,已知(D0)=H4321,指令执行完后(D101)=H3132,(D100)=H3334,其中D100中的“34”为D0中“4”的ASCII码,依次类推。
图15-5
这里要注意的是,HEX数据在转换的过程中,*后被转换的会存放在终址D的*低位,例如上例中的十六进制字符“4”对应的ASCII码存放到D100的低8位,这如同一个压栈的过程。而在实际应用中,常采用的是8位数据处理模式。
(2)8位数据处理模式
特殊继电器M8161=ON,ASCI指令为8位数据处理模式。当驱动条件成立,将以S为首址的寄存器的n个十六进制字符转换为ASCII码,并分别存放到以D为首址的寄存器的低8位,高8位忽略不用。
此时一个S的4位HEX数据,全部转换为ASCII码就需要4个D寄存器,如下图15-6所示。执行指令ASCI D0 D100 K4,M8161=ON,已知(D0)=H4321,指令执行完后(D100)=H0034,其中D100中的“34”为D0中“4”的ASCII码,高8位作置零处理,依次类推。
图15-6
在低8位数据处理模式下,因为1位HEX数据转换为ASCII码就要占用1个寄存器,所以要转换n个字符,就要用到n个占D寄存器,其*高地址为D n-1。如下图15-7所示,执行指令ASCI D0 D100 K10,n=10,终址D的*高地址为D109(100 10-1),且存放的是*先转换的字符“A”,其ASCII码为H41。
图15-7
十六进制字符0~9,A~F对应的ASCII码分别为H30~H39,H41~H46,这个是可以通过查表得知,不过也比较好记。知道了ASCI指令是怎么回事后,再来看HEX指令就显得很简单。
02ASCII→HEX转换指令HEX
HEX指令的作用是将外围设备向PLC回传的ASCII码转换为HEX数据。其编程手册截图和梯形图形式如下图15-8所示。和ASCI指令一样,HEX指令也有3个操作数,源址S为ASCII码存储字元件首址;终址D为HEX数据存储字元件首地址;n依然是需转换的HEX字符的个数,取值范围为1~256。
图15-8
当驱动条件成立时,将源址S的ASCII码转换为n个十六进制字符并存放到首址为D的寄存器中,分为16位和8位数据处理模式。其对数据的处理过程恰好为ASCI指令的逆过程,如下图15-9所示,执行指令HEX D0 D100 K1,(D0)=H0041,ASCII码“H41”对应字符“A”,所以指令执行完毕后,(D100)=H000A。
图15-9
可以发现,1个S*多能存2个ASCII码,全部转换为HEX数据只占用D的低8位。换句话说,也就是1个D可以存放2个S的共4个ASCII码。基于ASCI指令讲解的比较详细,HEX指令的16位数据处理模式就不再展开讲解,它是将S的高8位和低8位均作为ASCII码进行转换。
HEX指令的8位数据处理模式,是指把S为首址的寄存器的低8位数据对于的ASCII码转换为HEX数据并存放到D位首址的寄存器中,此时每转换4个S占用1个D。如下图15-10所示,执行指令HEX D0 D10 K8,M8161=ON,8位数据处理模式,D0~D7的高8位数据均忽略不作处理,仅对其低8位数据进行转换。如D0的低8位为H38,该ASCII码对应的字符为“8”,所以终址D11的高4位就为H8,*先转换的存放在*高位。
图15-10
这里要注意的是,S中的数据一定要符合ASCII码的标准才能被转换,如果不是ASCII码,则运算错误。
唐山西门子授权PLC模块总代理2023更新 唐山西门子授权PLC模块总代理2023更新
- 东台发电机出租 2023已更新一日达
- 2023多商家入驻商城小程序详细解说系统开发
- ins免费账号(ins免费账号密码大全2023).
- ins免费 账号(ins免费账号密码大全2023)ins免费 账号
- GB 4806.7-2023《食品安全国家标准 食品接触材料及制品通用安全要求》解读
- 关于拟下达2023年余杭区工业企业自 愿性清洁生产审核及水平衡测试财政奖励资金的公示
- 【余杭区】关于拟下达2023年余杭区省科小贷款贴息区级补助的公示
- 2023年关于兽药仓库出租服务周到供应 瓣客
- 11月30日截止,关于开展2023年度余杭区生物医药产业发展项目申报征集工作的通知
- 【拱墅区】关于征集2023年拱墅区科技研发投入补助项目的通知
联系方式
- 地址:上海 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 邮编:201600
- 电话:15021292620
- 销售:颜娟
- 手机:15021292620
- 传真:021-33556143
- 微信:X15021292620
- QQ:2799536152
- Email:2799536152@qq.com