查看: 540|回复: 1
收起左侧

[教程经验] ST数据类型转换

祁成 2023-6-9 06:21:51 | 显示全部楼层 |阅读模式
邀请回答
我学过C#和C语言。但用ST语言类型转换,发现没法强制类型转换。
报左值类型和右值类型不匹配错误。


实在不会强制类型转换,所以使用C语言的共用体来解决:
//共用体:万能转换器      作者:LSP电工:祁成 2023-6-9
//(共用同一个物理地址)
//说明: 1把牛牵进去,机器出来火腿肠;2把火腿肠扔进去,机器能把牛吐出来。





  1. //共用体:万能转换器      作者:LSP电工:祁成 2023-6-9
  2. //(共用同一个物理地址)
  3. //说明: 1把牛牵进去,出来火腿肠;2把火腿肠扔进去,机器能把牛吐出来。
  4. TYPE conver :
  5. UNION
  6.        
  7. // 内存地址
  8.         uuBYTES :ARRAY[0..99] OF BYTE:=[123];// 1字节没意义,数组不能超索引,string81,wstring162字节
  9. // 负数       
  10. uuSint1:SINT;//         1字节   -128~127(存:1元手续费,去高位,按位取反)
  11. uuINT2 :INT :=-345;//   2字节   -32768~32767(取:1元利息,去高位,按位取反)
  12. uuDint4:DINT:=-456;//         4字节        -2147483648~2147483647
  13. uuLint8:LINT;//                    8字节        -2e63  ~  2e63-1
  14. // 小数
  15.         uuReal4:REAL;        // 4字节                -1.401e45   ~   3.403e38
  16.         uuLreal:LREAL; //  8字节
  17. // 正数
  18.         uuByte1 :BYTE :=123;// byte   0~255
  19.         uuUsint1:USINT:=234;// 1字节  0~255
  20.         uuUINT2:UINT  :=345;// 2字节                0~65535
  21.         uuUdint4:UDINT:=456;// 4字节                0~4294967295
  22.         uuUlint:ULINT;   //    8字节                0~2e64-1
  23. // 字正数(备用正数)
  24.         uuWORD2:WORD;//      2字节
  25.         uuDword4:DWORD; //   4字节
  26.         uuLword8:LWORD;//         8字节
  27. // 符号图(汉字编码)
  28.         uuSTR1:STRING(81):='QiCheng1989';//     81-84字节     元素步长1字节(不能中文)
  29.         uuWSTR2:WSTRING(162):="LSP电工:祁成1989";// 162-164字节   元素步长2字节(可以表示汉字)
  30. // 时间
  31.         uuTime4:TIME;//                毫秒
  32.         uuLtime8:LTIME;//   纳秒       8字节
  33.         uuDate4:DATE;//                天数
  34.         uuTimeofDay4:TIME_OF_DAY; //         4字节
  35.         uuDateandTime:DATE_AND_TIME;//  8字节
  36.        
  37. //====================================================================
  38. // 扩展添加。。。。。。
  39. // 需要的新类型,添加进来

  40. END_UNION
  41. END_TYPE

  42. //====================变量区
  43. look: conver ;
  44.         looklen:INT;
  45.         lookNUM2:ARRAY[0..99]OF UINT;
  46.         lookword2:ARRAY[0..99]OF WORD;
  47.         lookDword4:ARRAY[0..99]OF DWORD;
  48.         lookSTR:STRING ;
  49.         lookWstr:WSTRING;

  50. //================程序区
  51. looklen:=SIZEOF(look);//  81-82,82-84 ,162-164字节
  52.        
  53.         lookNUM2[0]:=look.uuByte1;// byte
  54.         lookNUM2[1] := look.uuBYTES[0]; // array-byte
  55.         lookNUM2[2] := look.uuBYTES[1];
  56.         lookNUM2[3] := look.uuUINT2;// uint16
  57.         lookNUM2[4] := look.uuINT2;//  int16
  58.        
  59.         lookword2[0]:= look.uuWORD2;//   word16
  60.         lookDword4[0]:=look.uuDword4;//  Dword32
  61.        
  62.         lookSTR := look.uuSTR1;//ASCii 排序 DCBA
  63.         lookWstr:=look.uuWSTR2;//Unicode
复制代码
成员索引请按需求调节字节。因为数组不能超出索引值。以免不能截取。

有哪位老哥知道ST强制转换,不丢精度的,请留言。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

工控小小生 2023-8-9 13:18:46 | 显示全部楼层
绝对专家级别了,厉害。
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部