本来都快要放弃了的,谢谢你哥们,回头我试试看。
不过你能再详细讲讲么?比如将TD中的2013年03月04日和22点59分59秒写入时钟当中。首先这里需要把他俩弄成两个字符串么?其中2013年03月04日的起始地址是VB100,那么VB103=13,VB106=03……然后再怎么办?
Read_RTC(读时钟)和Set_RTC(设置时钟)指令靠数据缓冲区在用户程序与硬件芯片间交换数据,它们的缓冲区格式相同。
表1. 时钟缓冲区
地址偏移 | T | T+1 | T+2 | T+3 | T+4 | T+5 | T+6 | T+7 |
---|---|---|---|---|---|---|---|---|
数据内容 | 年 | 月 | 日 | 小时 | 分钟 | 秒 | 0 | 星期 |
数值范围 BCD (16进制) | 00-99 | 01-12 | 01-31 | 00-23 | 00-59 | 00-59 | 0 | 0-7* |
* 1 = 星期日,7 = 星期六,0 = 表示禁止计星期
T 就是缓冲区的起始字节地址,可以由用户自由设置(在CPU允许的V存储区范围内)。如果设置T为VB100,那么读取时钟后,“年”的信息就会保存在VB100中,“月”保存在VB101中。
如果不转字符串,那么13,03,04这三个分别都是整数值(W),除非我在组态TD的时候设定他们是字节,好吧,假定是字节,这里省事一点,把这些字节型整数转成16进制数这一步怎么办?我如果是在编程状态当然都好说,输入个16#13就好了,关键这里的13是用户通过TD输进VB100里面去的,也就是VB100里面的值,我如何将VB100里面的13转成16#13呢?
直接在IN端写上16#VB100?这样可以不?
不管咋说,反复先谢谢miy_gongkong大神再说。。。
哎,不要羡慕 “锅”, “锅”只是个更大的 “杯具”.............!
这位童鞋 ,基础不够扎实,回头好好看看《计算机组成原理》
关键这里的13是用户通过TD输进VB100里面去的,也就是VB100里面的值,我如何将VB100里面的13转成16#13呢?
你输入一个字,整数 ,你可以有N多方法 转换成字节,
1. 例如VW100 输入了 13 ,这个值,如果你熟悉S7-200 的数据存储结构的话,VB101 里面就存储了13这个值,
用 I_BCD VW100,VW120,(输入的数转换成BCD码)。 然后MOV_B VB121, VB200, (假设你Buffer 首地址是VB200), 这样就把刚刚输入整数变量的值转换 到 Buffer 中了,其余的字节以此类推;
弱弱说一下,话说我不是学计算机出身。。。我只是个电工
对计算机基础类的知识,还不如我对魔兽的了解丰富。。。