TANGO Controls学习
|
预计 7 min read
环境安装
安装包
环境搭建
JDK 安装
- 安装 JDK 环境,正常操作,下一步
- 配置在 PATH 中配置 JDK 环境,选择 JDK 的 bin 包内
- 在 cmd 中使用
java -version
查看是否环境配置及安装成功
MySQL 安装
- 解压 mysql 压缩包
- 配置环境变量,类似 jdk,到 bin 目录下即可
- 在系统变量中添加两个
MYSQL_USER = tango
和MYSQL_PASSWORD = 123456
- 在解压的文件中创建
my.ini
文件,文件内容 mysql 路径切换自己的路径
1[mysqld]2#端口号3port = 33064#mysql-5.7.35-winx64的路径5basedir=D:\\Tango\\mysql\\mysql-5.7.30-winx646#mysql-5.7.27-winx64的路径+\data7datadir=D:\\Tango\\mysql\\mysql-5.7.30-winx64\\data8#最大连接数9max_connections=20010#编码11character-set-server=utf812default-storage-engine=INNODB13sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES14skip-grant-tables15[mysql]16#编码17default-character-set=utf8
-
输入安装命令:
mysqld -install
,若出现Service successfully installed
,证明安装成功;如出现Install of the Service Denied
,则说明没有以管理员权限来运行 CMD. -
然后继续输入命令:
mysqld --initialize --user=mysql
,此时不会有任何提示。 -
输入启动命令:
net start mysql
使用管理员 cmd 进入 mysql 文件的 bin 路径以管理员的方式进入到安装目录的 bin 目录执行mysqld --initialize --console
命令,记录下初始化密码输入mysqld -install
将 mysql 安装为 Windows 的服务,提示安装成功。继续执行命令:net start mysql
, 启动 mysql输入mysql -u root -p
来登陆数据库,并输入前面记录的临时密码输入alter user 'root'@'localhost' identified by '123456';
修改自己的密码最后commit
提交一下即可退出
-
在mysql
中创建创建具有 DB Admin 权限的专用用户使用命令进入 mysql,mysql -u root -p
,输入密码即可进入使用CREATE USER 'tango'@'localhost' IDENTIFIED BY '123456';
创建 tango 新用户使用GRANT ALL PRIVILEGES ON *.* TO 'tango'@'localhost' WITH GRANT OPTION;
为用户tango
在 MySQL 中授予所有权限,并允许该用户将这些权限授予其他用户GRANT ALL PRIVILEGES
:表示授予所有权限。ON *.*
:表示这些权限适用于所有数据库和所有表。TO 'tango'@'localhost'
:指定要授予权限的用户和主机。这里的tango
是用户名,localhost
表示从本地连接。WITH GRANT OPTION
:允许用户tango
将其获得的权限授予其他用户
执行命令FLUSH PRIVILEGES;
刷新权限
Tango 安装
- 下载 tango 安装包,双击执行
- 安装 tango 至指定路径,之后下一步即可
- 待安装成功后会显示
Edit MySQL user/password
,勾选上配置 mysql 账号和密码为tango
和123456
- 在系统变量中添加两个参数
TANGO_HOST = localhost:10000
,,如果没有TANGO_ROOT
, 需要自己增加至对应路径。path - 在
tango\share\tango\db
路径下打开 cmd,执行create_db. bat
, 运行不报错即为成功 - 可输入
mysqlcheck -u root --auto-repair --check --all-databases
查看 tango 数据库database - 切换路径至 bin 目录下,执行
start-db.bat
,出现ready to accept request
且没有退出即为成功success
NSSM 安装与配置
- 去官网下载
- 下载完解压文件,将文件解包到某个方便的位置。建议将合适的(32 位或 64 位)版本拷贝到 Tango bin 文件夹。
- 在 Tango 中的 bin 路径下执行命令
nssm.exe install Tango
- 在 argument 填入
2 -ORBendPoint giop:tcp::10000
- 在 Environment 选项卡中提供用于访问 MySQL 的凭据变量 (剩余查看官网,内容都是一致的)
PyTango 安装使用
建议使用 conda 安装的方法使用,这种方法可以在不干扰当前 python 环境下并且可以创建多个 python 环境更便于管理及使用
安装包
在 Conda 下安装
- Win 系统下搜索 anaconda 命令框如图
anaconda - 执行命令创建新环境并且安装 pytango 库
conda create --channel conda-forge --name pytango-env python=3.11 pytango
- 切换 python 环境至
pytango-env
,执行命令conda activate pytango-env
- 执行命令
python -c "import tango; print(tango.Release.version)"
查看 tango 是否安装成功check
参考文档
- TANGO Control在win10的环境搭建
- MYSQL安装教程(最简单粗暴详细安装方法)使用cmd安装
- TANGO DOC
- mysql 命令行安装方式
- mysql创建用户并授权dba权限
- pytango
- pytango-Github
- MySQL 5.7 下载安装一步到位
1from time import time2from numpy.random import random_sample3
4from tango import AttrQuality, AttrWriteType, DevState, DispLevel, tReqType5from tango.server import Device, attribute, command6from tango.server import class_property, device_property7
8
9class PowerSupply(Device):10 _my_current = 2.345611 _my_range = 0.012 _my_compliance = 0.013 _output_on = False14
15 host = device_property(dtype=str)16 port = class_property(dtype=int, default_value=9788)17
18 def init_device(self):19 super().init_device()20 self.info_stream(f"Power supply connection details: elf.host}:{self.port}")21 self.set_state(DevState.ON)22 self.set_status("Power supply is ON")23
24 current = attribute(25 label="Current",26 dtype=float,27 display_level=DispLevel.EXPERT,28 access=AttrWriteType.READ_WRITE,29 unit="A",30 format="8.4f",31 min_value=0.0,32 max_value=8.5,33 min_alarm=0.1,34 max_alarm=8.4,35 min_warning=0.5,36 max_warning=8.0,37 fget="get_current",38 fset="set_current",39 doc="the power supply current",40 )41
42 noise = attribute(43 label="Noise",44 dtype=((float,),),45 max_dim_x=1024,46 max_dim_y=1024,47 fget="get_noise",48 )49
50 @attribute51 def voltage(self):52 return 10.053
54 def get_current(self):55 return self._my_current56 def set_current(self, current):57 print("Current set to %f" % current)58 self._my_current = current59
60 def get_noise(self):61 return random_sample((1024, 1024))62
63 range = attribute(label="Range", dtype=float)64
65 @range.setter66 def range(self, new_range):67 self._my_range = new_range68
69 @range.getter70 def current_range(self):71 return self._my_range, time(), AttrQuality.ATTR_WARNING72
73 @range.is_allowed74 def can_range_be_changed(self, req_type):75 if req_type == AttReqType.WRITE_REQ:76 return not self._output_on77 return True78
79 compliance = attribute(label="Compliance", dtype=float)80
81 @compliance.read82 def compliance(self):83 return self._my_compliance84
85 @compliance.write86 def new_compliance(self, new_compliance):87 self._my_compliance = new_compliance88
89 @command(dtype_in=bool, dtype_out=bool)90 def output_on_off(self, on_off):91 self._output_on = on_off92 return self._output_on93
94
95if __name__ == "__main__":96 PowerSupply.run_server()
评论